我使用MediaPlayer播放MP3。目前,我使用
禁用了屏幕方向更改android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
清单中的。我现在想要支持横向模式 - 即删除那些标签 - 但是存在的问题是在销毁/创建周期期间玩家停止然后重新启动。这是可以的,我甚至可以在onPause()
中手动执行此操作,以便在活动进入后台时停止播放器。
为了让它在方向更改期间保持运行,我尝试将其设置为静态(并使用应用程序上下文创建一次)。当然,当我现在删除player.stop()
中的onPause()
时,它会按照我想要的方式执行操作 - 好吧,直到活动在后台运行。
所以,有两个问题:
onStop()
MediaPlayer
运行,但在应用程序进入后台时停止运行?答案 0 :(得分:3)
您是否考虑过使用onConfigurationChanged()回调来处理某些逻辑?
答案 1 :(得分:1)
关于如何可靠地确定您的活动是否因配置更改而被销毁的问题,请参阅我的回答:How to save/restore(update) ref to the dialog during screen rotation?(I need ref in onCreate method of activity.)
有了这个,第二个问题的答案应该很简单。
答案 2 :(得分:1)
尝试在不同的线程中运行MediaPlayer
。
您可以在此线程中添加一个更复杂的API,您可以从onCreate
/ onStop
/ on*
答案 3 :(得分:1)
如果您正在使用片段(并且您应该:P),那么在片段onCreate()调用中调用setRetainInstance(true)
将使这个问题彻底消失。
答案 4 :(得分:0)
请参阅以下答案:https://stackoverflow.com/a/31466602/994021
这是我为此目的而创建的POC。厌倦了为不同的项目一遍又一遍地解决这个问题。我希望它有所帮助。
我真的建议从谷歌人切换到像ExoPlayer这样的第三方播放器:https://github.com/google/ExoPlayer