Skip to content

Commit 05f01db

Browse files
authored
Merge pull request #43 from nicolae-stroncea/unlock_watcher
2 parents 2f68af6 + f9fbea8 commit 05f01db

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

mobile/src/main/java/net/activitywatch/android/watcher/UsageStatsWatcher.kt

+9-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import java.text.ParseException
3232
class UsageStatsWatcher constructor(val context: Context) {
3333
private val TAG = "UsageStatsWatcher"
3434
private val bucket_id = "aw-watcher-android-test"
35+
private val unlock_bucket_id = "aw-watcher-android-unlock"
3536

3637
private val ri = RustInterface(context)
3738
private val isoFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
@@ -145,6 +146,7 @@ class UsageStatsWatcher constructor(val context: Context) {
145146

146147
// TODO: Use other bucket type when support for such a type has been implemented in aw-webui
147148
ri.createBucketHelper(bucket_id, "currentwindow")
149+
ri.createBucketHelper(unlock_bucket_id, "os.lockscreen.unlocks")
148150
lastUpdated = getLastEventTime()
149151
Log.w(TAG, "lastUpdated: ${lastUpdated?.toString() ?: "never"}")
150152

@@ -156,11 +158,17 @@ class UsageStatsWatcher constructor(val context: Context) {
156158
val event = UsageEvents.Event()
157159
usageEvents.getNextEvent(event)
158160
if(event.eventType !in arrayListOf(UsageEvents.Event.ACTIVITY_RESUMED, UsageEvents.Event.ACTIVITY_PAUSED)) {
161+
if(event.eventType == UsageEvents.Event.KEYGUARD_HIDDEN){
162+
val timestamp = DateTimeUtils.toInstant(java.util.Date(event.timeStamp))
163+
// NOTE: getLastEventTime() returns the last time of an event from the activity bucket(bucket_id)
164+
// Therefore, if an unlock happens after last event from main bucket, unlock event will get sent twice.
165+
// Fortunately not an issue because identical events will get merged together (see heartbeats)
166+
ri.heartbeatHelper(unlock_bucket_id, timestamp, 0.0, JSONObject(), 0.0)
167+
}
159168
// Not sure which events are triggered here, so we use a (probably safe) fallback
160169
//Log.d(TAG, "Rare eventType: ${event.eventType}, skipping")
161170
continue@nextEvent
162171
}
163-
164172
val awEvent = Event.fromUsageEvent(event, context, includeClassname = true)
165173
val pulsetime: Double
166174
when(event.eventType) {

0 commit comments

Comments
 (0)