Android端末のマナーモードをアプリケーションから設定するにはAudioManagerクラスを使用します。AudioManagerクラスではAndroid端末上の音量ボリュームやマナーモード設定をコントロールするための機能を提供しています。(AudioManagerクラスで音量ボリュームをコントロールする方法については「音量を設定する」という記事で紹介しています)
今回はAudioManagerクラスで用意されているsetRingerModeメソッドとgetRingerModeメソッドの2つを使ってマナーモード設定を行う方法を紹介します。なお、今回のサンプルコードはGoogleCodeの下記のリポジトリよりSVNにて取得できます。
http://techbooster.googlecode.com/svn/trunk/ringerMode/
setRingerModeメソッドとgetRingerModeメソッド
マナーモードを設定するためには以下のメソッドを使用します。
void setRingerMode (int ringerMode)
機能 : マナーモードを設定する
引数 : ringerMode 設定するマナーモードの種類
戻り値 : なし
int getRingerMode ()
機能 : 現在のマナーモードを取得する
引数 : なし
戻り値 : 現在のマナーモード
メソッドの詳細な使い方とサンプルコードは続きからご覧下さい。
また、setRingerModeで設定できるマナーモードには以下の3種類があります。
RINGER_MODE_NORMAL | ノーマルモード(着信音、バイブレーションを有効)にします |
RINGER_MODE_SILENT | サイレントモード(着信音、バイブレーションを無効)にします |
RINGER_MODE_VIBRATE | バイブレーションモード(バイブレーションのみ有効)にします |
たとえば、サイレントモードに設定するには以下のようなコードになります。
// AudioManager取得 AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // サイレントモードに設定 am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
また、現在のマナーモードを取得するには以下のようにします。
int ringerMode = am.getRingerMode();
サンプル
サンプルでは3種類のマナーモードをボタンから選択できるようにしました。
ボタンが押されたらsetRingerModeメソッドで押されたボタンに対応したマナーモードを設定しています。
// AudioManager取得 am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // マナーモード表示用TextView tv_ringerMode = (TextView) findViewById(R.id.ringerMode); // 現在のマナーモードを表示 showRingerMode(); // ノーマルモード設定用ボタン btn_normalMode = (Button) findViewById(R.id.normalMode); btn_normalMode.setOnClickListener(new OnClickListener() { public void onClick(View v) { // setRingerModeメソッドでノーマルモードに設定 am.setRingerMode(AudioManager.RINGER_MODE_NORMAL); // 現在のマナーモードを表示 showRingerMode(); } }); // サイレントモード設定用ボタン btn_silentMode = (Button) findViewById(R.id.silentMode); btn_silentMode.setOnClickListener(new OnClickListener() { public void onClick(View v) { // setRingerModeメソッドでサイレントモードに設定 am.setRingerMode(AudioManager.RINGER_MODE_SILENT); // 現在のマナーモードを表示 showRingerMode(); } }); // バイブレートモード設定用ボタン btn_vibrateMode = (Button) findViewById(R.id.vibrateMode); btn_vibrateMode.setOnClickListener(new OnClickListener() { public void onClick(View v) { // setRingerModeメソッドでバイブレートモードに設定 am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); // 現在のマナーモードを表示 showRingerMode(); } });
現在設定されているマナーモードを表示するためにshowRingerModeメソッドを定義しています。
getRingerModeの戻り値を判別してTextViewに表示する文字列を変えています。
// RingerMode表示メソッド void showRingerMode() { // getRingerModeメソッドで現在のマナーモードを取得 switch (am.getRingerMode()) { // ノーマルモードの場合 case AudioManager.RINGER_MODE_NORMAL: tv_ringerMode.setText("ノーマルモードに設定中."); break; // サイレントモードの場合 case AudioManager.RINGER_MODE_SILENT: tv_ringerMode.setText("サイレントモードに設定中."); break; // バイブレートモードの場合 case AudioManager.RINGER_MODE_VIBRATE: tv_ringerMode.setText("バイブレートモードに設定中."); break; } }
モードを切り替えるとステータスバー上に各モードに対応したアイコンが表示されます。
#ノーマルでは何も表示されません。