Ответ 1
К сожалению, для большинства Android-устройств метод доступныхпроцессоров() работает некорректно. Even/proc/stat не всегда показывает правильное количество процессоров.
Единственный надежный метод, который я нашел для определения количества процессоров, - это перечислить список виртуальных процессоров в /sys/devices/system/cpu/, как описано в этом сообщении на форуме. Код:
/**
* Gets the number of cores available in this device, across all processors.
* Requires: Ability to peruse the filesystem at "/sys/devices/system/cpu"
* @return The number of cores, or 1 if failed to get result
*/
private int getNumCores() {
//Private Class to display only CPU devices in the directory listing
class CpuFilter implements FileFilter {
@Override
public boolean accept(File pathname) {
//Check if filename is "cpu", followed by one or more digits
if(Pattern.matches("cpu[0-9]+", pathname.getName())) {
return true;
}
return false;
}
}
try {
//Get directory containing CPU info
File dir = new File("/sys/devices/system/cpu/");
//Filter to only list the devices we care about
File[] files = dir.listFiles(new CpuFilter());
//Return the number of cores (virtual CPU devices)
return files.length;
} catch(Exception e) {
//Default to return 1 core
return 1;
}
}
Этот Java-код должен работать в любом приложении Android, даже без root.