重启后的android报警管理器声音

时间:2015-07-16 12:31:25

标签: android android-mediaplayer alarmmanager

我正在使用android的AlarmManager处理类似服务的应用程序。该应用程序基本上连接到服务器并调用远程过程。如果返回的值为True,则会播放声音:

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING); 
try {
    mediaPlayer.setDataSource(getApplicationContext(), 
     Uri.parse("file:///system/media/audio/ringtones/Rolling_tone.ogg"));
}
...
mediaPlayer.start();

当手动启动应用程序时,这很有效。然而,当手机重新启动时(我已经实现了BroadcastReceiver),声音会播放一秒钟然后立即中断。

这听起来几乎就像游戏周期被某些东西切断了。我需要停止并重新启动应用程序才能让它再次正常工作。

有关原因的任何线索?

1 个答案:

答案 0 :(得分:0)

您可以使用MediaPlayer setScreenOnWhilePlaying()来确保您的应用程序在后台播放音频时不会进入睡眠状态。

http://developer.android.com/reference/android/media/MediaPlayer.html#setWakeMode%28android.content.Context,%20int%29

另一种可能的解决方案是使用PowerManager使用WakeLock保持设备清醒:

请参阅http://developer.android.com/reference/android/os/PowerManager.html

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
   ... wait until sound has finished playing (with listener)
wl.release();