1

这里有一个有趣的。安卓 4.1.1。当 USB 麦克风连接(状态 = 1)/断开连接(状态 = 0)时,将发送以下广播:

VERBOSE/WiredAccessoryObserver(260): android.intent.action.USB_DGTL_MIC_PLUG: state: 1 name: usb_audio_capture
VERBOSE/AudioService(260): Broadcast Receiver: Got ACTION_USB_DGTL_MIC_PLUG, state = 1

为什么我的广播接收器收不到这个?我确实手动启动了主要活动。

<receiver android:name=".UsbMic" android:enabled="true" android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.USB_DGTL_MIC_PLUG" />
    </intent-filter>
</receiver>


public class UsbMic extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("Test", "USB Mic");
    }
}
4

2 回答 2

0

当 USB 麦克风连接(状态 = 1)/断开连接(状态 = 0)时,将发送以下广播

情况不一定如此,所以你不应该依赖它。
例如,在最近的 Qualcomm 平台上检测到主机供电的 USB 音频附件时发出的意图是 (IIRC) android.intent.action.ANALOG_AUDIO_DOCK_PLUG。这并没有说明配件是否有麦克风,因为该检查是由音频 HAL 在内部完成的,不会导致任何意图被广播。

于 2013-01-14T12:30:10.323 回答
0

我在 Android API 中找不到 USB_DGTL_MIC_PLUG 作为系统意图,所以我无法自己验证它(似乎是特定于设备的东西)。当您从代码而不是清单注册接收器时,只能接收某些意图。您是否尝试过创建自定义接收器并从您的活动中手动启动它?

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.USB_DGTL_MIC_PLUG");

receiver = new UsbMic();       
registerReceiver(receiver, filter); 
于 2013-01-14T13:23:28.173 回答