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