Skip to content

Commit 388b64f

Browse files
committed
Refactored sensors code, fixed an issue where sound would turn off late in wine glasses
1 parent e5b4b38 commit 388b64f

23 files changed

Lines changed: 198 additions & 587 deletions

watch/app/src/main/java/com/imsproject/watch/Properties.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ var OPPONENT_RADIUS_OUTER_EDGE = 0f
7474
var OPPONENT_ARC_TOP_LEFT = Offset(0f,0f)
7575
var OPPONENT_ARC_SIZE = Size(0f,0f)
7676

77+
// tracks
78+
const val LOW_BUILD_IN_TRACK = 0
79+
const val LOW_LOOP_TRACK = 1
80+
const val LOW_BUILD_OUT_TRACK = 2
81+
const val HIGH_LOOP_TRACK = 4
82+
7783
// ================= Flour Mill ===================== |
7884

7985
const val AXLE_STARTING_ANGLE = -90f

watch/app/src/main/java/com/imsproject/watch/sensors/BaseListener.java

Lines changed: 0 additions & 60 deletions
This file was deleted.

watch/app/src/main/java/com/imsproject/watch/sensors/ConnectionManager.java

Lines changed: 0 additions & 75 deletions
This file was deleted.

watch/app/src/main/java/com/imsproject/watch/sensors/ConnectionObserver.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

watch/app/src/main/java/com/imsproject/watch/sensors/HeartRateData.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

watch/app/src/main/java/com/imsproject/watch/sensors/HeartRateListener.java

Lines changed: 0 additions & 65 deletions
This file was deleted.
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.imsproject.watch.sensors
2+
3+
import android.content.Context
4+
import android.util.Log
5+
import com.imsproject.common.gameserver.SessionEvent
6+
import com.imsproject.watch.viewmodel.GameViewModel
7+
import com.samsung.android.service.health.tracking.ConnectionListener
8+
import com.samsung.android.service.health.tracking.HealthTracker
9+
import com.samsung.android.service.health.tracking.HealthTrackerException
10+
import com.samsung.android.service.health.tracking.HealthTrackingService
11+
import com.samsung.android.service.health.tracking.data.DataPoint
12+
import com.samsung.android.service.health.tracking.data.HealthTrackerType
13+
import com.samsung.android.service.health.tracking.data.ValueKey
14+
15+
class HeartRateSensorHandler() {
16+
private var healthService: HealthTrackingService? = null
17+
private var tracker: HealthTracker? = null
18+
19+
fun connect(context: Context, onConnectionResponse: (Boolean, HealthTrackerException?) -> Unit) {
20+
val healthService = HealthTrackingService(
21+
object : ConnectionListener {
22+
override fun onConnectionSuccess() = onConnectionResponse(true,null)
23+
override fun onConnectionFailed(e: HealthTrackerException) {
24+
healthService = null
25+
onConnectionResponse(false,e)
26+
}
27+
override fun onConnectionEnded() {}
28+
}, context)
29+
this.healthService = healthService
30+
healthService.connectService()
31+
}
32+
33+
fun disconnect() {
34+
tracker?.unsetEventListener()
35+
healthService?.disconnectService()
36+
tracker = null
37+
healthService = null
38+
}
39+
40+
fun startTracking(gameViewModel: GameViewModel) {
41+
42+
// validate healthService and tracker
43+
val healthService = healthService ?: throw IllegalStateException("Health service not connected")
44+
val tracker = healthService.getHealthTracker(HealthTrackerType.HEART_RATE_CONTINUOUS)
45+
?: throw IllegalStateException("Heart rate tracking not supported")
46+
47+
tracker.setEventListener(object : HealthTracker.TrackerEventListener {
48+
override fun onDataReceived(dataPoints: List<DataPoint>) = dataPoints.forEach {
49+
val (hr,ibi) = it.toHeartRateData()
50+
gameViewModel.addEvent(
51+
SessionEvent.heartRate(
52+
gameViewModel.playerId,
53+
gameViewModel.getCurrentGameTime(),
54+
"${hr};${ibi}"
55+
)
56+
)
57+
}
58+
override fun onFlushCompleted() = Unit
59+
override fun onError(error: HealthTracker.TrackerError) {
60+
Log.e(TAG, "Error: $error")
61+
}
62+
})
63+
this.tracker = tracker
64+
}
65+
66+
private fun DataPoint.toHeartRateData() =
67+
getValue(ValueKey.HeartRateSet.HEART_RATE) to
68+
(getValue(ValueKey.HeartRateSet.IBI_LIST).lastOrNull() ?: 0)
69+
70+
companion object {
71+
private const val TAG = "HeartRateMonitor"
72+
}
73+
}

watch/app/src/main/java/com/imsproject/watch/sensors/HeartRateStatus.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)