有没有一种方法可以检测我当前运行的设备是否安装了硬件键盘?
我怎样查询设备功能呢?
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;
}
private boolean isHardwareKeyboardAvailable() { return getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS; }
- Marcus