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 件のコメント:
コメントを投稿