Xamarin.AndroidでCPUのコア数を取得する

提供: MonoBook
ナビゲーションに移動 検索に移動

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;
    }
}