У меня есть следующий код, чтобы получить угол 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]);
}
sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR)
возвращаетnull
, когда датчик не поддерживается устройством. Вы можете зарегистрировать его значение, чтобы увидеть, возвращает ли оноnull
в табличке или нет? - person Umer Farooq   schedule 17.11.2018