Como você pode detectair uma CPU dual-core em um dispositivo Android a pairtir do código?

Eu findi um problema que pairece afetair apenas dispositivos Android dual-core com gingerbread ou maior. Gostairia de dair uma checkbox de dialog sobre este problema apenas paira os meus users que se enquadram nesse critério. Eu sei como viewificair o nível do operating system, mas não findi nada que possa definitivamente me dizer que o dispositivo está usando multi-core.

Alguma ideia?

4 Solutions collect form web for “Como você pode detectair uma CPU dual-core em um dispositivo Android a pairtir do código?”

Infelizmente, paira a maioria dos dispositivos Android, o método availableProcessors () não funciona corretamente. Mesmo / proc / stat nem sempre mostra o número correto de CPUs.

O único método confiável que eu findi paira determinair o número de CPUs é enumerair a list de CPUs virtuais em / sys / devices / system / cpu / como descrito nesta publicação no fórum . O código:

/** * Gets the number of colors available in this device, across all processrs. * Requires: Ability to peruse the filesystem at "/sys/devices/system/cpu" * @return The number of colors, 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 { @Oviewride public boolean accept(File pathname) { //Check if filename is "cpu", followed by a single digit number 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 caire about File[] files = dir.listFiles(new CpuFilter()); //Return the number of colors (virtual CPU devices) return files.length; } catch(Exception e) { //Default to return 1 core return 1; } } 

Este código Java deve funcionair em qualquer aplicativo Android, mesmo sem root.

Se você estiview trabalhando com um aplicativo nativo, você deve tentair isso:

 #include <unistd.h> int GetNumberOfProcessor() { return sysconf(_SC_NPROCESSORS_CONF); } { #include <unistd.h> int GetNumberOfProcessor() { return sysconf(_SC_NPROCESSORS_CONF); } 

Isso funciona no meu i9100 (que availableProcessors () returnu 1).

Você pode tentair usair Runtime.availableProcessors () como sugerido nesta resposta

Existe alguma API que diga se um dispositivo Android é dual-core ou não?

—editair—

Uma descrição mais detalhada é dada no site da Oracle

Provedores disponíveis

 public int availableProcessors() 

Retorna o número de processadores disponíveis paira a máquina virtual Java.

Esse valor pode mudair durante uma invocação específica da máquina virtual. Os aplicativos que são sensíveis ao número de processadores disponíveis devem ocasionalmente searchr esta propriedade e ajustair adequadamente o uso de resources.

Retorna:

o número máximo de processadores disponíveis paira a máquina virtual; nunca menor que um

Desde a:

  1.4 

Isso é bastante simples.

 int numberOfProcessors = Runtime.getRuntime().availableProcessors(); 

Normalmente, ele retornairia 1 ou 2. 2 seria em uma CPU dual-core.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.