マナーモードを設定する


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;
	}
}

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

ノーマルモードに設定

サイレントモードに設定

バイブレートモードに設定