【问题标题】:Android - API to check which device, wired headset or USB headset, is playing audio if both are connectedAndroid - 用于检查哪个设备(有线耳机或 USB 耳机)正在播放音频的 API(如果两者都已连接)
【发布时间】:2020-01-26 16:49:04
【问题描述】:

当有线耳机或 USB 耳机都连接到 Android 设备时,我无法检测到哪个设备正在播放音频。

是否有 API 允许检查?

我注意到不同设备的行为方式不同。例如。在带有 Android 9 的三星 S10+ 上,稍后连接的外围设备用于播放音频。但是,在 Moto G6 Android 7 和 Samsung S8+ Android 9 上始终使用有线耳机,无论以后连接哪个外围设备。

我需要这些信息来正确配置音频流并显示当前正在使用的设备。

【问题讨论】:

    标签: android android-audiomanager android-developer-api


    【解决方案1】:

    请查看MediaRouter API。

    MediaRouter.RouteInfo getSelectedRoute() 可能是您正在寻找的。​​p>

    它还允许您注册一个监听器,以便在当前音频设备配置更改时收到通知(MediaRouter.Callback 接口)。它的 onRouteSelected 和 onRouteUnselected 回调在当 音频设备分别开始/停止播放音频。

    这是来自我的 MTK 设备的日志(删节),展示了 MediaRouter.RouteInfo 的属性以及当我插入有线耳机并通过 Jabra 蓝牙耳机听音乐时发生的事件流。

    onRouteChanged RouteInfo{ name=耳机, description=null, 状态=空,类别=RouteCategory{名称=系统 类型=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , 演示显示=null }

    onRouteUnselected RouteInfo{ name=Jabra MINI v1.0.5, 描述=蓝牙音频,状态=null,类别=RouteCategory{ 名称=系统类型=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false },supportedTypes=ROUTE_TYPE_LIVE_AUDIO, 演示显示=null }

    onRouteSelected RouteInfo{ name=耳机, description=null, 状态=空,类别=RouteCategory{名称=系统 类型=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , 演示显示=null }

    onRouteRemoved RouteInfo{ name=Jabra MINI v1.0.5, 描述=蓝牙音频,状态=null,类别=RouteCategory{ 名称=系统类型=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO groupable=false },supportedTypes=ROUTE_TYPE_LIVE_AUDIO, 演示显示=null }

    【讨论】:

    • 感谢您的回答。我会检查它,但它可能仅在使用流类型媒体时才有效,例如玩音乐。我正在使用 VoiceCommunication 或 VoiceRecognition,此 API 可能无法正常工作。
    猜你喜欢
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多