Как отслеживать время «на экране» на Android?

Я пытаюсь сделать что-то (теоретически) просто с моим первым приложением, но мне нужна помощь при запуске. Я хотел бы создать приложение, которое расскажет мне, как долго экран на моем Nexus 4 был сегодня.

Android показывает мне, как долго экран был включен с последнего заряда через «Настройка»> «Аккумулятор»> «Экран», но я не уверен, как разбирать эти данные или как ограничить его до текущего дня. До сих пор мои исследования показывают, что batterystats.bin связан с отслеживанием экрана, описанным выше, и что я могу использовать ACTION_SCREEN_ON и ACTION_SCREEN_OFF для этого, но я не уверен, что именно это я и ищу.

Есть идеи?

Я знаю, что это старый вопрос, но, надеюсь, это поможет кому-то.

В рамках моей службы я слушаю действия SCREEN_ON / SCREEN_OFF и получаю разницу между двумя моментами и сохраняю их в sharedpreferences в обратном вызове onDestroy.

BroadcastReceiver mybroadcast = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.i("[BroadcastReceiver]", "MyReceiver"); if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){ startTimer = System.currentTimeMillis(); } else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){ endTimer = System.currentTimeMillis(); screenOnTime = endTimer - startTimer; if(screenOnTime < TIME_ERROR) { times.add(screenOnTime); } } } }; 

Служба запускается при загрузке и при замене пакета (я считаю это полезным для отладки).

 public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, ScreenOnService.class); context.startService(i); } } 

И вот мой манифест для вещательного приемника

  <receiver android:name=".BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" android:path="com.application.test" /> </intent-filter> </receiver> 
Intereting Posts
Обнаруживать, когда RecyclerView достигает нижней позиции при прокрутке В чем разница между передачей этого класса и ClassName.this из обработчика события при передаче в конструктор Intent? API Android Google Maps v2 – перетаскиваемые и видимые методы MarkerOptions Фоновая служба Android для приложения чата Smack (XMPP) API API геолокации Android BroadcastReceiver не запускается Учебник для начинающих для Arduino Mega ADK Com.android.dex.DexException: несколько файлов dex определяют Создать список ViewPager: элементы списка пустые В libgdx, как мне получить вход с кнопки «Назад»? Android делает полноэкранный режим Dialog со строкой состояния, показывающей Android: как получить текущий день недели (понедельник и т. Д.) На языке пользователя? Импорт пользовательского SO-файла в AOSP WebView – невозможно загрузить файл, не запрашивая его дважды? Подключение по имени службы Bluetooth Android: как обновить Android-приложение с помощью билета inapp?