如何降低Android,java上的传感器敏感度?

如何降低Android,java上的传感器敏感度?,第1张

概述再次,我需要你的帮助, 我有一个很好的类CustomSensorEventListener(见下文) 所有数据,如方位角,民意调查,投球,我得到的正确. 我在屏幕上有单个图像,根据传感器方向移动. 然而,传感器太敏感,我的意思是在任何纳米变化,我的图像略有移动. 像颤抖的东西.如何降低传感器级别,使其像Android上的相机一样. 如您所知,相机在任何传感器更换时都不会颤抖. 谢谢, public 再次,我需要你的帮助,

我有一个很好的类CustomSensorEventListener(见下文)

所有数据,如方位角,民意调查,投球,我得到的正确.

我在屏幕上有单个图像,根据传感器方向移动.

然而,传感器太敏感,我的意思是在任何纳米变化,我的图像略有移动.

像颤抖的东西.如何降低传感器级别,使其像Android上的相机一样.

如您所知,相机在任何传感器更换时都不会颤抖.

谢谢,

public class CustomSensorEventListener implements SensorEventListener {float[] inR = new float[16];float[] I = new float[16];float[] gravity = new float[3];float[] geomag = new float[3];float[] orIEntVals = new float[3];public static double azimuth = 0;public static double pitch = 0;static double roll = 0;private display mdisplay;public CustomSensorEventListener(display display){    mdisplay = display;     }@OverrIDepublic voID onAccuracyChanged(Sensor sensor,int accuracy) { // Todo auto-generated method stub}@OverrIDepublic voID onSensorChanged(SensorEvent sensorEvent) {    // If the sensor data is unreliable return    if (sensorEvent.accuracy == SensorManager.SENSOR_STATUS_UNREliABLE)        return;    // Gets the value of the sensor that has been changed    switch (sensorEvent.sensor.getType()) {          case Sensor.TYPE_ACCELEROMETER:            gravity = sensorEvent.values.clone();            break;        case Sensor.TYPE_MAGNETIC_FIELD:            geomag = sensorEvent.values.clone();            break;    }    // If gravity and geomag have values then find rotation matrix    if (gravity != null && geomag != null) {        // checks that the rotation matrix is found        boolean success = SensorManager.getRotationMatrix(inR,I,gravity,geomag);        float[] outR = new float[16];        if (success) {            SensorManager.remapCoordinateSystem(inR,SensorManager.AXIS_Y,SensorManager.AXIS_MINUS_Z,outR);//              display display = mContext.getwindowManager().getDefaultdisplay();             int deviceRot = mdisplay.getRotation();            switch (deviceRot)            {            // portrait - normal            case Surface.ROTATION_0: SensorManager.remapCoordinateSystem(inR,SensorManager.AXIS_X,SensorManager.AXIS_Z,outR);            break;            // rotated left (landscape - keys to bottom)            case Surface.ROTATION_90: SensorManager.remapCoordinateSystem(inR,SensorManager.AXIS_MINUS_X,outR);             break;            // upsIDe down            case Surface.ROTATION_180: SensorManager.remapCoordinateSystem(inR,outR);             break;            // rotated right            case Surface.ROTATION_270: SensorManager.remapCoordinateSystem(inR,outR);             break;            default:  break;            }            SensorManager.getorIEntation(outR,orIEntVals);            azimuth = Math.todegrees(orIEntVals[0]);            pitch = Math.todegrees(orIEntVals[1]);            roll = Math.todegrees(orIEntVals[2]);        }        //Log.v("MA","Az: "+azimuth+",Pi: "+pitch+",Ro: "+roll);    }}};
@H_301_28@解决方法 您可以使用低通滤波器来滤除抖动,振动和突然快速移动.滤波器允许较慢的移动,例如根据特定的截止频率改变旋转角度.

更多信息和实施细节:Low-Pass-Filter-To-Android-Sensors

Smoothing Sensor Data with a Low-Pass Filter

有关低通滤波器的更多信息(维基百科):Low-pass filter

总结

以上是内存溢出为你收集整理的如何降低Android,java上的传感器敏感度?全部内容,希望文章能够帮你解决如何降低Android,java上的传感器敏感度?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1122970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存