onSensorChanged Google Map Rotate

есть какая-то ошибка в onSensorChange, я смог переместить свою карту с северной стороны, мой код был правильным, но он всегда вращается, даже если телефон не движется

 @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 секунд, но она не работает, пожалуйста, помогите мне, спасибо


person Jude Bautista    schedule 28.03.2016    source источник
comment
с датчиком все в порядке. датчики не всегда дают точные значения. его результат зависит от многих факторов.   -  person Sagar Nayak    schedule 28.03.2016
comment
Используйте мою библиотеку github.com/hoananguyen/dsensor, просто начните с флага TYPE_COMPASS или TYPE_COMPASS_FLAT_ONLY. Вам даже не нужно беспокоиться о типе устройства (телефон или планшет). Ваш код будет неправильным для планшета.   -  person Hoan Nguyen    schedule 28.03.2016
comment
Эй, я видел ваш github, и мне просто интересно, как это импортировать, там сказано, что я помещу это в проект компиляции build.gradle (': dsensor'); но все еще не работает, есть ли что-то, что я пропустил? @ХоанНгуен   -  person Jude Bautista    schedule 29.03.2016
comment
Можете ли вы дать мне свой существующий рабочий проект или пример для этого github, сэр? -@ХоанНгуен   -  person Jude Bautista    schedule 29.03.2016
comment
В Android Studio File --> New --> Import Module и импортируйте каталог, в который вы загружаете библиотеку.   -  person Hoan Nguyen    schedule 29.03.2016
comment
Привет @JudeBautista, не могли бы вы найти решение, позволяющее избежать мерцания?   -  person AknKplnoglu    schedule 31.07.2016
comment
@AknKplnoglu Привет, сэр, я уже нашел решение, спасибо,   -  person Jude Bautista    schedule 01.08.2016
comment
@JudeBautista, не могли бы вы поделиться своим решением? Потому что я не мог справиться еще.   -  person AknKplnoglu    schedule 02.08.2016