android - 在Android中检测音频路径更改

标签 android audio media-player headset android-music-player

我正在开发Android媒体播放器应用程序(需要支持Android ver 2.3-4.1)。我想检测音频路径转换,例如扬声器到有线耳机或有线耳机到BT等。我需要在应用程序中对这些转换采取一些措施。那么,在切换音频路径时,Android是否提供任何单一方式(最好是广播接收器)?如果可能,我要避免分别检测有线耳机和BT耳机的连接/断开。

我仍在适应Android,并希望在此寻求帮助。

提前致谢。

最佳答案

在Jellybean及更高版本上,您可以使用MediaRouter类获得所需的信息。

MediaRouter类具有一个名为getSystemAudioRoute()的隐藏方法,该方法返回RouteInfo对象。您应该可以通过在MediaRouter类上使用反射来掌握该方法。
一旦有了RouteInfo,就可以在其上调用getName(),它应该以CharSequence的形式返回当前音频路径的名称。
请记住,这只是音频路由的强大提示,因为由音频HAL来决定每种流类型的路由位置。

在早于Jellybean的Android版本上,您可以收听相关意图的广播(ACTION_HEADSET_PLUGACTION_HDMI_AUDIO_PLUG等)。

关于android - 在Android中检测音频路径更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13860610/

相关文章:

android - AppBarLayout 阻止 RecyclerView 在 BottomSheet 中滚动

android - 在 android 中使用 ormlite 和 sqlite 进行不区分大小写的排序

android - 从一类其他应用程序中在Android中打开一个应用程序

java - Android webRTC 音量

android - ICS 上的流式音频问题

java - 仅在使用 SurfaceView 的 Samsung GT-I8260 中渲染视频时出现问题。异常 : Prepare failed.:状态=0x1

android - 找不到 org.jetbrains.kotlin :kotlin-gradle-plugin:1. 5.10-release-894。帮我找人?

android - 边框半径不适用于某些安卓手机

javascript - 在javascript中压缩包含音频PCM数据的blob

android - 在 Android 上使用 URI 调用默认媒体播放器