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