【发布时间】:2012-04-12 13:58:39
【问题描述】:
如何检查耳机中的播放/暂停按钮是否被点击? 之后,我可以实现一些方法来改变我自己的动作(关闭等)的典型动作(播放/暂停)吗?
【问题讨论】:
标签: android implementation headset
如何检查耳机中的播放/暂停按钮是否被点击? 之后,我可以实现一些方法来改变我自己的动作(关闭等)的典型动作(播放/暂停)吗?
【问题讨论】:
标签: android implementation headset
现在我正在使用下面的代码耳机按钮单击事件,它对我有用。试试这个代码
// Receiver
public class MediaButtonEventReceiver extends BroadcastReceiver {
private static final String TAG = "MediaButtonIntentReceiv";
public MediaButtonIntentReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
// do something
Log.e(TAG, "onReceive: " );
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
}
// Write this code in onCreateview in your activity
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MediaButtonIntentReceiver r = new MediaButtonIntentReceiver();
filter.setPriority(1000); //this line sets receiver priority
registerReceiver(r, filter);
// manifest.xml
<receiver android:name=".MediaButtonIntentReceiver">
<intent-filter >
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</receiver>
【讨论】:
如果您尝试从前台的活动中侦听此内容,请使用 onKeyDown() 并注意 KEYCODE_MEDIA_PLAY_PAUSE。
如果您尝试从后台收听此事件(例如,播放音乐的服务),请将 BroadcastReceiver 用于 ACTION_MEDIA_BUTTON。
【讨论】:
BroadcastReceiver 和正确的IntentFilter 一次,则无需测试您的操作字符串。此外,您正在错误地测试它。
Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction()).
if(Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {...} 和 onCreate() registerReceiver(hReceiver, new IntentFilter()); 中写了但是点击后什么都没有发生。
您可以使用ACTION_MEDIA_BUTTON 意图 阅读更多以上链接 希望对您有所帮助
【讨论】: