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

在Android设备上切换 USB 音频

钱弘壮
2023-03-14

AndroidLollipop现在支持USB音频开箱即用。但是,我希望能够控制到USB音频设备的音频路由。Android SDK中是否有任何方法允许这种程度的控制?我尝试使用setForceUse,但这在不同的设备上是不一致的,而且似乎只适用于未连接USB音频设备的情况(更不用说SetForceUser没有USB选项)。

例如,我希望我的应用程序能够在普通手机耳机插孔上播放,但通过切换按钮,可以将相同的音频传送到连接的USB音频设备。再次按下切换按钮将切换回耳机插孔。

共有1个答案

周辰沛
2023-03-14

我可以通过调用setDeviceConnectionState并指定耳机/耳机可用(将通过耳机播放)或不可用(将通过USB播放)来伪造耳机插孔是否已插入。这将切换USB音频,这就是我打算做的。可能有一个更干净的方法,但这种方法目前有效。

audioSystemClass = Class.ForName("android.media.AudioSystem");

// will disable the headphone
setDeviceConnectionState.Invoke(audioSystemClass, (Java.Lang.Integer)DEVICE_OUT_WIRED_HEADPHONE, (Java.Lang.Integer)DEVICE_STATE_UNAVAILABLE, new Java.Lang.String(""));

// will enable the headphone
setDeviceConnectionState.Invoke(audioSystemClass, (Java.Lang.Integer)DEVICE_OUT_WIRED_HEADPHONE, (Java.Lang.Integer)DEVICE_STATE_AVAILABLE, new Java.Lang.String(""));
 类似资料:
  • 我正在尝试从连接到主机模式下的Android手机的USB设备中获取一些数据。我可以发送数据到它,但读取失败。 我一直从方法获得,它指示某种错误,它总是超时。也许问题来自于连接配置,我试了几次(读作:试错),没有一次奏效,令人惊讶的是,我不需要任何配置来发送数据到设备。 编辑 还必须注意的是,我使用的电缆是micro-USB到micro-USB的,它只能以一种方式工作,即只有当插头A连接到电话和插头

  • 简介 USB 即 Universal Serial Bus 是一种支持热插拔的通用串行总线,在 USB 体系中又分为 USB Host 和 USB Device。本文将基于 stm32l475-atk-pandora 开发板,讲解基于 RT-Thread Studio 开发 USB Device 驱动。 USB Device 设备驱动的开发可总结为如下几个步骤: 新建 RT-Thread 完整版项

  • 我在使用媒体​流式录制API,用于录制用户的麦克风。该代码在chrome windows上运行良好,但在android上,它只会在录制哔哔声后立即停止录制。 如何使API在android设备上工作 我是否遗漏了什么,或者这是Web音频API的错误? 代码如下: 然后我就用这些台词开始录音: 还有这个要停下来玩:

  • 13.1. 简介 通用串行总线(USB)是将设备连接到个人计算机的一种新方法。总线 结构突出了双向通信的特色,并且其开发充分考虑到了设备正逐渐智能化 和需要与host进行更多交互的现实。对USB的支持包含在当前所有芯片中, 因此在新近制造的PC中都可用。苹果(Apple)引入仅带USB的iMac对硬件 制造商生产他们USB版本的设备是一个很大的激励。未来的PC规范指定 PC上的所有老连接器应当由一

  • 通过usb接口可以与USB设备进行交互,这能让Chrome应用作为USB设备的驱动程序。要使用usb接口需要在Manifest中声明usb权限: "permissions": [ "usb" ] 本章内容参考自https://crxdoc-zh.appspot.com/apps/usb。

  • 问题内容: 因此,我将这根小电缆插入您的手机,该手机的另一侧具有USB端口,例如,您可以在其中插入闪存驱动器 当我插入闪存驱动器时,我收到一条通知,内容为: 已连接USB大容量存储 然后,当我启动文件浏览器应用程序时,我可以看到驱动器 位于: / storage / UsbDriveA / 太好了,但是我想知道如何在 代码中访问闪存驱动器。轻松访问SD卡: 但是,对于闪存驱动器,您将如何做呢?提前