[英]Android - API to check which device, wired headset or USB headset, is playing audio if both are connected
I have a problem detecting which device, wired headset or USB headset is playing audio when both of them are connected to an Android device.当有线耳机或 USB 耳机都连接到 Android 设备时,我无法检测到哪个设备正在播放音频。
Is there an API which will allow checking that?是否有允许检查的API ?
I have noticed that different devices behave in a different way.我注意到不同的设备以不同的方式运行。 Eg on Samsung S10+ with Android 9 the peripheral attached later is used to play audio.例如,在带有 Android 9 的三星 S10+ 上,稍后连接的外围设备用于播放音频。 However on Moto G6 Android 7 and Samsung S8+ Android 9 wired headset is always used, no matter which peripheral was connected later.但是在 Moto G6 Android 7 和 Samsung S8+ Android 9 上始终使用有线耳机,无论以后连接哪个外围设备。
I need this information to correctly configure the audio stream and to show which device is currently being used.我需要这些信息来正确配置音频 stream 并显示当前正在使用的设备。
Please have a look at MediaRouter API.请查看MediaRouter API。
MediaRouter.RouteInfo getSelectedRoute() is probably what you are looking for. MediaRouter.RouteInfo getSelectedRoute() 可能是您正在寻找的。
Also it allows you to register a listener to be notified when current audio device configuration changes(MediaRouter.Callback interface).它还允许您注册一个侦听器,以便在当前音频设备配置更改时收到通知(MediaRouter.Callback 接口)。 Its onRouteSelected and onRouteUnselected callbacks are called when an audio device starts/stops to play audio respectively.它的 onRouteSelected 和 onRouteUnselected 回调分别在音频设备开始/停止播放音频时被调用。
Here's a log (abridged) from my MTK device demonstrating attributes of MediaRouter.RouteInfo and flow of events that occurred when I plugged in wired headphones while listening to music via Jabra Bluetooth headset.这是来自我的 MTK 设备的日志(删节),展示了 MediaRouter.RouteInfo 的属性以及我在通过 Jabra 蓝牙耳机听音乐时插入有线耳机时发生的事件流。
onRouteChanged RouteInfo{ name=Headphones, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO, presentationDisplay=null } onRouteChanged RouteInfo{ name=Headphones, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO,presentationDisplay=null }
onRouteUnselected RouteInfo{ name=Jabra MINI v1.0.5, description=Bluetooth audio, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO, presentationDisplay=null } onRouteUnselected RouteInfo{ name=Jabra MINI v1.0.5, description=蓝牙音频, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO, presentationDisplay=null }
onRouteSelected RouteInfo{ name=Headphones, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO, presentationDisplay=null } onRouteSelected RouteInfo{ name=Headphones, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO, presentationDisplay=null }
onRouteRemoved RouteInfo{ name=Jabra MINI v1.0.5, description=Bluetooth audio, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO, presentationDisplay=null } onRouteRemoved RouteInfo{ name=Jabra MINI v1.0.5, description=蓝牙音频, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO, presentationDisplay=null }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.