2015-05-12 4 views
0

Я пытаюсь создать приложение с постоянной службой, которое будет регистрироваться и отображаться пользователю каждый раз, когда они разблокируют или изменят состояние телефонов с экрана на экране. Возможно ли это, если вы не используете Log cat через P.C?Log Android user wakeup/unlock

ответ

0

Да, вы можете сделать это с помощью широковещательного приемника. Система Android отправляет всегда трансляции для указанных изменений. Вы можете обрабатывать эти трансляции с помощью широковещательного приемника.

Пример:

Мы создадим новый вещательный приемник для обработки экрана Включение и выключение экрана состояния:

public class PhoneStateBroadcastReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
     //we will handle here the activities which will tell us that 
     // the screen state has changed 
     if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){ 
      //write log that the screen is off 
     }else if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){ 
      //write log that the screen is on 
     } 
     } 
    } 

Все, что вам нужно, чтобы объявить эту BroadcastReceiver в Android Manifest.xml файла :

<receiver android:name="yourpackage.PhoneStateBroadcastReceiver"> 
     <intent-filter> 
     </intent-filter> 
</receiver> 

И после того, что вы должны начать свой PhoneStateBroadcastReceiver на YOUT службы onCreate Method:

//... 
public void onCreate(){ 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction(Intent.ACTION_SCREEN_OFF); 
    filter.addAction(Intent.ACTION_SCREEN_ON); 

    PhoneStateBroadcastReceiver pSReciever = new PhoneStateBroadcastReceiver(); 
    registerReceiver(pSReciever, filter); 
} 
+0

Это было действительно полезно! Большое спасибо! Просто еще один вопрос. Есть ли способ сказать, когда пользователь действительно разблокирует телефон и регистрирует его, а не только на экране? –

+1

Если кто-нибудь встретит это, просто замените ACTION_SCREEN_ON на ACTION_USER_PRESENT. Он распознает, когда кто-то открывает свой телефон –