マナーモードを設定する


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 バイブレーションモード(バイブレーションのみ有効)にします

たとえば、サイレントモードに設定するには以下のようなコードになります。

1
2
3
4
// AudioManager取得
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// サイレントモードに設定
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);

また、現在のマナーモードを取得するには以下のようにします。

1
int ringerMode = am.getRingerMode();

サンプル

サンプルでは3種類のマナーモードをボタンから選択できるようにしました。
ボタンが押されたらsetRingerModeメソッドで押されたボタンに対応したマナーモードを設定しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 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に表示する文字列を変えています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 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;
    }
}

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

ノーマルモードに設定

サイレントモードに設定

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