Дескриптор активности, когда экран разблокирован - PullRequest
6 голосов
/ 17 марта 2012

Итак, моя команда onResume перезапускает остановленный поток, который запускает мой игровой цикл.Это прекрасно работает для возобновления работы приложения, когда оно закрыто кнопкой «Домой» или фокусируется на другом приложении.Однако, когда вы выключаете и снова включаете экран, команда действий onResume запускается сразу же, пока экран не разблокируется.Мне нужно, чтобы моя активность знала, когда экран разблокирован, чтобы он мог перезапустить поток в соответствующее время.

Кто-нибудь имел это раньше?

1 Ответ

16 голосов
/ 17 марта 2012

для обнаружения включенного экрана и выключенного экрана зарегистрируйте приемник вещания, например:

AndroidManifest.xml:

    <receiver android:name="receiverScreen">
        <intent-filter> 
            <action android:name="android.intent.action.SCREEN_ON" />
            <action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.Intent.ACTION_USER_PRESENT" />
        </intent-filter> 
    </receiver>

В действии или услуге:

    try {
              IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);

              filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);

              BroadcastReceiver mReceiver = new receiverScreen();

              registerReceiver(mReceiver, filter);
         } catch (Exception e) {

         }

код получателя, где система информирует вас, если экран включается / выключается :

 public class receiverScreen extends BroadcastReceiver {

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

         if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)){

         }
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){

         }
if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)){

         }
     }

    }
...