我想知道如何在活动之间传递 MediaPlayer 对象,以便我可以在整个应用程序中保持恒定的声音播放。
你不“通过MediaPlayer
活动之间的对象”。
您需要访问MediaPlayer
从一个习惯Service http://developer.android.com/reference/android/app/Service.html在后台播放声音,并使您的活动与此服务交互。
对于交互,我个人的偏好是使用绑定AIDL http://developer.android.com/guide/developing/tools/aidl.html。每当我尝试使用简单的意图和onStartCommand
() 它显示活动/服务交互不足(我也使用音频)。但它可能对你有用。
通过 AIDL 和绑定,您可以公开自定义函数,例如play(uri)
, pause()
, rewind()
等等....的MediaPlayer
实例将被创建于play(uri)
如果它尚未实例化并在您的服务中发布onDestroy()
.
你甚至可以注册一个监听器RemoteCallbackList
获得有关职位变更或其他一些事件的通知。请参阅 AIDL 文档中的示例。这样做的好处是您的服务可以检测侦听器何时取消注册。这样,您可以在调用之前在服务中设置一个小超时stopSelf()
,如果另一个侦听器(活动)没有快速注册。这很有用,因为您不一定知道某个活动是否因为用户按下主页按钮而暂停,或者因为他从一项活动循环到另一项活动而暂停。
是的,需要做一些工作;)
注意:您仍然需要致电startService()
绑定之前,否则每当活动取消绑定时服务都会停止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)