在阅读了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>
我错过了什么?
答案 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>