关于安卓的方向传感器

发布于 2022-09-04 04:20:27 字数 2055 浏览 24 评论 0

1.新手每天都碰到很多新问题,今天看书,随着书本写了一个方向传感器的小例子,就是想验证一下是否这么用方向传感器,可是写出来以后,Log出来的值都是0,和书本不一样呀,又上网查了一下,貌似没有写错,可就是结果不对呀
2.贴上全部代码,求大家指点呀

public class MainActivity extends AppCompatActivity {

private SensorManager sensorManager;
private SensorEventListener listener=new SensorEventListener() {

    float[] magValues=new float[3];
    float[] accValues=new float[3];
    float[] r=new float[9];
    float[] values=new float[3];
    @Override
    public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
            accValues=event.values.clone();
            Log.d("MainActivity","accelerometer");//结果不对,为了调试加入的
        }
        else if(event.sensor.getType()==Sensor.TYPE_MAGNETIC_FIELD){
            magValues=event.values.clone();
            Log.d("MainActivity","magnetic");//结果不对,为了调试加入的
        }
        SensorManager.getRotationMatrix(r,null,accValues,magValues);
        SensorManager.getOrientation(r,values);
        Log.d("MainActivity","values[0]="+Math.toDegrees(values[0]));
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    Sensor magneticSensor=sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    Sensor accSensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
      sensorManager.registerListener(listener,magneticSensor,SensorManager.SENSOR_DELAY_GAME);
    sensorManager.registerListener(listener,accSensor,SensorManager.SENSOR_DELAY_GAME);
}

@Override
protected void onDestroy() {
    super.onPause();
    if(sensorManager!=null){
        sensorManager.unregisterListener(listener);
    }
}

}

运行结果永远是
D/MainActivity: accelerometer
D/MainActivity: values[0]=0

就是说magnetic永远触发不了

3.测试的是真机,华为手机,系统是安卓5.0的

要疯了,求指点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

oО清风挽发oО 2022-09-11 04:20:27

今天用了androidstudio自带的模拟器运行,模拟手机的晃动,移动,是能得到数值的,就是说上面的程序对于原生系统应该是没有问题的,难道是华为手机有特别规定?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文