SensorManager работает только на некоторых устройствах - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть следующий код для определения угла x и y моего устройства, и оно отлично работает на моем телефоне, но не на планшете (вкладка Samsung galaxy e). Мне было интересно, кто-нибудь имел представление о том, что может заставить его работать на одном устройстве, но не на другом.

Я также гарантировал, что поворот экрана был включен на обоих. Я предполагаю, что у планшета нет сенсора, и то, что я ищу больше всего, это обходной путь. Любая помощь приветствуется. Заранее спасибо!

Исходный код:

double yAngle;
double xAngle;

@Override
protected void onResume() {
    super.onResume();
    sensorManager.unregisterListener(this);
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR),RATE);
}

@Override
public void onSensorChanged(SensorEvent event) {
    float[] rotationMatrix;
    rotationMatrix = new float[16];
    SensorManager.getRotationMatrixFromVector(rotationMatrix, event.values);
    determineOrientation(rotationMatrix);
    lblY.setText(String.format("%.1f", yAngle));
    lblX.setText(String.format("%.1f", xAngle));

}

private void determineOrientation(float[] rotationMatrix){
    //CREATING FLOAT ARRAY OF ORIENTATION VALUES
    float [] orientationValues = new float[3];
    SensorManager.getOrientation(rotationMatrix, orientationValues);
    yAngle = Math.toDegrees(orientationValues[2]);
    xAngle = Math.toDegrees(orientationValues[1]);
}

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете использовать adb shell pm list features для проверки всех поддерживаемых датчиков и других функций.

...