自从我将我的手机Samsung S6更新到Android 6.0.1后,mediaPlayer 开始表现得很奇怪。
我使用通过httpMediaPlayer
流式传输.mp3音频,它之前已经正常工作,没有任何问题。
由于此更新,几乎所有超过 1:30 的音频流都会过早停止。
例子:
05-02 20:58:11.031 3119-26787/? V/MediaPlayerService: [1952] getDuration = 377496
05-02 20:58:11.031 15611-15611/com.test.test V/MediaPlayer-JNI: getDuration: 377496 (msec)
05-02 20:58:11.031 15611-15611/com.test.test V/MediaPlayer-JNI: getCurrentPosition: 119842 (msec)
05-02 20:58:11.041 15611-15611/com.test.test V/MediaPlayer-JNI: isPlaying: 1
05-02 20:58:11.041 15611-15611/com.test.test V/MediaPlayer-JNI: isPlaying: 1
05-02 20:58:11.061 3625-4927/? V/BroadcastQueue: [background] Process cur broadcast BroadcastRecord{d8b120b u0 null qIdx=4}, state= (APP_RECEIVE) DELIVERED for app ProcessRecord{436e057 16133:com.google.android.gms.persistent/u0a11}
05-02 20:58:11.151 3625-4936/? I/ActivityManager: Killing 16021:com.samsung.android.themecenter/1000 (adj 15): DHA:empty #31
05-02 20:58:11.171 3625-4951/? D/ActivityManager: isAutoRunBlockedApp:: com.samsung.android.themecenter, Auto Run ON
05-02 20:58:11.241 3119-16904/? I/NuPlayerDecoder: [audio] saw output EOS
05-02 20:58:11.241 3119-16903/? I/NuPlayerRenderer: onQueueEOS audio finalResult : -1011
05-02 20:58:11.371 3119-16903/? I/NuPlayerRenderer: [audio] notifyEOS() End of Stream, delayUs : 590370
05-02 20:58:11.371 3119-16903/? V/AudioSink: stop
05-02 20:58:11.681 3119-16896/? D/GenericSource: cachedDurationUs = 0.00 secs, eos=1
05-02 20:58:11.961 3119-16893/? I/NuPlayerRenderer: reachedAudioEOS (1)
05-02 20:58:11.961 3119-16893/? V/NuPlayer: reached audio EOS
如日志所示,调用getDuration()
(377496 毫秒)。直接调用后getCurrentPosition()
(119842 毫秒)。
在这NuPlayer
似乎检测到 EOS 并OnCompletionListener
执行并停止音频之后。
就在我更新到 Android 6 之前,这没有任何问题。
有谁知道发生了什么以及如何防止这种情况?
提前致谢。