gpt4 book ai didi

android - SENSOR_ACCELEROMETER (Android) 中的准确度始终为 0

转载 作者:行者123 更新时间:2023-11-29 14:07:19 26 4
gpt4 key购买 nike

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

我已经覆盖了 onAccuracyChanged() 和 onSensorChanged() 函数。假设这些函数仅在传感器的精度或值发生变化时调用,但在我的例子中,它们每秒变化多次,并且始终返回相同的值。

    @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,所以它有加速度计。

谢谢!

最佳答案

你可以返回的值是浮点值并且非常准确您可以将它们转换为整数,甚至可以仅在手机处于特定位置时使用条件来获取结果

@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);
}
}
}

关于android - SENSOR_ACCELEROMETER (Android) 中的准确度始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6019800/

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