Java onSensorChanged谷歌地图旋转

Java onSensorChanged谷歌地图旋转,java,google-maps,android-studio,android-sensors,compass,Java,Google Maps,Android Studio,Android Sensors,Compass,SensorChange上的有一些错误,我可以将地图朝北移动,我的代码是正确的,但即使手机不移动,它也会一直旋转 @Override protected void onResume() { mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELER

SensorChange上的
有一些错误,我可以将地图朝北移动,我的代码是正确的,但即使手机不移动,它也会一直旋转

 @Override
    protected void onResume() {
        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
        super.onResume();
        mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_STATUS_ACCURACY_LOW);
        mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_STATUS_ACCURACY_LOW);
    }
    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor == mAccelerometer) {
            System.arraycopy(event.values, 0, mLastAccelerometer, 0, event.values.length);
            mLastAccelerometerSet = true;
        } else if (event.sensor == mMagnetometer) {
            System.arraycopy(event.values, 0, mLastMagnetometer, 0, event.values.length);
            mLastMagnetometerSet = true;
        }
        if (mLastAccelerometerSet && mLastMagnetometerSet) {
            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                SensorManager.getRotationMatrix(mR, null, mLastAccelerometer, mLastMagnetometer);
                SensorManager.getOrientation(mR, mOrientation);
                float azimuthInRadians = mOrientation[0];
                float azimuthInDegress = (float)(Math.toDegrees(azimuthInRadians)+360)%360;
                RotateAnimation ra = new RotateAnimation(
                mCurrentDegree,
                -azimuthInDegress,
                Animation.RELATIVE_TO_SELF, 0.5f,
                Animation.RELATIVE_TO_SELF,
                0.5f);

                updateCamera(azimuthInDegress);
                }
            }, 3000);

        }

    }


    private void updateCamera(final Float bearing) {

        CameraPosition pos = CameraPosition.builder().target(latLng).zoom(20).bearing(bearing).build();
        mGoogleMap.moveCamera(CameraUpdateFactory.newCameraPosition(pos));


    }

我已经延迟了5秒,但它不工作,请帮助我谢谢

传感器没有问题。传感器并不总是提供准确的值。其结果取决于许多因素。使用我的库只需从标记类型\u COMPASS或类型\u COMPASS\u FLAT\u开始。你甚至不必担心设备的类型(手机或平板电脑)。你的代码对tablet来说可能是错误的。嘿,我看到了你的github,我只是想知道如何导入它,据说我会把它放到build.gradle编译项目(“:dsensor”);但是仍然没有工作,我错过了什么吗@Hoannguyenna先生,你能给我你现有的工作项目或这个github的例子吗-@HoanNguyenIn Android Studio文件-->新建-->导入模块并导入下载库的目录传感器没有问题。传感器并不总是提供准确的值。其结果取决于许多因素。使用我的库只需从标记类型\u COMPASS或类型\u COMPASS\u FLAT\u开始。你甚至不必担心设备的类型(手机或平板电脑)。你的代码对tablet来说可能是错误的。嘿,我看到了你的github,我只是想知道如何导入它,据说我会把它放到build.gradle编译项目(“:dsensor”);但是仍然没有工作,我错过了什么吗@Hoannguyenna先生,你能给我你现有的工作项目或这个github的例子吗-@HoanNguyenIn Android Studio文件-->新建-->导入模块并导入下载库的目录