android - 如何注销 MediaButtonReceiver onDestroy?

标签 android service audio-streaming android-pendingintent

我在我的流媒体服务中使用 MediaButtonReciever 来监听处理耳机和不同设备的操作 我在 Manifest 中这样声明它

   <receiver android:name="android.support.v4.media.session.MediaButtonReceiver">
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>
    </receiver>

只要应用程序在后台,这些操作就可以正常工作 一旦应用程序终止,如果我单击任何 MediaButton,它就会崩溃为媒体按钮,并出现以下崩溃

Fatal Exception: java.lang.RuntimeException: Unable to start receiver android.support.v4.media.session.MediaButtonReceiver: java.lang.IllegalStateException: Could not find any Service that handles android.intent.action.MEDIA_BUTTON or a media browser service implementation

问题是即使应用程序被销毁,接收器仍会继续接收,现在我如何在应用程序关闭后注销接收器? 我已经尝试过 audioManager.unregister(MediaButtonReciever) 但它已贬值

最佳答案

问题是我像这样在我的 list 中使用默认类

 <receiver android:name="android.support.v4.media.session.MediaButtonReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>

在 onReceive() 完成后接收器自动取消注册是错误的

Once you return from onReceive(), the BroadcastReceiver is no longer active, source

所以所有 idid 都是我在自定义类 MyMediaButtonReceiver 中扩展了 MediaRecieverButton 并像这样编辑我的 list

<receiver android:name=".MyMediaButtonReceiver">
<intent-filter>
    <action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>

而且效果很好

关于android - 如何注销 MediaButtonReceiver onDestroy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210148/

相关文章:

java - Android文件存储存储内存位置

java - Guava的AbstractExecutionThreadService可以复用吗?

android - 需要有关如何在后台永久运行 Android 服务的代码示例,即使设备处于休眠状态,例如 Whatsapp?

audio - 如何在 OS X 上获得实时转录(没有音频文件)?

php - 我怎样才能使麦克风声音从我的电脑上打开的网站传输到其他电脑上打开的网站?

ios - 在 webView 中流式传输广播时应用程序崩溃

android - 从适配器滚动到 RecyclerView 的底部

android - setCornerRadius 不适用于 Android 4.2.2

推送到github后Android项目jar文件丢失

android服务在一个单独的线程中?