Android有没有办法检测cyanogenmod及其版本?

时间:2012-03-21 08:01:36

标签: java android

我正在开发一款需要均衡器的Android媒体播放器。但是,均衡器仅适用于Gingerbread及以上版本,但cyanogenmod 6已修改audioflinger作为均衡器,因此我想检测操作系统版本。

3 个答案:

答案 0 :(得分:4)

您可以阅读os.version属性并与之匹配:

String version = System.getProperty("os.version");
if (version.contains("cyanogenmod")) {
    isCyanogenMode = true;
}

在我的设备上,os.version2.6.37.6-cyanogenmod-01509-g8913be8

答案 1 :(得分:4)

截至今天,cyanogenmod的内核在cyanogenmod中不包含System.getProperty("os.version");个关键字,类似于3.0.64-CM-g9d16c8a。所以我写了这个函数。

private boolean isCyanogenMod(PackageManager pm) {
    boolean isCyanogenMod = false;
    String version = System.getProperty("os.version");
    BufferedReader reader = null;

    try {
        if (version.contains("cyanogenmod") || pm.hasSystemFeature("com.cyanogenmod.android")) {
            isCyanogenMod = true;
        }
        else {                
            // This does not require root
            reader = new BufferedReader(new FileReader("/proc/version"), 256);
            version = reader.readLine();

            if (version.contains("cyanogenmod")) {
                isCyanogenMod = true;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    finally {
        if(reader != null) {
            try { reader.close(); } catch (IOException e) { }
        }
    }

    return isCyanogenMod;
}

答案 2 :(得分:2)

这是一个老问题,但我最近想出了一个更好的解决方案。

GET