Слушатель событий датчика из неактивного класса - PullRequest
0 голосов
/ 18 мая 2019

Я хочу получить заголовок моего устройства. Для этого я использовал акселерометр и магнитометр, а также реализовал класс. Но когда я вызываю этот класс, класс не возвращает никакого значения. Я новичок в разработке Android. Пожалуйста, помогите мне. Заранее спасибо.

Я попробовал тот же код в основном упражнении, и он работает в основном упражнении.

 public Heading(Context context) {
        this.context = context;

        sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

    }

    public void registerSensor() {
        Sensor sensorAccelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        sensorManager.registerListener(mSensorListener, sensorAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);

        Sensor sensorMagnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
        sensorManager.registerListener(mSensorListener, sensorMagnetic, SensorManager.SENSOR_DELAY_NORMAL);
    }

    public final SensorEventListener mSensorListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                mGravity = event.values;
            }

            if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
                mGeomagnetic = event.values;
            }
            heading = "event";
        }

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

        }
    };
String getHeading() {
    double azimuth = 0.0;

    if (mGravity != null && mGeomagnetic != null) {
        float R[] = new float[9];
        float I[] = new float[9];

        if (SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic)) {
            float[] orientation = new float[3];
            SensorManager.getOrientation(R, orientation);

            azimuth = orientation[0];
        }
        heading = String.valueOf((float)(Math.toDegrees(azimuth)+ 360) % 360);

    }
    return heading;
}

}

Мне нужен заголовок моего устройства.

...