0
我已經編寫了一個使用MediaPlayer播放MP3文件的音樂播放器應用程序。它大部分時間都能正常工作,但是當我關掉手機上的屏幕時,prepare()方法會凍結,直到我打開屏幕。只要屏幕打開,就離開它。關閉屏幕時Android MediaPlayer凍結
這非常令人沮喪,因爲它並不總是發生,但在關閉屏幕後播放約3個樂曲後發生。我沒有任何例外。
mMediaPlayer.reset();
LogDebugf( "MP3_PLAY::mMediaPlayer.setDataSource..\n");
mMediaPlayer.setDataSource(mMP3Path);
LogDebugf( "MP3_PLAY::mMediaPlayer.prepare..\n");
mMediaPlayer.prepare();
// Can freeze for long times or until screen turned on in above call
LogDebugf( "MP3_PLAY::mMediaPlayer.start..\n");
mMediaPlayer.start();
我的實際的logcat如下所示:
03-09 08:04:07.333 I/System.out(8186): MP3_PLAY::mMediaPlayer.prepare..
03-09 08:04:07.333 V/MediaPlayer(8186): setVideoSurfaceTexture
// Notice the huge delay here until I switch the screen on
03-09 08:04:31.049 V/MediaPlayer(8186): prepare
03-09 08:04:31.059 V/MediaPlayer(8186): message received msg=200, ext1=973, ext2=0
03-09 08:04:31.059 W/MediaPlayer(8186): info/warning (973, 0)
03-09 08:04:31.059 V/MediaPlayer(8186): callback application
03-09 08:04:31.059 V/MediaPlayer(8186): back from callback
03-09 08:04:31.059 V/MediaPlayer(8186): message received msg=5, ext1=0, ext2=0
03-09 08:04:31.059 V/MediaPlayer(8186): New video size 0 x 0
03-09 08:04:31.059 V/MediaPlayer(8186): callback application
03-09 08:04:31.059 V/MediaPlayer(8186): back from callback
03-09 08:04:31.059 V/MediaPlayer(8186): message received msg=1, ext1=0, ext2=0
03-09 08:04:31.059 V/MediaPlayer(8186): prepared
03-09 08:04:31.059 V/MediaPlayer(8186): signal application thread
03-09 08:04:31.059 V/MediaPlayer(8186): callback application
03-09 08:04:31.059 V/MediaPlayer(8186): prepare complete - status=0
03-09 08:04:31.059 V/MediaPlayer(8186): back from callback
03-09 08:04:31.059 I/System.out(8186): MP3_PLAY::mMediaPlayer.start..
之前凍結是「setVideoSurfaceTexture」,然後「準備」出現不被處理,直到我打開屏幕〜30中的最後一行幾秒鐘後。
更新:我甚至嘗試prepareAsync(),它有同樣的問題。這是在三星Galaxy S4上。如果我無法可靠地運行,我可能會嘗試給ExoPlayer。