2012-03-21 3 views
2

私はイコライザーが必要なアンドロイドメディアプレーヤーで作業しています。しかし、イコライザーはGingerbread以上でしか利用できませんが、cyanogenmod 6はオーディオプレーヤーをイコライザーとして動作させるように変更されていますので、OSバージョンを検出したいと思います。Androidにはcyanogenmodとそのバージョンを検出する方法はありますか?

+0

は、この質問はすでにここに答えている:http://stackoverflow.com/questions/5499217/how-to-recognize-that-c​​yanogenmod-is-on-a-board – Matthias

+0

多分cyanogenmodを持っていますフレームワークの独自のクラス、どのように使用を反映する?私は正常なユーザーのためのアプリケーションを作っている、unameを使用することはまったく良い考えではない – mariotaku

+0

私は正しいアプローチで私の答えを更新しました。 'os.version'プロパティを読むことができます。 – Matthias

答えて

4

あなたはそれに対してos.versionプロパティと一致するものを読むことができます:私のデバイス上で

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

を、os.version2.6.37.6-cyanogenmod-01509-g8913be8です。

+0

私はここで、より徹底的な答えを掲載しました:http://stackoverflow.com/a/9801191/127013 – Matthias

+0

私はcyanogenmodに私のアプリのインストールを防ぐことができますか? –

4

現在、シアノゲンモードのカーネルには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; 
} 
+0

os.versionとカーネルのバージョンは良い指標ではありません。カーネルは簡単にスワップアウトされ、これらのプロパティの両方に影響を及ぼすユーザによって頻繁に発生します。最善の解決策は私の経験からBuild.HOSTを使うことです。 –

2

これは古い質問ですが、私は最近、私が信じているより良い解決策を考え出しています。ところで

public static boolean isCyanogenMod() { 
    try { 
     return Class.forName("cyanogenmod.os.Build") != null; 
    } catch (Exception ignored) { 
    } 
    return false; 
} 
関連する問題