getNativeOrientation()
не возвращает текущую ориентацию устройства, он возвращает что-то вроде того, является ли экран ландшафтом или портретом, когда вы держите его должным образом (на большинстве телефонов он должен возвращать портрет, но я думаю, что на планшетах и телефонах, таких как HTC ChaCha возвращает пейзаж).
Есть несколько способов, чтобы получить текущую ориентацию:
- Рекомендуется: Используйте
Gdx.input.getRotation()
возвращающее вращение устройства в градусах (0, 90, 180, 270) по отношению к его родной ориентации. Используйте его с getNativeOrientation()
, и вы должны иметь возможность получить правильную ориентацию для всех устройств.
Примечание: оно дает вам ориентацию текущего состояния приложения, а не ориентацию устройства как физического объекта. Поэтому, если в вашем манифесте есть android:screenOrientation="landscape"
, этот метод всегда будет возвращать пейзаж.
Пример использования:
int rotation = Gdx.input.getRotation();
if((Gdx.input.getNativeOrientation() == Input.Orientation.Portrait && (rotation == 90 || rotation == 270)) || //First case, the normal phone
(Gdx.input.getNativeOrientation() == Input.Orientation.Landscape && (rotation == 0 || rotation == 180))) //Second case, the landscape device
Gdx.app.log("Orientation", "We are in landscape!");
else
Gdx.app.log("Orientation", "We are in portrait");
Создать интерфейс на родной стороне (Android), передать его в игре.
Если вы используете это в качестве контроля, может быть, вы должны использовать accelerometer или gyroscope вместо