2012-04-12 3 views
1

Как я могу проверить, нажата ли кнопка воспроизведения/паузы в моей гарнитуре? После этого можно реализовать какой-либо метод, который может изменить типичное действие (воспроизведение/пауза) для моего собственного действия (закрытие и т. Д.)?Android - кнопка проверки гарнитуры

ответ

3

Если вы пытаетесь слушать это от деятельности на переднем плане, используйте onKeyDown() и наблюдать за KEYCODE_MEDIA_PLAY_PAUSE.

Используйте BroadcastReceiver для ACTION_MEDIA_BUTTON, если вы пытаетесь прослушивать это событие с фона (например, слушая музыку).

+0

Это мой приемник, но он не работает, что случилось? общественного окончательный BroadcastReceiver hReceiver = новый BroadcastReceiver() { \t \t общественного недействительный OnReceive (контекст Контекста, Намерение намерения) { \t Строки действия = intent.getAction(); \t \t \t \t Intent mediaButtonIntent = новое намерение (Intent.ACTION_MEDIA_BUTTON); \t \t если (mediaButtonIntent.equals (действие)) \t { \t \t adapter.add ("щелчок"); \t} \t \t} \t}; – PatLas

+0

@ user1320033: Вам не нужно проверять свою строку действий, если вы используете этот «BroadcastReceiver» один раз с помощью правого «IntentFilter». Кроме того, вы тестируете его неправильно. – CommonsWare

+0

Итак, что мне делать, чтобы проверить его правильно? – PatLas

0

Вы можете использовать ACTION_MEDIA_BUTTON пристальный Читать далее выше ссылка Надеюсь, что это помощь

+0

Это мой приемник, но это не работает, что не так? общественного окончательный BroadcastReceiver hReceiver = новый BroadcastReceiver() { \t \t общественного недействительный OnReceive (контекст Контекста, Намерение намерения) { \t Строки действия = intent.getAction(); \t \t \t \t Intent mediaButtonIntent = новое намерение (Intent.ACTION_MEDIA_BUTTON); \t \t если (mediaButtonIntent.equals (действие)) \t { \t \t adapter.add ("щелчок"); \t} \t \t} \t}; – PatLas

3

Прямо сейчас я использую под кнопкой мыши кнопку мыши на клавиатуре, которая работает для меня. попробуйте этот код

enter code here 
//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

его работа для меня –