Xamarin.AndroidでCPUのコア数を取得する
API Level 17 (Android 4.2) 以降編集
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;
}
}