2011年11月2日水曜日

「本体設定」の「音の設定」画面を表示する

「本体設定」の「音の設定」画面を表示する

下記のとおりです。Platformによって、コマンドが異なるようです。

なお、startActivityForResultメソッドを使った場合、設定画面が閉じられた時に、onActivityResultメソッドで「閉じられた」という通知を受けとることができます。ただし、第三番目の引数Intentの値はnullです。

AudioManagerのgetRingerModeメソッドにより、「マナーモード」の状態を取得できます。RINGER_MODE_SILENT及びRINGER_MODE_VIBRATEがマナーモードであることを示します。

下記のプログラムは動作原理を理解するための、学習・実験用ですので、実用性はありません。

稼働中の端末のPlatform(API level・バージョン) を取得するに関連記事を書いておきました。


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
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode==0){
            int iRet;
            String s;
            AudioManager am;
            am = (AudioManager)getSystemService(AUDIO_SERVICE);
            iRet = am.getRingerMode();
            switch(iRet){
            case AudioManager.RINGER_MODE_SILENT:
                s = "RINGER_MODE_SILENT";
                break;
            case AudioManager.RINGER_MODE_NORMAL:
                s = "RINGER_MODE_NORMAL";
                break;
            case AudioManager.RINGER_MODE_VIBRATE:
                s = "RINGER_MODE_VIBRATE";
                break;
            default: s = ""; break;
            }
            TextView tv;
            tv = (TextView)findViewById(R.id.Text);
            tv.setText(s);
        }
        super.onActivityResult(requestCode, resultCode, data);
    }


    @Override
    public void onClick(View v){
        if(v==bu){
            Intent it;
            
            //Platform 2.2の場合
            it = new Intent(Settings.ACTION_SOUND_SETTINGS);
            try{
                startActivityForResult(it, 0);
            }
            catch(ActivityNotFoundException e){
                Log.e(TAG, "ActivityNotFoundException 1");
                // Platform 1.6の場合
                it = new Intent(Settings.ACTION_DISPLAY_SETTINGS);
                try{
                    startActivityForResult(it, 0);
                }
                catch(ActivityNotFoundException e2){
                    Log.e(TAG, "ActivityNotFoundException 2");
                }
            }
        }
    }
}

0 件のコメント:

コメントを投稿