Как подсчитать разблокировку экрана после обнаружения в приложении и как заставить его обнаруживать, пока мы не прекратим функцию в приложении
Я хочу создать пример приложения, которое обнаружит разблокировку экрана и отобразит его на экране. Любая справка по этому вопросу будет полезна. Я новичок в Android.
2 ответа
Решение
Вы можете добавить такой приемник в свою активность:
private LockScreenStateReceiver mLockScreenStateReceiver;
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLockScreenStateReceiver = new LockScreenStateReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
registerReceiver(mLockScreenStateReceiver, filter);
}
public class LockScreenStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// screen is turn off
//("Screen locked");
} else {
//Handle resuming events if user is present/screen is unlocked
count++;
textView.setText(""+count);
//("Screen unlocked");
}
}
}
@Override
public void onDestroy() {
unregisterReceiver(mLockScreenStateReceiver);
super.onDestroy();
}
Вы можете использовать статистику событий, чтобы узнать количество разблокировок. Попробуйте следующий фрагмент кода
void getdailyUsageStatistics(long start_time, long end_time){
int unlockcount=0;
UsageEvents.Event currentEvent;
UsageStatsManager mUsageStatsManager = (UsageStatsManager)
getApplicationContext().getSystemService(Context.USAGE_STATS_SERVICE);
if (mUsageStatsManager != null) {
UsageEvents usageEvents = mUsageStatsManager.queryEvents(start_time, end_time);
while (usageEvents.hasNextEvent()) {
currentEvent = new UsageEvents.Event();
usageEvents.getNextEvent(currentEvent);
if (currentEvent.getEventType() == UsageEvents.Event.KEYGUARD_HIDDEN)
{
++unlockcount;
}
}
} else {
Toast.makeText(getApplicationContext(), "Sorry...", Toast.LENGTH_SHORT).show();
}
Log.e("UNLOCK COUNT",unlockcount+" ");
}