-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Description
Affected app
Name: Coronamelder
Package id: nl.rijksoverheid.en
Describe the bug
Exposure notifications do not actually work unless bluetooth and location services are enabled. The Google Play Services implementation apparently enables bluetooth and location services when the exposure notification service is enabled (possible after asking for confirmation) and some apps (in particular the Dutch Coronamelder) seem to rely on this happening. Additionally, Google Play Services apparently shows a notification when bluetooth or location services are disabled when GAEN is enabled to remind the user that tracking is disabled.
To Reproduce
Steps to reproduce the behavior:
- Install the Coronamelder app
- Disable bluetooth or location services
- Click through the setup wizard, click the "Turn on" button
- Microg asks to enable GAEN, confirm
- Coronamelder keeps showing "App is not active", because it checks for bluetooth and location status.
Expected behavior
When you click the "Turn on" button and Coronamelder requests to enable the GAEN framework, microg should (ask to) enable bluetooth and location services too, so that tapping "Turn on" actually results in the Coronamelder showing an active status afterwards.
Note that this should probably also happen when tapping the "Turn on" button when GAEN is already enabled but bluetooth and/or location is not (iow, if a request to enable GAEN is received when it is already enabled, bluetooth and location should still be (asked to) enabled).
Implementing the same notifications when you turn off bluetooth or location services while GAEN is enabled would also be helfpful.
System
Android Version: 7.1.2
Custom ROM: Fairphone Open
microG
microG Core version: 0.2.14.204215
microG Self-Check results: All ticked
Additional context
See minvws/nl-covid19-notification-app-android#31 for the related issue on the CoronaMelder repo.
I also tried CoronaMelder on Google Play Services device, where I found that:
- When you click "Turn on" when first enabling GAEN, it shows a popup like microg does now. Google Play Services then automatically (without asking) enables bluetooth and asks to enable location:

- When you later disable bluetooth, CoronaMelder shows the "Turn on" button again. When you click it, Play Services shows the original "Turn on EN" popup again, and if you allow that, enables bluetooth.
- When you later disble location services, CoronaMelder shows the "Turn on" button again. When you click it, the Android location settings window is shown where you can enable location settings (this happens both with Play Services and microg, so I suspect that CoronaMelder maybe handles this without involving GEAN).
- When you later disable bluetooth and/or location services, a notification is shown indicating you need to enable on or both (depending on which is disabled):

- When you click that notification, you end up in the Play Services GEAN settings:

