読者です 読者をやめる 読者になる 読者になる

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

マナーモード状態の取得

Android

マナーモードON/OFF時にBroadCastされるのでReceiveすればマナーモード状態を取得できます。

IntentFilter設定

Javaコード上で以下のように設定。

IntentFilter filter = new IntentFilter();
filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
registerReceiver(new EventReceiver(), filter);

試していませんが、AndroidManifestに以下のように設定してもOKだと思います。

<intent-filter>
    <action android:name="android.media.RINGER_MODE_CHANGED" />
</intent-filter>

Receiver設定

public class EventReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) {
            if (intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -1) == AudioManager.RINGER_MODE_VIBRATE) {
                // マナーモード
            } else {
                // マナーモードではない
            }
        }
    }
}

マナーモードの場合「AudioManager.EXTRA_RINGER_MODE」が1になっています。

余談:マナーモードのモード設定

マナーモードをPG上で設定する方法

// サイレントモード設定
AudioManager manager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
manager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
// マナーモード設定
AudioManager manager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
manager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
// マナーモード解除
AudioManager manager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
manager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

かんしゃ

android.media.RINGER_MODE_CHANGED の存在を教えてくれた ありやま さん、ありがとうございました。