Onsensorchanged () не работает только на шагомереAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Onsensorchanged () не работает только на шагомере

Сообщение Anonymous »

Цель создания кода состоит в том, что всякий раз, когда данные из шагометра изменяются, данные передаются в режиме реального времени через функцию onsensorchanged (). Та же функция, данные собираются правильно каждый раз, когда они носят и не любят независимо от вне экрана /на экране. /> Мои симптомы соответствуют ссылке выше, но ни один из ответов на эту проблему не помог мне получить значения шагометра в режиме реального времени.
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.util.Log
import com.health.multisensors.util.JsonFileWriter
import org.json.JSONObject

class PedometerModule(private val context: Context) : SensorEventListener {
private val TAG = "PedometerModule"

private var sensorManager: SensorManager? = null
private var stepCounter: Sensor? = null
private var stepDetector: Sensor? = null
private var initialSteps: Float? = null

fun startTracking() {
Log.i(TAG, "Starting Pedometer tracking...")

sensorManager = context.getSystemService(Context.SENSOR_SERVICE) as SensorManager
stepCounter = sensorManager?.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
stepDetector = sensorManager?.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR)

if (stepCounter == null) {
Log.w(TAG, "Step Counter sensor not available.")
} else {
sensorManager?.registerListener(this, stepCounter, SensorManager.SENSOR_DELAY_NORMAL)
}

if (stepDetector == null) {
Log.w(TAG, "Step Detector sensor not available.")
} else {
sensorManager?.registerListener(this, stepDetector, SensorManager.SENSOR_DELAY_FASTEST)
}
}

fun stopTracking() {
sensorManager?.unregisterListener(this)
Log.i(TAG, "Stopped Pedometer tracking.")
}

**override fun onSensorChanged(event: SensorEvent?) {
if (event == null) return
val timestamp = System.currentTimeMillis()

when (event.sensor.type) {
Sensor.TYPE_STEP_COUNTER -> {
val steps = event.values[0]
if (initialSteps == null) initialSteps = steps
val stepCount = steps - (initialSteps ?: 0f)

Log.d(TAG, "StepCounter: $stepCount at $timestamp")

val json = JSONObject().apply {
put("sensor", "pedometer")
put("timestamp", timestamp)
put("total_steps", steps.toInt())
put("relative_steps", stepCount.toInt())
}
JsonFileWriter.writeJson(context, json)
}

Sensor.TYPE_STEP_DETECTOR -> {
Log.d(TAG, "StepDetector: step detected at $timestamp")

val json = JSONObject().apply {
put("sensor", "step_detector")
put("timestamp", timestamp)
put("step", 1)
}
JsonFileWriter.writeJson(context, json)
}
}
}**

override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
// Not used
}
}
< /code>
Манифест включает в себя передний план и несколько настройки разрешений, как показано ниже, а также функция использования также включает в себя отстрант и Stepdetector. < /p>











```

I've also tried periodically turning the sensor itself off and on, but none of this has been able to fetch stepcount in real-time.


Подробнее здесь: https://stackoverflow.com/questions/796 ... -pedometer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»