Обнаружение нажатия или отпускания (без нажатия и отпускания) клавиши гарнитуры на Android - PullRequest
0 голосов
/ 20 февраля 2019

Добро пожаловать на мой первый вопрос на этом форуме.

Я создаю сигнал тревоги, сообщающий SMS о краже.

  1. Я положил Джек в телефон.
  2. Я соединяю контакты GND и MIC на двери длинным проводом.
  3. Когда кто-то замыкает или размыкает цепь, телефон отправляет SMS.

С BroadcastReceiver (исходный кодниже), я легко могу обнаружить нажатие и отпускание кнопки PLAY / PAUSE на проводной гарнитуре.Но BroadcastReceiver запускается только после короткого нажатия и отпускания кнопки PLAY / PAUSE.

Мне нужно немедленно определить, когда клавиша гарнитуры была только нажата или просто только выпущен .Время между нажатием и отпусканием может быть очень большим, например, несколько дней.Решение, обнаруживающее прерывание питания телефона или датчика по Bluetooth (AT-команды), к сожалению, отваливается.Андроид 4.0.4.

    public class MediaButtonReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        String intentAction = intent.getAction();
        Log.i ("TAG_MEDIA", intentAction.toString() + " happended");
        if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
            Log.i ("TAG_MEDIA", "no media button information");
            return;
        }
        KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
        if (event == null) {
            Log.i ("TAG_MEDIA", "no keypress");
            return;
        }
        Log.i ("TAG_MEDIA", "Yes keypress = " + event);
        }

    }
...