android - 在 Android 2.2 中处理耳机和蓝牙 AVRC 传输控制的任何指南

标签 android headset

我试图找出在 Froyo 中处理 Intent.ACTION_MEDIA_BUTTON 的正确(新)方法是什么。在 2.2 之前的日子里,我们必须注册一个 BroadcastReceiver(无论是永久注册还是在运行时注册),只要没有其他应用程序拦截它们并中止广播,媒体按钮事件就会到达。

Froyo 似乎仍然在某种程度上支持该模型(至少对于有线耳机),但它还引入了 registerMediaButtonEventReceiver 和 unregisterMediaButtonEventReceiver 方法,这些方法似乎控制应用程序之间的“传输焦点”。

在我的实验中,使用 registerMediaButtonEventReceiver 确实会导致蓝牙和有线耳机按钮按下被路由到应用程序的广播接收器(应用程序获得“传输焦点”),但它看起来像音频路由中的任何变化(例如拔掉耳机)将焦点拉回默认媒体播放器。

Android 2.2 中的实现逻辑是什么?处理运输管制的正确方法是什么?我们是否必须检测音频路由的变化并尝试重新获得焦点?

这是 Android 平台上的任何第 3 方媒体播放器都必须处理的问题,因此我希望有人(可能是 Google 工程师)可以提供一些我们都可以遵循的指南。采用标准方法可能会让最终用户更容易预测耳机按钮控制。

斯特凡

最佳答案

Google 有一篇详细的博客文章,介绍如何实现较新的 2.2 AudioManager 媒体按钮事件接收器,同时保持与旧设备的向后兼容性。

http://android-developers.blogspot.com/2010/06/allowing-applications-to-play-nicer.html

关于android - 在 Android 2.2 中处理耳机和蓝牙 AVRC 传输控制的任何指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909247/

相关文章:

android - 单击特定像素

java - ADT 22.6.2 超时线程 - org.osgi.framework.BundleException : State change in progress for bundle -

java - 如何遍历数据库中的子项并将它们应用于变量

iPhone/iOS - 连接和断开蓝牙耳机

ios - 在 iphone 中按下耳机按钮时的延迟

android - Android 中的 Handlers 和 Runnables 有什么用?

android - OpenCV 4.1.0 Android Sdk 找不到匹配的配置Android studio

android - 如何验证蓝牙耳机是否在安卓上连接?

android - 在Android中连接蓝牙耳机后,如何在内置麦克风和耳机麦克风之间切换音频输入?

ios - remoteControlReceived(带有事件 : UIEvent?)未触发