У меня есть следующий код для определения угла 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]);
}