Я пытаюсь создать приложение с постоянной службой, которое будет регистрироваться и отображаться пользователю каждый раз, когда они разблокируют или изменят состояние телефонов с экрана на экране. Возможно ли это, если вы не используете Log cat через P.C?Log Android user wakeup/unlock
0
A
ответ
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);
}
Это было действительно полезно! Большое спасибо! Просто еще один вопрос. Есть ли способ сказать, когда пользователь действительно разблокирует телефон и регистрирует его, а не только на экране? –
Если кто-нибудь встретит это, просто замените ACTION_SCREEN_ON на ACTION_USER_PRESENT. Он распознает, когда кто-то открывает свой телефон –