我遇到的问题是我的计数完全没有,来自任何计步器,fitbit或三星计步器。
它似乎关闭了,一段时间后没有添加任何步骤。 例如,如果我输入我从3000开始,它会计算一个偏移量并将其存储为共享首选项。它会尝试保持对Sensor的注册。我还存储当前步骤,以便在恢复正在侦听步骤广播的活动时,它将请求输出步骤。
我试过让服务提供通知并成为前台服务,但准确性没有提高,而且它使用了大量的电力,我尝试了一个唤醒锁,结果相似,不准确,并且耗电量过大
目前,我的应用程序没有显示在电源使用情况统计信息中,因此根本不使用电源。硬件传感器应该从加速度计捕获步骤,当它唤醒时,它应该输出最新的步骤。当它更新时,它更接近我设置为步数的值。
我正在使用在某些设备上以kitkat或以上版本提供的步数计数器。以下代码注册传感器。
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if (null != sensor)
{
sensorManager.registerListener(this, sensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
这是我构建的OnCreate服务方法。 服务创建为粘性。并使用广播接收器接收活动的开始步骤,以计算偏移量。它还广播已经发生的步骤。这是更多的代码。
class MyBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_REQUEST_STEPS))
{
SendStepBroadcast(currentSteps);
}
else if (intent.getAction().equals(ACTION_SET_STEPS))
{
setSteps = intent.getFloatExtra(
STEPS_OCCURRED, -1);
SendStepBroadcast(setSteps);
}
}
}
@Override
public void onSensorChanged(SensorEvent event) {
if (setSteps > -1) {
offset = setSteps - event.values[0] + 1;
SharedPreferences prefs = getSharedPreferences("com.halfwaythere",
MODE_PRIVATE);
prefs.edit().putFloat("offset", offset).apply();
setSteps = -1;
}
currentSteps = event.values[0] + offset;
SharedPreferences prefs = getSharedPreferences("com.halfwaythere",
MODE_PRIVATE);
prefs.edit().putFloat("currentSteps", currentSteps).apply();
SendStepBroadcast(currentSteps);
}
private void SendStepBroadcast(float steps) {
Intent broadcastSteps = new Intent();
broadcastSteps.setAction(ACTION_STEPS_OCCURRED);
broadcastSteps.putExtra(STEPS_OCCURRED, steps);
this.sendBroadcast(broadcastSteps);
}
在Activity中,以下代码用于启动服务:
@Override
protected void onStart() {
super.onStart();
Intent intent = new Intent(this, StepService.class);
startService(intent);
}
我最近尝试解决这个问题,我尝试了以下方法:
谢谢,如果您需要任何其他信息,请告诉我。
答案 0 :(得分:0)
从我的研究中:
所以我将应用我发现并继续使用我的应用程序,应该在7月中旬在App Store上。