无法接收android.intent.action.USB_DGTL_MIC_PLUG

时间:2013-01-14 12:09:44

标签: android audio usb broadcastreceiver microphone

这是一个有趣的。 Android 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");
    }
}

2 个答案:

答案 0 :(得分:0)

  

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

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

答案 1 :(得分: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);