Как определить, есть ли на устройстве аппаратные клавиши НАЗАД и МЕНЮ в DELPHI

Есть ли способ определить, есть ли у пользователя доступ к клавишам НАЗАД и МЕНЮ устройства?

В ANDROID это простой код:

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

Но как это сделать в DELPHI?


person Community    schedule 08.09.2015    source источник


Ответы (1)


Для определения наличия аппаратных ключей этот способ самый простой:

.
.
uses
  Androidapi.KeyCodes,
  Androidapi.JNI.GraphicsContentViewText,
.
.
  TJKeyCharacterMap.JavaClass.deviceHasKey(AKEYCODE_BACK) //To detect hardware BACK
  TJKeyCharacterMap.JavaClass.deviceHasKey(AKEYCODE_MENU) //To detect hardware MENU
.
.

Результат для deviceHasKey — логическое значение.

Все константы кодов клавиш можно найти в модуле Androidapi.KeyCodes.

person pudnivec74    schedule 08.09.2015
comment
см. это: комментарии к ответу: However, you can never be 100% sure about this, since manufacturers can implement deviceHasKey wrong. ... например, OnePlus, кажется, ошибся - person mjn; 08.09.2015
comment
Это дает вам правду, но этот код можно использовать для подавляющего большинства устройств. Конечно, в устройствах будут исключения. Если бы все производители использовали неписаные стандарты, программировать было бы намного проще. - person pudnivec74; 08.09.2015
comment
Это соответствует для меня. На устройствах, которые есть у меня дома, работает. Спасибо, pudnivec74. - person ; 08.09.2015