Вторник, 2024-03-19, 5:00 PM

Поиск
Меню
Категории раздела
Поддержи проект!
Рекомендуем


Конфигурация и запрос устройств ввода

Иногда необходимо знать какие устройства ввода поддерживаются. Кроме того, часто бывает, что игра не нуждается в полном диапазоне поддерживаемых устройств ввода, например вам не нужен акселерометр и компас. Хорошей практикой является отключение неиспользуемых устройств ввода, на Android в этом случае сохраняется заряд аккумулятора. В следующих разделах мы покажем вам как это сделать.

Отключение акселерометра и компаса (только Android)

В данный момент настройка устройств ввода имеет смысл только на Android. Класс AndroidApplicationConfiguration имеет несколько публичных полей, которые можно установить прежде передачи в AndroidApplication.initialize() метод.

Предположим что игра не нуждается в акселерометре и компасе, тогда можно отключить эти устройства ввода следующим образом:

public class MyGameActivity extends AndroidApplication {
   @Override
   public void onCreate (Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
      config.useAccelerometer = false;
      config.useCompass = false;
      initialize(new MyGame(), config);
   }
}

По умолчанию акселерометр и компас включены. Приведенный выше код отключает их и таким образом сохраняет драгоценный заряд батареи.

Запрос доступных устройств ввода

Чтобы проверить наличие конкретного устройства на платформе для работающего в настоящий момент приложения, вы можете воспользоваться Input.isPeripheralAvailable() методом.

boolean hardwareKeyboard = Gdx.input.isPeripheralAvailable(Peripheral.HardwareKeyboard);
boolean multiTouch = Gdx.input.isPeripheralAvailable(Peripheral. MultitouchScreen);

Чтобы увидеть остальные доступные констант смотрите Peripheral перечисление.

Отметим, что всего в нескольких Android устройствах имеется аппаратная клавиатура. Даже если клавиатура физически присутствует, пользователь может ее не выдвинуть. В этом случае выше описанные метод вернет false.