某些设备上的Android STEP_COUNTER随机高值

问题描述 投票:0回答:1

我正在使用SensorLister和STEP_COUNTER模式通过与传感器侦听器一起运行服务来跟踪应用中的步骤。即使其RAW数据也可以在99%的设备上正常运行。但是,有些设备为我提供了具有较高价值(不切实际)的随机数,例如一次读取多出3、4、5、000步。对于像素2XL设备,这尤其明显。

我曾尝试使用Google FIT传感器客户端,但与使用SensorListener一样存在相同的问题。

我试图缩短延迟时间,避免批量处理,在电池设置中包含“不要优化”应用程序,对于适合的API,我尝试使用较小的采样率和较高的采样率。结果相同。

try {
  dataPointListener =
                    new OnDataPointListener() {
                        @Override
                        public void onDataPoint(DataPoint dataPoint) {
                            for (Field field : dataPoint.getDataType().getFields()) {
                                Value val = dataPoint.getValue(field);
                                Log.i("FIT", "Detected DataPoint value: " + val);
                            }
                        }
                    };

            Fitness.getSensorsClient(this, GoogleSignIn.getLastSignedInAccount(this))
                    .add(
                            new SensorRequest.Builder()
                                    .setSamplingRate(10, TimeUnit.SECONDS)
                                    .setDataType(DataType.TYPE_STEP_COUNT_DELTA)
                                    .setAccuracyMode(SensorRequest.ACCURACY_MODE_DEFAULT)
                                    .setFastestRate(5, TimeUnit.SECONDS)
                                    .build(),
                            dataPointListener)
                    .addOnCompleteListener(
                            new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if (task.isSuccessful()) {
                                        Log.i(TAG, "Listener registered!");
                                    } else {
                                        Log.e(TAG, "Listener not registered.", task.getException());
                                    }
                                }
                            });       
} catch (Exception e) {
   e.printStackTrace();
}

它应该像文档中描述的那样输出。

java android google-fit
1个回答
0
投票

[一段时间后,我放弃并切换了Google Fitness API。那是我的解决方案。易于集成,没有提到的问题我找不到解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.