我正在使用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),声音会播放一秒钟然后立即中断。
这听起来几乎就像游戏周期被某些东西切断了。我需要停止并重新启动应用程序才能让它再次正常工作。
有关原因的任何线索?
答案 0 :(得分:0)
您可以使用MediaPlayer
setScreenOnWhilePlaying()
来确保您的应用程序在后台播放音频时不会进入睡眠状态。
另一种可能的解决方案是使用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();