Android两种计步器sensor

public static final int TYPE_STEP_DETECTOR = 18; 
 public static final int TYPE_STEP_COUNTER = 19; 

计步器Feature: 

./native/data/etc/android.hardware.sensor.stepdetector.xml:17 
./native/data/etc/android.hardware.sensor.stepcounter.xml:17: 
    

两种计步器的区别和特点: 

TYPE_STEP_DETECTOR 
This sensor triggers an event each time the user takes a step. Upon each user step, this sensor delivers an event with a value of 1.0 and a timestamp indicating when the step occurred. 

TYPE_STEP_COUNTER 
This sensor also triggers an event upon each detected step, but instead delivers the total accumulated number of steps since this sensor was first registered by an app. 
Be aware that these two step sensors don't always deliver the same results. The TYPE_STEP_COUNTER events occur with a higher latency than those from TYPE_STEP_DETECTOR, but that's because the TYPE_STEP_COUNTER algorithm does more processing to eliminate false positives. So the TYPE_STEP_COUNTER may be slower to deliver events, but its results should be more accurate.




Android KitKat has added a few more hardware sensors to it's API list. Step Sensors are one of them, which looks very promising. Although, not a lot of phones yet have these Step Sensors, in the future, this would gradually become a standard I think. Currently, Nexus 5 has them. 

Let's see how we can interact with these sensors. Basically, there are 2 sensors.  
Step Counter: This keeps a count of the number of steps that you have taken. The counter is only reset when you re-boot the device, else, for every step you take (or the phone thinks you took, you counts up). 

Step Detector: This sensor just detects when you take a step. That's it.  

=====================================================

两种计步器实例代码: 

The example project shows you how to initialize and setup the SensorManager and respond to events from the Sensors. 

   sManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
// Step Counter  
sManager.registerListener(new SensorEventListener() {  
@Override  
public void onSensorChanged(SensorEvent event) {  
    float steps = event.values[0];  
    textViewStepCounter.setText((int) steps + "");  
}  
@Override  
public void onAccuracyChanged(Sensor sensor, int accuracy) {  
}  
}, sManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),  
SensorManager.SENSOR_DELAY_UI); 

// Step Detector  
sManager.registerListener(new SensorEventListener() {  
@Override  
public void onSensorChanged(SensorEvent event) {  
// Time is in nanoseconds, convert to millis  
timestamp = event.timestamp / 1000000;  
}  
@Override  
public void onAccuracyChanged(Sensor sensor, int accuracy) {  
}  
}, sManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),  
SensorManager.SENSOR_DELAY_UI);  




    mStepCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); 
    mStepDetector = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR); 
    mUiHandler = new Handler(Looper.getMainLooper()); 


===============================




  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值