14

Android デバイスに物理キーまたはソフトウェア ナビゲーション バーがあるかどうかを確認するにはどうすればよいですか? ソフトウェア ナビゲーションが描画されるかどうかに応じて、レイアウトを変更する必要があります。

たとえば、HTC Desire C にはハードウェア キーがあります。 ここに画像の説明を入力

明確にする必要があります-キーボードではなく、ナビゲーションバーを見ています。ホーム、バックなど。私は試しました:

        getResources().getConfiguration().keyboard);
        getResources().getConfiguration().navigation);
        getResources().getConfiguration().navigationHidden);

両方のデバイスで同じ値を返します。

4

4 に答える 4

2

ほら、どうぞ..これはあなたが望むことをするはずです。

@SuppressLint("NewApi")
private static boolean hasSoftNavigation(Context context)
{
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
        return !ViewConfiguration.get(context).hasPermanentMenuKey();
    }
    return false;
}
于 2013-08-02T11:04:21.357 に答える
0

private boolean isHardwareKeyboardAvailable() { return getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS; }

さらに、ここに詳細があります。http://developer.android.com/reference/android/content/res/Configuration.html#keyboard

編集 - 物理キーボードを確認するには

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

さまざまな構成ビューの詳細については、 http://developer.android.com/reference/android/content/res/Configuration.html#keyboard

私はそれらの作品の1つを確信しています。

2回目の編集 -

小切手。すでに尋ねました。

Android: デバイスにハードウェア メニュー ボタンがあるかどうかをプログラムで検出する

于 2013-02-13T12:00:42.477 に答える