0

我正在编写一个从 API 级别 19 开始针对 8 Oreo 的 Android 应用程序。我想查询Sensor.TYPE_STEP_COUNTER. 由于据我了解无法直接读取当前值,因此我必须创建一个 SensorEventListener 等待onSensorChanged(SensorEvent event). 我该如何正确地做到这一点JobIntentService?由于onHandleWork(@NonNull Intent intent)是为了完成一项工作然后完成,我目前的解决方案是阻塞线程:

/// we need to wait for the sensor to return it's data in onSensorChanged
while (isWaitingForSensor) {
    /// block the thread to not end the Job
    try {
        Thread.sleep(SLEEP_TIME_MS);
        waitTime += SLEEP_TIME_MS;
        if (waitTime >= MAX_WAIT_TIME) {
            isWaitingForSensor = false;
        }
    } catch (InterruptedException e) {
    }
}

并进一步在我的SensorEventListener

public void onSensorChanged(SensorEvent event) {
    int stepCount = event.values[0];
    ...
    isWaitingForSensor = false;
}

有人对此有更好和更节省的解决方案吗?

4

0 回答 0