1

これは面白いものです。Android4.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 に答える