未捕获ACTION_AUDIO_BECOMING_NOISY

时间:2012-04-15 07:41:40

标签: android audio headset

在阅读了android dev-guide和这里的一些帖子之后,我已经实现了一个简单的解决方案来捕获运行Android 2.3.3的平板电脑中的HEADSET UNPLUG事件。

不幸的是,由于onReceive()事件永远不会被捕获,我似乎错过了一些东西。

Bellow是已实现的代码:

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>

我错过了什么?

1 个答案:

答案 0 :(得分:4)

当音频输出源发生变化时,NOISY过滤器会被触发,并可能导致时髦的东西。

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

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

清单应为:

 <intent-filter>
            <action android:name="android.intent.action.HEADSET_PLUG" />
 </intent-filter>