Добро пожаловать на мой первый вопрос на этом форуме.
Я создаю сигнал тревоги, сообщающий SMS о краже.
- Я положил Джек в телефон.
- Я соединяю контакты GND и MIC на двери длинным проводом.
- Когда кто-то замыкает или размыкает цепь, телефон отправляет 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);
}
}