マナーモード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 の存在を教えてくれた ありやま さん、ありがとうございました。