有没有办法检测我当前运行的设备是否安装了硬件键盘?
无论如何,我如何查询设备功能?
“getResources().getConfiguration().keyboard 提供的标志是检查哪个键盘(如果有)可用的好方法。” [1]
http://d.android.com/reference/android/content/res/Configuration.html#keyboard
使用以下方法随时确定是否存在硬键盘:(
据我所知,软键盘都缺少以下测试的功能)
public static boolean isHardKB(Context ctx) {
Configuration cf = ctx.getResources().getConfiguration();
return cf.navigation==Configuration.NAVIGATION_DPAD
|| cf.navigation==Configuration.NAVIGATION_TRACKBALL
|| cf.navigation==Configuration.NAVIGATION_WHEEL;
}
可选择通过AndroidManifest为每个受影响的 Activity捕获所有运行时键盘更改:
android:configChanges="keyboard|keyboardHidden|navigation"
但请务必使用(至少)一个虚拟onConfigurationChanged()来支持上述清单更改
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Optionally employ 'isHardKB()'
}
要检测连接的常见 qwerty 键盘,请使用以下命令:
private boolean isKeyboardConnected() {
return getResources().getConfiguration().keyboard == KEYBOARD_QWERTY;
}