fixup: add missing file

This commit is contained in:
2026-06-14 19:05:59 +02:00
parent 600c1e1407
commit 5e119d948a

View File

@@ -0,0 +1,77 @@
package at.lockstep.player.playback
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.os.Handler
import android.os.HandlerThread
import at.lockstep.player.pasada.LibPasada
/**
* Registers the accelerometer on a background [HandlerThread] and forwards samples to
* [LibPasada.feedAccel]. Owned by [PlaybackService] for the duration of a run session.
*/
class PasadaAccelFeeder(
context: Context,
) {
private val sensorManager = context.applicationContext.getSystemService(SensorManager::class.java)
private val accelerometer = sensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
private val handlerThread = HandlerThread("PasadaAccel").apply { start() }
private val handler = Handler(handlerThread.looper)
@Volatile
private var feedingEnabled = false
private var registered = false
private val listener =
object : SensorEventListener {
override fun onSensorChanged(event: SensorEvent) {
if (!feedingEnabled || event.sensor.type != Sensor.TYPE_ACCELEROMETER) {
return
}
LibPasada.feedAccel(
event.values[0],
event.values[1],
event.values[2],
event.timestamp,
)
}
override fun onAccuracyChanged(
sensor: Sensor?,
accuracy: Int,
) = Unit
}
fun start() {
if (registered || sensorManager == null || accelerometer == null) {
return
}
feedingEnabled = true
sensorManager.registerListener(
listener,
accelerometer,
SensorManager.SENSOR_DELAY_GAME,
0,
handler,
)
registered = true
}
fun stop() {
feedingEnabled = false
if (!registered || sensorManager == null) {
return
}
sensorManager.unregisterListener(listener)
registered = false
}
fun release() {
stop()
handlerThread.quitSafely()
}
}