перезапустите приложение, когда экран выключен - PullRequest
2 голосов
/ 16 января 2012

Мое приложение заканчивается, когда пользователь касается экрана.Для этого в методе onTouch () у меня есть

Intent intent = new Intent(getBaseContext(), FinActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();

, где класс FinActivity такой:

public class FinActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        BroadcastReceiver mReceiver = new AlarmReceiver();
        registerReceiver(mReceiver, filter);

        Intent intent = new Intent(this, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, 0);

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                System.currentTimeMillis() + (60 * 1000),
                System.currentTimeMillis() + (60 * 1000), pendingIntent);
        finish();
    }

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

public class AlarmReceiver 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
            System.out.println("Screen OFF");
            wasScreenOn = false;

                Intent i = new Intent(context, SplashScreen.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);

        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // and do whatever you need to do here
            System.out.println("Screen ONN");
            wasScreenOn = true;
        }
    }

}

, но через 60 секунд я получаю исключение NullPointerException в этой строке: intent.getAction().equals(Intent.ACTION_SCREEN_OFF)

Где моя ошибка?Что я делаю не так?

Заранее спасибо.

1 Ответ

2 голосов
/ 16 января 2012

Если вы просто хотите узнать, включен или выключен ваш экран, вы можете использовать класс PowerManager для Android с уровень API 1 . Вы можете использовать isScreenOn () метод для определения состояния экрана.

Более подробную информацию вы можете получить http://developer.android.com/reference/android/os/PowerManager.html здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...