首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SENSOR_ACCELEROMETER (Android)精度固定为0

SENSOR_ACCELEROMETER (Android)精度固定为0
EN

Stack Overflow用户
提问于 2011-05-16 23:40:55
回答 1查看 2.9K关注 0票数 2

我正在编写一个需要从加速计传感器获取数据的应用程序。

我已经覆盖了onAccuracyChanged()和onSensorChanged()函数。支持只有当传感器的精度或值发生变化时才调用这些函数,但在我的例子中,它们每秒变化多次,并且总是返回相同的值。

代码语言:javascript
复制
    @Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    if(sensor.getType()==Sensor.TYPE_ACCELEROMETER){
        Log.d(TAG, "Accuracy has changed: "+accuracy);
    }
}

@Override
public void onSensorChanged(SensorEvent event) {
    if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
        x = event.values[SensorManager.DATA_X];
        y = event.values[SensorManager.DATA_Y];
        z = event.values[SensorManager.DATA_Z];
        Log.d(TAG, "Sensor changed: "+ event.accuracy+", "+x+", "+y+", "+z);
    }       
}

这很烦人,但精度总是0 (SensorManager.SENSOR_STATUS_UNRELIABLE)也很烦人,所以我不能相信它。

可能会发生什么?该设备是三星Galaxy S,所以它有加速度计。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-08-09 18:24:56

U可以返回的值是浮点值,并且非常精确。只有当手机在特定位置时,你才能将它们转换为整数甚至使用条件才能得到结果。

代码语言:javascript
复制
@Override
public void onSensorChanged(SensorEvent event) {

    if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){

        x = event.values[SensorManager.DATA_X];

        y = event.values[SensorManager.DATA_Y];

        z = event.values[SensorManager.DATA_Z];

        if( x > -3 && x < 3  && y > -3 && y < 3  && z < -7 && z > -13  ){
         // this will return value only when the phone is upside down on the table
         // u can set as ur own liking
         Log.d(TAG, "Sensor changed: "+ event.accuracy+", "+x+", "+y+", "+z);
        }
    }       
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6019800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档