如何检测硬件键盘的存在?

时间:2010-03-10 08:59:54

标签: android keyboard hardware device

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

我如何查询设备功能?

3 个答案:

答案 0 :(得分:33)

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

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

答案 1 :(得分:0)

使用以下方法随时确定硬键盘的存在:
(据我所知,软键盘全部 lack 都在下面测试过)

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 捕获每个受影响的活动的所有运行时键盘更改:

android:configChanges="keyboard|keyboardHidden|navigation"

但是请确保至少使用一个虚拟 onConfigurationChanged()

支持上述清单更改
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Optionally employ 'isHardKB()'   
}

答案 2 :(得分:0)

要检测已连接的常见qwerty键盘,请使用以下方法:

private boolean isKeyboardConnected() {
    return getResources().getConfiguration().keyboard == KEYBOARD_QWERTY;
}