2012-06-03 7 views
2

В последних версиях Android устройства могут иметь программные или аппаратные кнопки. Я хотел бы узнать, что касается устройства, на котором работает мое приложение.Узнайте, имеет ли устройство функциональные клавиши

Некоторая справочная информация. Скрыть функциональные клавиши можно, когда они отображаются на экране, но если вы это сделаете, они автоматически отображаются, если пользователь коснется экрана, который идеально подходит. Теперь, если вы делаете то же самое на устройстве с аппаратными клавишами, первое касание все еще попадает в систему, как если бы оно снова отображало программные клавиши, но поскольку их нет, ничего не происходит, и сенсорное событие не передается в приложение.

ответ

3

Вы можете использовать ViewConfiguration.hasPermanentMenuKey(), чтобы проверить ключ меню.

+0

Спасибо, это отлично работает. (Просто имейте в виду, что это работает только для SDK> = 14) – Julian

+0

Вы правы, но я думаю, что для более низких уровней API вы можете принять ответ. <= 10 всегда должны иметь аппаратные кнопки, а сотовые планшеты не имеют физических кнопок. – Gubbel

+1

это ответ неправильный. документация говорит «Сообщить, если устройство имеет постоянную клавишу меню, доступную для пользователя», а не то, что имеются программные клавиши или нет. – xedo

0

Для клавиатурного вопроса попробуйте

getResources().getConfiguration().keyboard 

, который дает вам одно из следующих действий:

  • KEYBOARD_NOKEYS
  • KEYBOARD_QWERTY
  • KEYBOARD_12KEY

чек на KEYBOARD_NOK EYS.

+0

* источник: http://developer.android.com/reference/android/content/res/Configuration.html#keyboard – libjup

+0

Ну, это для клавиатуры, но мне нужно это для системных кнопок, таких как спина и дом, которые вы можете см. в красной рамке на этом скриншоте: http://i.imgur.com/7QiKu.png – Julian

+0

Извините ... Возможно, неправильно понял ваш вопрос. Я просто проверил документ, но я не уверен, что Android API предоставляет такую ​​функциональность вообще. – libjup