当前位置: 首页 > 知识库问答 >
问题:

Android - API,用于检查哪个设备(有线耳机或USB耳机)正在播放音频(如果两者都已连接)

程和蔼
2023-03-14

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

有没有一个API可以检查它?

我注意到不同的设备以不同的方式工作。例如,在装有Android 9的三星S10上,后来连接的外围设备用于播放音频。然而,在Moto G6 Android 7和三星S8 Android 9上,无论后来连接了哪种外设,都始终使用有线耳机。

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

共有1个答案

益智明
2023-03-14

请查看MediaRout API。

媒体路由器。RouteInfo getSelectedRoute()可能是您正在寻找的。

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

这里有一个来自我的MTK设备的日志(节略),展示了MediaRouter的属性。当我通过Jabra Bluetooth耳机听音乐时插入有线耳机时发生的事件信息和流程。

onRouteChanged ROUTE info { name = Headphones,description=null,status=null,category = ROUTE category { name = System types = ROUTE _ TYPE _ LIVE _ AUDIO ROUTE _ TYPE _ LIVE _ VIDEO group able = false },supported types = 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=系统类型=ROUTE_TYPE_LIVE_audio ROUTE_ TYPE_LIVE_VIDEO groupable=false},支持类型=RouteType_

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=系统类型=ROUTE_TYPE_LIVE_audio ROUTE_ TYPE_LIVE_VIDEO groupable=false},supportedTypes=RouteUType_LIVE_audio,presentationDisplay=null}

 类似资料:
  • 在某些Android设备中尝试在听筒上播放音频文件时似乎存在问题。预期的行为是它应该在听筒中播放音频文件,但在某些设备中,如三星Galaxy Note 2(Android版本4.4.2)和Sony Xperia XA(Android版本6.0),它通过扬声器播放它们。 然而,在摩托罗拉moto g(Android版本6.0)和nexus 5X(Android版本7.0)等设备中,它工作正常。 该应

  • 我正在开发一个应用程序,我们只需要将耳机插孔用作按钮。 要求:连接耳机时通过听筒播放默认音频(通话)(无需通过耳机收听音频) 有许多通过扬声器和耳机以及蓝牙耳机路由音频的示例,但没有任何关于通过连接耳机的设备的耳式扬声器路由音频的内容。我已经尝试了很多,有些链接是 Android:强制音频路由(在我的场景中不起作用) 我查过sound about(https://play . Google . c

  • 在我的应用程序中,有一个使用设备音频插孔的读卡器。现在,我的问题是,当读卡器在设备的耳机插孔中完好无损时,我想从内置扬声器中发出声音。 以下是我尝试过的代码: 1) 使用反射方法 2)使用setMode方法 但这两种代码仅在具有默认FM应用程序的设备中运行。但我想在所有设备中都具有此功能。 请分享你的经验!!

  • 我想用插入式耳机通过扬声器播放音频文件。 但我得到了 IllegalStateException 有什么想法可以解决这个问题吗?

  • 我想使用有线耳机作为的音频源。我阅读了诸如Android之类的问题 - 通过听筒播放音频和Android - 从听筒播放音频。最后我来: 但这不起作用。蓝牙耳机使用方法解决的问题 我没有找到替代< code > audio manager . startbluetoothsco();适用于有线耳机。能否将< code>SpeechRecognizer与有线耳机结合使用?

  • 我试图让用户能够在我的应用程序中切换音频输出,我可以使用AVAudioSession在扬声器和背部之间切换,但我找不到在连接的蓝牙设备和耳机之间切换的方法,以任何顺序。 谢谢你的帮助。