Xamarin.AndroidでCPUのコア数を取得する
API Level 17 (Android 4.2) 以降
API Level 17 (Android 4.2) 以降はCPUのコア数を取得するAPIが用意されている。
API Level 16 (Android 4.1) まで
API Level 16 (Android 4.1) まではCPUのコア数を取得するAPIがないので、 sysfsのCPU関連のディレクトリ数を数える。
/sys/devices/system/cpu/cpu[0-9]+/
実装例
int GetNumberOfCores()
{
// API Level 17 (Android 4.2) 以降
if (BuildVersionCodes.JellyBeanMr1 <= Build.VERSION.SdkInt)
{
return Runtime.GetRuntime().AvailableProcessors();
}
// API Level 16 (Android 4.1) まで
else
{
var regex = new Regex("cpu[0-9]+");
var cores = Directory.GetDirectories("/sys/devices/system/cpu/")
.Select( path => Path.GetFileName(path))
.Where( file => regex.IsMatch(file) )
.Count();
return cores;
}
}