Как перехватить нажатие кнопок на гарнитуре в Android?

Я изучил намерение ACTION_MEDIA_BUTTON и я пытался использовать его, перехватывать нажатия кнопок и отображать их на экране с помощью тоста. Я зарегистрировал приемник для перехвата двух намерений:

  1. ACTION_HEADSET_PLUG - подключение гарнитуры

  2. ACTION_MEDIA_BUTTON - получение нажатия кнопок

Это делается в моем основном занятии:

        IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
        mediaFilter.setPriority(10000);
        registerReceiver(_receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
        registerReceiver(_receiver, mediaFilter);

Это часть приемника, который обрабатывает нажатия кнопок:

    if (action.equals(Intent.ACTION_HEADSET_PLUG))
    {
        Toast.makeText(context, "earphones activity",Toast.LENGTH_SHORT).show();
        if (intent.getExtras().getInt("state")==1)//if plugged
            Toast.makeText(context, "earphones plugged",Toast.LENGTH_LONG).show();
        else Toast.makeText(context, "earphones un-plugged",Toast.LENGTH_LONG).show();
    }
    else 
    if (action.equals(Intent.ACTION_MEDIA_BUTTON))
    {
        Toast.makeText(context, "button pressed",Toast.LENGTH_LONG).show();
        key=intent.getExtras().getString("EXTRA_KEY_EVENT");
        Toast.makeText(context, key,Toast.LENGTH_LONG).show();
    }

Теперь часть, которая обрабатывает подключаемый модуль и удаление гарнитуры, работает нормально, а часть, которая перехватывает нажатие кнопки, - нет.

Есть ли причина, по которой код, обрабатывающий ACTION_MEDIA_BUTTON , не работает?

Есть ли у меня особое разрешение, чтобы перехватить такое намерение?

Я использую Samsung Galaxy S2 для проверки кода.

Я просмотрел все похожие посты и все перепробовал. К сожалению, похоже, ничего не работает.

13
задан Bill the Lizard 10 February 2012 в 14:55
поделиться