「Xamarin.AndroidでCPUのコア数を取得する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「== API Level 17 (Android 4.2) 以降 == API Level 17 (Android 4.2) 以降はCPUのコア数を取得するAPIが用意されている。 == API Level 16 (Android…」)
 
 
31行目: 31行目:
 
</source>
 
</source>
  
[[category: Xamarin.Mac]]
+
[[category: Xamarin.Android]]

2021年4月20日 (火) 06:52時点における最新版

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