Android:在活动屏幕方向更新期间保持MediaPlayer运行
我用媒体播放器播放MP3。当前,我使用禁用了屏幕方向更改Android:在活动屏幕方向更新期间保持MediaPlayer运行,android,android-activity,screen-orientation,android-mediaplayer,Android,Android Activity,Screen Orientation,Android Mediaplayer,我用媒体播放器播放MP3。当前,我使用禁用了屏幕方向更改 android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation" 在舱单上。我现在确实想支持横向模式-即删除那些标签-但在销毁/创建周期中,播放器会停止,然后重新启动。这没关系,我甚至在onPause()中手动执行此操作,以便在活动进入后台时停止播放机 为了让它在方向更改期间保持运行,我尝试将其设置为静态(并使用应用程序上下文创
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
在舱单上。我现在确实想支持横向模式-即删除那些标签-但在销毁/创建周期中,播放器会停止,然后重新启动。这没关系,我甚至在onPause()
中手动执行此操作,以便在活动进入后台时停止播放机
为了让它在方向更改期间保持运行,我尝试将其设置为静态(并使用应用程序上下文创建一次)。当然,当我现在移除onPause()
中的player.stop()
时,它会做我想做的事情,直到活动进入后台
因此,有两个问题:
- 如何确定调用
onStop()
- 或者:如何在该周期内保持
运行,但在应用程序进入后台时停止它MediaPlayer
这样,第二个问题的答案应该很简单。尝试在不同的线程中运行
MediaPlayer
您可以向该线程添加一个更复杂的API,如果您使用的是片段(并且您应该:p),则可以从
onCreate
/onStop
/on*
调用该API,然后在片段onCreate()中调用setRetainInstance(true)
呼叫将使此问题完全消失。请查看以下答案:
这是我为此目的创建的POC。厌倦了为不同的项目反复解决这个问题。我希望有帮助
我真的建议从google guys切换到第三方播放器,如ExoPlayer:由于清单中删除了
android:configChanges
,因此不会调用它。如果您想区分何时更改配置和何时实际停止,除了使用onConfigurationChanged()之外,我不知道还有什么其他方法。我猜这意味着您必须在清单中保留android:configChanges=“orientation”
:\Ouch。仅仅是再加一次就已经做到了;似乎默认实现确实处理了布局更改。万分感谢!:)@Kurtis您不能可靠地确定配置更改不是真的;请看我的答案。我正在使用ExoPlayer,但我将如何处理此问题?@Erum您必须在活动中使用标志android:configChanges=“screenSize | orientation”
。@Gasper de Elias我已经这样做了,但在我更改方向后,我的布局还存在一些其他问题,我没有进行编程调整?