2012年2月5日日曜日

稼働中の端末のPlatform(API level・バージョン) を取得する

稼働中の端末のPlatform(API level・バージョン) を取得する

稼働しているPlatform(API level・バージョン)によって、動かなくなる機能があります。このため、自分のアプリが稼働している端末のPlatformを知る必要があります。

稼働しているPlatformによって動かなくなる例として、『「本体設定」の「音の設定」画面の表示』を挙げることができます。

概要は、「本体設定」の「音の設定」画面を表示するに書いておきました。その記事では、「Platform 2.2の場合」と「Platform 1.6の場合」を、startActivityForResultが発生するエラーによって切り分けていました。これは「エラーになるんだな」という学習にはなりますが、適切なcodeではありません。
稼働中のPlatformを取得し、そのPlatform毎に対応するのが適切です。

この問題の解決には次のサイトを見ながらcodingしていけば良いです。
Build.VERSION_CODES

sample codeは下記のとおりです。
public class SettingsActivity extends Activity
    implements
    OnClickListener
    {
    final String TAG = "me";
    Button bu;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bu = (Button)findViewById(R.id.Button);
        bu.setOnClickListener(this);
    }

    @Override
    public void onClick(View v){
        if(v==bu){
            Intent it;
            
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR){
                //Platform 2.0以上の場合
                Log.d(TAG, "Platform 2.0 and later");
                it = new Intent(Settings.ACTION_SOUND_SETTINGS);
            }
            else{
                Log.d(TAG, "Platform 2.0 before");
                it = new Intent(Settings.ACTION_DISPLAY_SETTINGS);
            }
            try{
                startActivityForResult(it, 0);
            }
            catch(ActivityNotFoundException e){
                Log.e(TAG, "ActivityNotFoundException");
            }
        }
    }
}

上記例では、Platformが2.0以上か未満かを判別しています。エミュレータをPlatform毎に用意して試してみれば良いでしょう。

なお、Platformの判別を適切に行い、かつPlatformが1.6でも稼働するアプリを作るには、次の措置を講じる必要があります。
  1. Android SDKを最新版にする。
  2. Eclipseのメニューコマンド>Project>Properties>Android>Project Build Target>platformを最新(最高)のものを選択する。
  3. AndroidManifest.xmlに次の1行を追加する。
<uses-sdk android:minSdkVersion="4"/>

上記2に書いたように、Project Build Target>platformを最新版にすることにより、codeの中でBuild.VERSION_CODES.ICE_CREAM_SANDWICHという定数を書くことができます(コンパイルエラーにならないようになります)。
上記3の措置を講じることにより、Platformが1.6でも無事稼働するようになります。

0 件のコメント:

コメントを投稿