Для проверить наличие клавиатуры
Выбрать Конфигурацию объекта, используя
Configuration config = getResources().getConfiguration();
... а затем посмотрите на поле keyboard
.
Если значение keyboard
не равно KEYBOARD_NOKEYS , у пользователя есть аппаратная клавиатура.
А для аппаратной камеры ...
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
}