2

在阅读了 android 开发指南和此处的一些帖子后,我实现了一个简单的解决方案,以在运行 Android 2.3.3 的平板电脑中捕获 HEADSET UNPLUG 事件。

不幸的是,我似乎遗漏了一些东西,因为 onReceive() 事件从未被捕获。

下面是实现的代码:

public class MusicIntentReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
            Toast.makeText(context, "Headphones disconnected.", Toast.LENGTH_SHORT).show();
        }

    }


}

在 android 清单文件中:

<receiver android:name=".MusicIntentReceiver">
            <intent-filter>
                <action android:name="android.media.AUDIO_BECOMING_NOISY" />
            </intent-filter>
        </receiver>

我错过了什么?

4

1 回答 1

4

NOISY 过滤器会在音频输出源发生变化时触发,并且可能会导致一些奇怪的东西。

耳机插头的正确过滤器应该是:

IntentFilter commandFilter = new IntentFilter();
commandFilter.addAction(Intent.ACTION_HEADSET_PLUG);

清单应为:

 <intent-filter>
            <action android:name="android.intent.action.HEADSET_PLUG" />
 </intent-filter>
于 2013-01-24T21:35:58.807 回答