2011-08-26 5 views
2

Я хотел создать трансляционный транслятор, который прослушивает android.intent.action.MEDIA_BUTTON и получает от него extra_key_event и действует соответственно. Каким-то образом onreceive действие не выполняется.android broadcastreceviver onreceive action не выполнен

В моем манифесте:

receiver android:name="MediaButtonReceiver" 
intent-filter 
action android:name="android.intent.action.MEDIA_BUTTON" 
intent-filter 

приемник

В моей BroadcastReceiver:

public class MVCS extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { 
     /* handle media button intent here by reading contents */ 
     /* of EXTRA_KEY_EVENT to know which key was pressed */ 

     KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); 
     if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 
      Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

Однако, ничего не отображается, когда я нажмите клавишу громкость вниз.

Любая помощь была бы высоко оценена!

ответ

0

Вам необходимо зарегистрировать приемник вещания в своей деятельности, используя метод registerReceiver(). Как ваш код не является полным здесь, я не могу вам сказать, как именно, но имейте в виду, что после создания экземпляра вашего класса MVCS, вы должны зарегистрироваться как:

MyActivity.registerReceiver (myBroadcastReceiver, MediaButtonReceiver);

Лучший способ сделать это - зарегистрировать приемник в OnStart() вашей деятельности и отменить регистрацию в OnStop().

+0

благодарит за помощь. Регулярно транслируются трансляции в фоновом режиме, как служба, даже когда моя активность не работает? – kevdliu

+0

Радиовещательные приемники не похожи на сервисы, ничто не работает непрерывно, это просто слушатель, который вы присоединяете к определенному событию. Он будет выполняться ТОЛЬКО при запуске события и иметь в виду, что ответ не такой быстрый, иногда он принимает 300 или 400 мс до тех пор, пока ваш слушатель не будет запущен. – ruhalde

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