2011年4月8日

Androidでマナーモードを取得する。

Androidで音を鳴らす。[SoundPool編]」をしてから気づいたが、この(↓)コードだとマナーモードでも普通に音が鳴ってしまった( ̄▽ ̄;

SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); 
int soundID = soundPool.load(context, R.raw.lalala, 1); 
soundPool.play(soundID, 1.0F, 1.0F, 1, 0, 1.0F); 

・・・ということで、「マナーモードやサイレントモードでないときだけ、音を鳴らす」という処理を自力で書かないといけないらしい。

現在の着信音モードは、AudioManagerから取得できる。具体的には下記。

// AudioManagerオブジェクトを取得
AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
// 着信音モードを取得
int ringerMode = audioManager.getRingerMode(); 

switch (ringerMode) {
case AudioManager.RINGER_MODE_NORMAL: // 通常(音あり)
 SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); 
 int soundID = soundPool.load(context, R.raw.lalala, 1); 
 soundPool.play(soundID, 1.0F, 1.0F, 1, 0, 1.0F); 
 break;
case AudioManager.RINGER_MODE_SILENT: // サイレントモード(音なし)
case AudioManager.RINGER_MODE_VIBRATE: // バイブレートモード(マナーモード?)
default:
 break;
}
※理解しやすいようにその場で音声データをload()しているが、通常はもっと前段階でload()しておく。

0 件のコメント:

コメントを投稿