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()しておく。