Android BroadcastReceiver не будет регистрироваться

Я пытаюсь добавить простой широковещательный приемник в мое аудио приложение, чтобы я мог отключить звук, когда пользователь нажимает на свою гарнитуру ACTION_MEDIA_BUTTON. Я читал, что вы можете зарегистрировать его в манифесте или динамически в коде. Я прошел путь регистрации его в коде, так как мне нужно вызывать методы в моем основном классе активности, чтобы реагировать на нажатие кнопки мультимедиа. Однако по какой-то причине мой BroadcastReceiver просто не регистрируется, и я не могу найти ничего, что объясняет почему (увеличение седых волос).

Вот что я имею в MainActivity.java:

public class MainActivity extends Activity {

  public IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);

  public BroadcastReceiver MediaButtonIntentReceiver =
            new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {

                    String intentAction = intent.getAction();
                    if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
                        KeyEvent event = (KeyEvent) intent
                                .getParcelableExtra(Intent.EXTRA_KEY_EVENT);
                        int action = event.getAction();
                        if (action == KeyEvent.ACTION_DOWN) {

                            Log.e("INFO", "Media Button Pressed");
                            MuteAll();

                        }


                }
           }
  };

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);       

      // Register media button event receiver
      intentFilter.addAction("android.intent.action.ACTION_MEDIA_BUTTON");
      intentFilter.setPriority(10000);
      this.registerReceiver(MediaButtonIntentReceiver, intentFilter);

      }

@Override
protected void onDestroy() {
    super.onDestroy();

    // Unregister media button event receiver
    unregisterReceiver(MediaButtonIntentReceiver);

    }
};

Я уверен, что BroadcastReceiver не регистрируется, поскольку завершение регистра, как показано ниже, дает мне тост, подтверждающий, что он нулевой:

  if (registerReceiver(MediaButtonIntentReceiver, intentFilter) == null) 
  {
      Toast.makeText(this, "Could not register receiver", Toast.LENGTH_LONG).show();
  } else {
      Toast.makeText(this, "Receiver registered", Toast.LENGTH_LONG).show();
  }

РЕДАКТИРОВАТЬ: я также попробовал следующее на основе предложений до сих пор:

Чтение через -http://developer.android.com/training/managing-audio/volume-playback.html Я попытался зарегистрировать мой получатель в манифесте так ...

<receiver android:name="com.mydomain.myapp.MainActivity$MediaButtonIntentReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>

And then added the following example code:
public AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
// Start listening for button presses
am.registerMediaButtonEventReceiver(RemoteControlReceiver);

Eclipse пожаловалась, что mContext ни к чему не привела, поэтому я добавил следующее:

private Context mContext;

Затем он пожаловался на часть «mContext.getSystemService (Context.AUDIO_SERVICE)», сказав: «Несоответствие типов: невозможно преобразовать объект в AudioManager»

Поэтому я добавил приведение к AudioManager:

public AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);

А затем добавил предложенный регистрационный код получателя:

am.registerMediaButtonEventReceiver(MediaButtonIntentReceiver);

На что он пожаловался на «registerMediaButtonEventReceiver», сказав: «Метод registerMediaButtonEventReceiver (ComponentName) в типе AudioManager не применим для аргументов (BroadcastReceiver)»

Очевидно, я делаю что-то не так здесь. Я ввел их пример кода, как показано, но он даже не компилируется.

--- КОНЕЦ РЕДАКТИРОВАНИЯ -----------------------------

Надеюсь, кто-то там может помочь мне. Пожалуйста, дайте мне знать, если мне нужно предоставить что-нибудь еще.

Ответы на вопрос(1)

Ваш ответ на вопрос