Я совершенно новой для Android развития и разработки Java поэтому, пожалуйста, извините мой идиотский вопрос :)Android - OnKeyDown вызывается из OnReceive
Я хочу, чтобы настроить приложение, которое останавливает SMS звук при нажатии кнопки.
До сих пор мне удалось настроить SMSReceiver, который видит, когда приходит SMS, и делает действия, о которых сказано. Вот код:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
switch (audioManager.getRingerMode()) {
case AudioManager.RINGER_MODE_VIBRATE:
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
break;
case AudioManager.RINGER_MODE_NORMAL:
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
break;
}
}
}
Теперь, что мне нужно делать действия внутри OnReceive только при нажатии на кнопку громкости вниз (или любую другую кнопку для этого вопроса).
Я пытался добавить OnKeyDown метод ... но я не в состоянии разобраться :(
Может кто-то пожалуйста, помогите
Спасибо за ответ! Я попробовал, но я не могу заставить его работать. Он всегда возвращает buttonPressed как false, он не ждет ввода ключа. Не уверен, что я делаю что-то неправильно ... Кроме того, если я использую @Override с onKeyDown или onKeyUp, я получаю сообщение об ошибке: «Метод onKeyUp (int, KeyEvent) типа SMSReceiver должен переопределять или реализовывать метод супертипа». Из того, что я прочитал, это можно использовать только в том случае, если я расширяю класс Activity (расширяю BroadcastReceiver) ... не уверен, что это правда или нет. – user2099654
Да, вы правы. Вы должны поместить эти 2 метода в свою (текущую) деятельность! Если вы этого не сделаете, вы сделали свой собственный бесполезный метод и не использовали его для Android в качестве ребенка. Я предполагаю, что вы можете выяснить остальное :). –