【问题标题】:Android - checking headset button clickAndroid - 检查耳机按钮点击
【发布时间】:2012-04-12 13:58:39
【问题描述】:

如何检查耳机中的播放/暂停按钮是否被点击? 之后,我可以实现一些方法来改变我自己的动作(关闭等)的典型动作(播放/暂停)吗?

【问题讨论】:

    标签: android implementation headset


    【解决方案1】:

    现在我正在使用下面的代码耳机按钮单击事件,它对我有用。试试这个代码

    // 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>
    

    【讨论】:

      【解决方案2】:

      如果您尝试从前台的活动中侦听此内容,请使用 onKeyDown() 并注意 KEYCODE_MEDIA_PLAY_PAUSE

      如果您尝试从后台收听此事件(例如,播放音乐的服务),请将 BroadcastReceiver 用于 ACTION_MEDIA_BUTTON

      【讨论】:

      • 这是我的广播接收器,但它不起作用,怎么了? public final BroadcastReceiver hReceiver = new BroadcastReceiver(){ public void onReceive(Context context, Intent intent) { String action = intent.getAction();意图 mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); if(mediaButtonIntent.equals(action)) { adapter.add("click"); } } };
      • @user1320033:如果您只使用此BroadcastReceiver 和正确的IntentFilter 一次,则无需测试您的操作字符串。此外,您正在错误地测试它。
      • @user1320033: Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction()).
      • 窃取不起作用:(我在 onReceive: if(Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {...} 和 onCreate() registerReceiver(hReceiver, new IntentFilter()); 中写了但是点击后什么都没有发生。
      【解决方案3】:

      您可以使用ACTION_MEDIA_BUTTON 意图 阅读更多以上链接 希望对您有所帮助

      【讨论】:

      • 这是我的广播接收器,但它不起作用,怎么了? public final BroadcastReceiver hReceiver = new BroadcastReceiver(){ public void onReceive(Context context, Intent intent) { String action = intent.getAction();意图 mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); if(mediaButtonIntent.equals(action)) { adapter.add("click"); } } };
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多