2017-01-12 12 views
0

私はイヤホンからボタンのクリックを処理するためにこのコードを持っています。問題は私の優先順位が低く、ボタンをクリックするとラジオがオンになることです。私は自分のアプリに優先権を与えることができるようにしたい。私はsetPriorityの数を増やそうとしましたが、動作しません。 Responding to Media Buttons guideで説明したように、正しいメディアアプリに派遣するメディアフレームワークによって別々に処理されるようあなたがregisterReceiverIntent.ACTION_MEDIA_BUTTONための受信機を登録することはできません、他のクラスのイヤホンのボタンのクリックを処理する方法は?

public class MediaButtonIntentReceiver extends BroadcastReceiver { 

    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_MULTIPLE) { 
      // do something 
      Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
     } 
     abortBroadcast(); 
    } 

//コードは

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);//"android.intent.action.MEDIA_BUTTON" 
     MediaButtonIntentReceiver r = new MediaButtonIntentReceiver(); 
     filter.setPriority(1000); **//increasing this does not work** 
     registerReceiver(r, filter); 
+0

あなたは、バックグラウンドでのメディアのボタンを取得しようとしたり、アプリがフォアグラウンドである場合にのみされていますか?あなたは完全にメディアアプリを構築していますか? – ianhanniballake

+0

私のアプリがフォアグランドにあるときのみ...ボタンをクリックすると私のアプリにトーストメッセージを送信する何かを構築しています – Jose

答えて

3

しかし、あなたはフォアグラウンドでそれを処理したい場合には、あなたはすべてのKeyEvent sが最初onKeyDown()(およびonKeyUp())を介して活性Activityに送信されたように、すべてのIntent.ACTION_MEDIA_BUTTONを使用する必要はありません。したがって、あなたは直接KeyEventを扱うことができます。

@Override 
public boolean onKeyDown (int keyCode, 
      KeyEvent event) { 
    // This is the center button for headphones 
    if (event.getKeyCode() == KeyEvent.KEYCODE_HEADSETHOOK) { 
    Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
    return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

どこにコードを入れますか? – Jose

+1

あなたのアクティビティで – ianhanniballake

+0

しかし、私はonCreateの外でそのメソッドを実装しています。 onCreateメソッドの中で彼をどのように呼びますか? – Jose

関連する問題