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;
}
}
モードを切り替えるとステータスバー上に各モードに対応したアイコンが表示されます。
#ノーマルでは何も表示されません。
|
|
|
|