- When you click "turn on" in the GEAN settings, Play Services enables location and bluetooth without further prompts.
Here's some logcat output from using CoronaMelder with microg on my FP2, which hopefully make it clearer what the app does exactly when the "Turn on" button is pressed. Note that there are some exceptions in here, but I think they would not be causing this (but correct me if I'm wrong or these need further investigation). I also tried to make some logcat captures on the Play Services device, but that spewed so much unrelated output that I gave up. If it would be helpful to have some (specific) output from there, let me know and I'll try harder.
On the Fairphone, clicking "Turn on" in Coronamelder for the first time shows a microg popup asking to enable GAEN and logcat shows:
12-09 19:33:03.361 20220 20253 D ExposureNotification: Created instance 108315189 of database for ExposureNotificationService
12-09 19:33:03.409 20220 20253 D ExposureNotification: Created instance 141608342 of database for ExposureNotificationService
12-09 19:33:03.419 20220 20253 D ExposureNotification: Pending: Intent { act=org.microg.gms.nearby.exposurenotification.CONFIRM pkg=com.google.android.gms cmp=com.google.android.gms/org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity (has extras) }
12-09 19:33:03.420 20220 20253 D ExposureNotification: Pending: PendingIntent{d6ba522: android.os.BinderProxy@d71dbb3}
12-09 19:33:03.425 6835 8352 I ActivityManager: START u0 {act=org.microg.gms.nearby.exposurenotification.CONFIRM pkg=com.google.android.gms cmp=com.google.android.gms/org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity (has extras)} from uid 10221 on display 0
12-09 19:33:03.461 6835 8352 D ActivityTrigger: activityStartTrigger: Activity is Triggerred in full screen ApplicationInfo{d8014ee com.google.android.gms}
12-09 19:33:03.461 6835 8352 E ActivityTrigger: activityStartTrigger: not whiteListedcom.google.android.gms/org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity/204215028
12-09 19:33:03.462 6835 8352 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:33:03.462 6835 8352 D CompatibilityInfo: applicationDensity - 480
12-09 19:33:03.462 6835 8352 D CompatibilityInfo: applicationScale - 1.0
12-09 19:33:03.469 6835 8352 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{d8014ee com.google.android.gms} is now in focus and seems to be in full-screen mode
12-09 19:33:03.470 6835 8352 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.google.android.gms/org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity/204215028
12-09 19:33:03.470 6835 8352 D ActivityTrigger: ActivityTrigger activityPauseTrigger
12-09 19:33:03.478 6835 24087 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{d8014ee com.google.android.gms} is now in focus and seems to be in full-screen mode
12-09 19:33:03.478 6835 24087 E ActivityTrigger: activityResumeTrigger: not whiteListedcom.google.android.gms/org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity/204215028
12-09 19:33:03.493 6835 24087 I ActivityManager: Start proc 20916:com.google.android.gms:ui/u0a221 for activity com.google.android.gms/org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity
12-09 19:33:03.493 6835 24087 W System : ClassLoader referenced unknown path: /system/framework/QPerformance.jar
12-09 19:33:03.494 6835 24087 E BoostFramework: BoostFramework() : Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
12-09 19:33:03.495 6835 24087 E BoostFramework: Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference
12-09 19:33:03.515 6835 27784 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:33:03.515 6835 27784 D CompatibilityInfo: applicationDensity - 480
12-09 19:33:03.515 6835 27784 D CompatibilityInfo: applicationScale - 1.0
12-09 19:33:03.525 6835 27784 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:33:03.525 6835 27784 D CompatibilityInfo: applicationDensity - 480
12-09 19:33:03.525 6835 27784 D CompatibilityInfo: applicationScale - 1.0
12-09 19:33:03.578 6835 20498 I Xposed : FakeGApps: returning fake signature to com.google.android.gms
12-09 19:33:03.599 20916 20916 I MultiDex: VM with version 2.1.0 has multidex support
12-09 19:33:03.613 20916 20916 I MultiDex: Installing application
12-09 19:33:03.613 20916 20916 I MultiDex: VM has multidex support, MultiDex support library is disabled.
12-09 19:33:03.797 20916 20916 W art : Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
12-09 19:33:03.846 20916 20916 I art : Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
12-09 19:33:03.846 20916 20916 I art : at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2463)
12-09 19:33:03.846 20916 20916 I art : at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:938)
12-09 19:33:03.846 20916 20916 I art : at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:806)
12-09 19:33:03.846 20916 20916 I art : at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:693)
12-09 19:33:03.846 20916 20916 I art : at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:170)
12-09 19:33:03.846 20916 20916 I art : at void org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity.onCreate(android.os.Bundle) (ExposureNotificationsConfirmActivity.kt:35)
12-09 19:33:03.846 20916 20916 I art : at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6723)
12-09 19:33:03.846 20916 20916 I art : at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1119)
12-09 19:33:03.846 20916 20916 I art : at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2619)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2727)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1478)
12-09 19:33:03.846 20916 20916 I art : at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
12-09 19:33:03.846 20916 20916 I art : at void android.os.Looper.loop() (Looper.java:154)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6128)
12-09 19:33:03.846 20916 20916 I art : at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-09 19:33:03.846 20916 20916 I art : at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:889)
12-09 19:33:03.846 20916 20916 I art : at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:779)
12-09 19:33:03.846 20916 20916 I art : at void de.robv.android.xposed.XposedBridge.main(java.lang.String[]) (XposedBridge.java:107)
12-09 19:33:03.846 20916 20916 I art : Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/system/framework/com.android.location.provider.jar", zip file "/data/app/com.google.android.gms-1/base.apk"],nativeLibraryDirectories=[/data/app/com.google.android.gms-1/lib/arm, /data/app/com.google.android.gms-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
12-09 19:33:03.846 20916 20916 I art : at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
12-09 19:33:03.846 20916 20916 I art : at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
12-09 19:33:03.846 20916 20916 I art : at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
12-09 19:33:03.846 20916 20916 I art : at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2463)
12-09 19:33:03.846 20916 20916 I art : at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:938)
12-09 19:33:03.846 20916 20916 I art : at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:806)
12-09 19:33:03.846 20916 20916 I art : at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:693)
12-09 19:33:03.846 20916 20916 I art : at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:170)
12-09 19:33:03.846 20916 20916 I art : at void org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity.onCreate(android.os.Bundle) (ExposureNotificationsConfirmActivity.kt:35)
12-09 19:33:03.846 20916 20916 I art : at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6723)
12-09 19:33:03.846 20916 20916 I art : at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1119)
12-09 19:33:03.846 20916 20916 I art : at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2619)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2727)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1478)
12-09 19:33:03.846 20916 20916 I art : at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
12-09 19:33:03.846 20916 20916 I art : at void android.os.Looper.loop() (Looper.java:154)
12-09 19:33:03.846 20916 20916 I art : at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6128)
12-09 19:33:03.846 20916 20916 I art : at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-09 19:33:03.846 20916 20916 I art : at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:889)
12-09 19:33:03.846 20916 20916 I art : at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:779)
12-09 19:33:03.846 20916 20916 I art : at void de.robv.android.xposed.XposedBridge.main(java.lang.String[]) (XposedBridge.java:107)
12-09 19:33:03.846 20916 20916 I art :
12-09 19:33:03.931 20916 20916 W ResourceType: ResTable_typeSpec entry count inconsistent: given 222, previously 226
12-09 19:33:03.931 20916 20916 W ResourceType: ResTable_typeSpec entry count inconsistent: given 179, previously 744
12-09 19:33:03.999 20916 20936 I Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 06/17/16, f19e6a9, I9e7a63e7c4
12-09 19:33:04.005 20916 20936 I OpenGLRenderer: Initialized EGL, version 1.4
12-09 19:33:04.006 20916 20936 D OpenGLRenderer: Swap behavior 1
12-09 19:33:04.025 6835 6967 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:33:04.025 6835 6967 D CompatibilityInfo: applicationDensity - 480
12-09 19:33:04.025 6835 6967 D CompatibilityInfo: applicationScale - 1.0
12-09 19:33:04.077 20916 20921 I art : Do partial code cache collection, code=356B, data=28KB
12-09 19:33:04.078 20916 20921 I art : After code cache collection, code=356B, data=28KB
12-09 19:33:04.078 20916 20921 I art : Increasing code cache capacity to 128KB
12-09 19:33:04.078 6835 6859 I ActivityManager: Displayed com.google.android.gms/org.microg.gms.nearby.core.ui.ExposureNotificationsConfirmActivity: +600ms
Then, after clicking "Allow" or something in the microg popup:
12-09 19:33:08.325 20916 20916 W System : ClassLoader referenced unknown path: /system/framework/QPerformance.jar
12-09 19:33:08.326 20916 20916 E BoostFramework: BoostFramework() : Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
12-09 19:33:08.372 6835 27200 D ActivityTrigger: ActivityTrigger activityPauseTrigger
12-09 19:33:08.380 6835 32619 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{c01a1b0 nl.rijksoverheid.en} is now in focus and seems to be in full-screen mode
12-09 19:33:08.380 6835 32619 E ActivityTrigger: activityResumeTrigger: not whiteListednl.rijksoverheid.en/nl.rijksoverheid.en.MainActivity/78961
12-09 19:33:08.380 6835 32619 D ActivityTrigger: activityResumeTrigger: The activity in ApplicationInfo{c01a1b0 nl.rijksoverheid.en} is now in focus and seems to be in full-screen mode
12-09 19:33:08.380 6835 32619 E ActivityTrigger: activityResumeTrigger: not whiteListednl.rijksoverheid.en/nl.rijksoverheid.en.MainActivity/78961
12-09 19:33:08.443 20220 20253 D ExposureNotification: Created instance 50258153 of database for ExposureNotificationService
12-09 19:33:08.488 6835 6852 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:33:08.488 6835 6852 D CompatibilityInfo: applicationDensity - 480
12-09 19:33:08.489 6835 6852 D CompatibilityInfo: applicationScale - 1.0
12-09 19:33:08.490 20220 20220 D ExposureNotification: ServiceTrigger: Intent { flg=0x10 cmp=com.google.android.gms/org.microg.gms.nearby.exposurenotification.ServiceTrigger }
12-09 19:33:08.491 20220 20220 D ExposureNotification: Trigger class org.microg.gms.nearby.exposurenotification.ScannerService
12-09 19:33:08.494 6835 7503 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:33:08.494 6835 7503 D CompatibilityInfo: applicationDensity - 480
12-09 19:33:08.494 6835 7503 D CompatibilityInfo: applicationScale - 1.0
12-09 19:33:08.495 20220 20220 D ExposureNotification: Trigger class org.microg.gms.nearby.exposurenotification.AdvertiserService
12-09 19:33:08.497 6835 20498 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:33:08.497 6835 20498 D CompatibilityInfo: applicationDensity - 480
12-09 19:33:08.497 6835 20498 D CompatibilityInfo: applicationScale - 1.0
12-09 19:33:08.497 20916 20936 D OpenGLRenderer: endAllActiveAnimators on 0x94275500 (RippleDrawable) with handle 0x932d1190
12-09 19:33:08.506 20220 20220 D ExposureNotification: ScannerService.start: Intent { cmp=com.google.android.gms/org.microg.gms.nearby.exposurenotification.ScannerService }
12-09 19:33:08.509 20220 20253 D ExposureNotification: Created instance 240886437 of database for ExposureNotificationService
12-09 19:33:08.511 20220 20220 D ExposureNotification: AdvertisingService.start: Intent { cmp=com.google.android.gms/org.microg.gms.nearby.exposurenotification.AdvertiserService }
12-09 19:33:08.696 6478 6478 W SurfaceFlinger: couldn't log to binary event log: overflow.
12-09 19:33:08.711 20661 20661 I n.c.c.a.m0.a0: Provider GmsCore_OpenSSL not available
The "turn on" screen keeps showing.
Later, clicking "Turn on" again:
12-09 19:38:58.983 6835 7001 D WifiStateMachine: updateCapabilities for config:Jodocusfalse,false
12-09 19:38:59.723 20220 20253 D ExposureNotification: Created instance 262724006 of database for ExposureNotificationService
12-09 19:38:59.775 20220 20253 D ExposureNotification: Created instance 216560953 of database for ExposureNotificationService
12-09 19:38:59.799 6835 6852 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:38:59.799 6835 6852 D CompatibilityInfo: applicationDensity - 480
12-09 19:38:59.799 6835 6852 D CompatibilityInfo: applicationScale - 1.0
12-09 19:38:59.800 20220 20220 D ExposureNotification: ServiceTrigger: Intent { flg=0x10 cmp=com.google.android.gms/org.microg.gms.nearby.exposurenotification.ServiceTrigger }
12-09 19:38:59.800 20220 20220 D ExposureNotification: Trigger class org.microg.gms.nearby.exposurenotification.ScannerService
12-09 19:38:59.802 6835 24087 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:38:59.802 6835 24087 D CompatibilityInfo: applicationDensity - 480
12-09 19:38:59.802 6835 24087 D CompatibilityInfo: applicationScale - 1.0
12-09 19:38:59.803 20220 20220 D ExposureNotification: Trigger class org.microg.gms.nearby.exposurenotification.AdvertiserService
12-09 19:38:59.804 6835 8352 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:38:59.804 6835 8352 D CompatibilityInfo: applicationDensity - 480
12-09 19:38:59.804 6835 8352 D CompatibilityInfo: applicationScale - 1.0
12-09 19:38:59.811 20220 20253 D ExposureNotification: Created instance 22162421 of database for ExposureNotificationService
12-09 19:38:59.813 20220 20220 D ExposureNotification: ScannerService.start: Intent { cmp=com.google.android.gms/org.microg.gms.nearby.exposurenotification.ScannerService }
12-09 19:38:59.815 20220 20220 D ExposureNotification: AdvertisingService.start: Intent { cmp=com.google.android.gms/org.microg.gms.nearby.exposurenotification.AdvertiserService }
12-09 19:38:59.874 6835 6967 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:38:59.874 6835 6967 D CompatibilityInfo: applicationDensity - 480
12-09 19:38:59.874 6835 6967 D CompatibilityInfo: applicationScale - 1.0
12-09 19:38:59.921 6835 6967 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:38:59.921 6835 6967 D CompatibilityInfo: applicationDensity - 480
12-09 19:38:59.921 6835 6967 D CompatibilityInfo: applicationScale - 1.0
12-09 19:38:59.965 6835 6967 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:38:59.965 6835 6967 D CompatibilityInfo: applicationDensity - 480
12-09 19:38:59.965 6835 6967 D CompatibilityInfo: applicationScale - 1.0
12-09 19:38:59.996 6835 6835 D CompatibilityInfo: mCompatibilityFlags - 0
12-09 19:38:59.996 6835 6835 D CompatibilityInfo: applicationDensity - 480
12-09 19:38:59.996 6835 6835 D CompatibilityInfo: applicationScale - 1.0
12-09 19:39:00.006 7060 7060 D KeyguardUpdateMonitor: received broadcast android.intent.action.TIME_TICK
12-09 19:39:00.006 7060 7060 D KeyguardUpdateMonitor: handleTimeUpdate