Я реализовал нечто похожее на Android уведомление о выключении / включении экрана , но оно работает не так, как должно. Все, что я хочу сделать, это остановить музыку c, когда экран выключен. Я создал класс экранного действия, подобный этому
public class ScreenAction extends BroadcastReceiver {
public static boolean wasScreenOn = true;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// DO WHATEVER YOU NEED TO DO HERE
wasScreenOn = false;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// AND DO WHATEVER YOU NEED TO DO HERE
wasScreenOn = true;
}
}
}
Затем, в моих основных действиях по созданию, у меня есть это
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenAction();
registerReceiver(mReceiver, filter);
В моих основных действиях наPause у меня есть что-то вроде этого:
public void onPause() {
super.onPause();
if (ScreenAction.wasScreenOn) {
final MediaPlayer mp = MediaPlayer.create(this, R.raw.pcmouseclick1);
mp.setVolume(.1f, .1f);
mp.start();
if (buttonState) {
mServ.reduceVolume();
}
}
}
Я нашел это из онлайн-источника, но у меня проблемы. Кажется, что состояние экрана всегда установлено как истинное, и я не уверен, как это изменить.
Как использовать этот класс ScreenAction, чтобы отключить музыку c при включении только паузы, когда пользователь заблокировал экран? Мне кажется, что я что-то упускаю в onPause, потому что в onCreate я ссылаюсь на класс.