gpt4 book ai didi

android - 在后台服务中使用 TYPE_STEP_COUNTER?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:44 24 4
gpt4 key购买 nike

我正在考虑实现 Android 4.4 ( http://youtu.be/yv9jskPvLUc ) 中引入的步进传感器 API。但是,我无法找到关于在后台监控的推荐方法是什么的明确解释?似乎大多数示例只展示了如何在应用程序运行时通过 Activity 执行此操作。我并不特别需要高频率的更新——我基本上想记录用户每小时走到后端服务的步数。我应该只启动一个在 SensorManager 上调用 registerListener 的后台服务,还是有更优雅的方法?

最佳答案

据我所知,没有办法绕过 SensorManager,但如果您很少需要数据,您可以手动触发传感器并使用 TriggerEventListener< 获取其值,它比 SensorEventListener 更简洁。

AlarmManager 通常是启动每小时计时器的最佳选择,即使您的应用未运行,它也能正常工作。 AlarmManagerIntent 发送到扩展 BroadcastReceiver 的类,该类将启动您的 ServiceAlarmManager 可以根据您的实现设置在应用中的任何位置。

计步服务

SensorManager sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor stepCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
sensorManager.requestTriggerSensor(listener, stepCounter);

private TriggerEventListener listener = new TriggerEventListener(){
@Override
public void onTrigger(TriggerEvent event) {
//handle step count here
}
}

主 Activity

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, AlarmReceiver.class);
PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,
PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,AlarmManager.INTERVAL_HOUR,
AlarmManager.INTERVAL_HOUR, alarmIntent);

报警接收器

public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, StepCountService.class);
context.startService(service);
}
}

关于android - 在后台服务中使用 TYPE_STEP_COUNTER?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com