2017-01-12 6 views
0

У меня есть этот код для обработки щелчков на кнопках от наушников. Проблема в том, что мой приоритет низкий, и когда я нажимаю кнопку, радио включается. Я хочу уделить приоритет моему приложению. Я попытался увеличить число setPriority, но он не работает.Как обращаться с кнопками на наушники?

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

Только когда мое приложение находится на переднем плане ... Я создаю что-то, когда при нажатии кнопки отправляет сообщение Toast в мое приложение – Jose

ответ

3

Вы не можете зарегистрировать приемник для Intent.ACTION_MEDIA_BUTTON с registerReceiver, как он обрабатывается отдельно в рамках средств массовой информации, чтобы направить в правильное приложение средств массовой информации, как описано в Responding to Media Buttons guide ,

Однако, в том случае, когда вы хотите, чтобы справиться с этим на первый план, вам не нужно использовать Intent.ACTION_MEDIA_BUTTON вообще, так как все KeyEvent s сначала направляются к активному Activity через onKeyDown()onKeyUp()). Таким образом, вы можете обрабатывать 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

 Смежные вопросы

  • Нет связанных вопросов^_^