32

有没有办法检测我当前运行的设备是否安装了硬件键盘?

无论如何,我如何查询设备功能?

4

3 回答 3

39

“getResources().getConfiguration().keyboard 提供的标志是检查哪个键盘(如果有)可用的好方法。” [1]

http://d.android.com/reference/android/content/res/Configuration.html#keyboard

于 2010-03-10T09:10:58.050 回答
2

使用以下方法随时确定是否存在硬键盘:(
据我所知,软键盘都缺少以下测试的功能)

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()'   
}
于 2018-09-14T08:10:39.853 回答
2

要检测连接的常见 qwerty 键盘,请使用以下命令:

private boolean isKeyboardConnected() {
    return getResources().getConfiguration().keyboard == KEYBOARD_QWERTY;
}
于 2019-09-01T21:19:26.103 回答