- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在考虑实现 Android 4.4 ( http://youtu.be/yv9jskPvLUc ) 中引入的步进传感器 API。但是,我无法找到关于在后台监控的推荐方法是什么的明确解释?似乎大多数示例只展示了如何在应用程序运行时通过 Activity 执行此操作。我并不特别需要高频率的更新——我基本上想记录用户每小时走到后端服务的步数。我应该只启动一个在 SensorManager 上调用 registerListener 的后台服务,还是有更优雅的方法?
最佳答案
据我所知,没有办法绕过 SensorManager
,但如果您很少需要数据,您可以手动触发传感器并使用 TriggerEventListener< 获取其值
,它比 SensorEventListener
更简洁。
AlarmManager
通常是启动每小时计时器的最佳选择,即使您的应用未运行,它也能正常工作。 AlarmManager
将 Intent
发送到扩展 BroadcastReceiver
的类,该类将启动您的 Service
。 AlarmManager
可以根据您的实现设置在应用中的任何位置。
计步服务
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/
我正在考虑实现 Android 4.4 ( http://youtu.be/yv9jskPvLUc ) 中引入的步进传感器 API。但是,我无法找到关于在后台监控的推荐方法是什么的明确解释?似乎大多数
我目前正在开发一个应用程序来跟踪步数。 为了跟踪步数,我使用手机的以下传感器:Sensor.TYPE_STEP_COUNTER 这对于我测试过的所有设备都运行良好。最近我有机会在三星 S10 设备上测
我正在尝试使用 KitKat SDK 开发计步器应用。但是我一直收到此错误,并且传感器类中没有 TYPE_STEP_COUNTER。 谁能帮我找出问题所在? 更新: 在此处添加代码: mSens
我是一名优秀的程序员,十分优秀!