android - 如何判断安卓设备是否有硬键

标签 android

如何判断 Android 设备是否有物理按键或软件导航栏?我需要根据是否绘制软件导航来更改布局。

例如 HTC Desire C 有硬件键: enter image description here

我应该澄清一下——我在看导航栏,而不是键盘。家,回来等。我试过:

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

在两个设备上返回相同的值。

最佳答案

通过在第一次启动应用程序并保存到首选项时执行此操作来解决:

public static boolean hasSoftKeys(WindowManager windowManager){
    boolean hasSoftwareKeys = true;
    //c = context; use getContext(); in fragments, and in activities you can 
    //directly access the windowManager();

    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR1){
        Display d = c.getWindowManager().getDefaultDisplay();

        DisplayMetrics realDisplayMetrics = new DisplayMetrics();
        d.getRealMetrics(realDisplayMetrics);

        int realHeight = realDisplayMetrics.heightPixels;
        int realWidth = realDisplayMetrics.widthPixels;

        DisplayMetrics displayMetrics = new DisplayMetrics();
        d.getMetrics(displayMetrics);

        int displayHeight = displayMetrics.heightPixels;
        int displayWidth = displayMetrics.widthPixels;

        hasSoftwareKeys =  (realWidth - displayWidth) > 0 ||
                           (realHeight - displayHeight) > 0;
    } else {
        boolean hasMenuKey = ViewConfiguration.get(c).hasPermanentMenuKey();
        boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
        hasSoftwareKeys = !hasMenuKey && !hasBackKey;
    }
    return hasSoftwareKeys;
}

关于android - 如何判断安卓设备是否有硬键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853039/

相关文章:

java - Android 错误 : Unable to resume activity.。?

android - 在纵向中使用 recyclerview,在横向中使用表格布局

android - @Background 和 screen rotation 使用 AndroidAnnotations 时,如何确保收到回调?

android - BackHandler 未退出 Android Studio 中的应用程序

Android 从相机获取全尺寸图像

android - 如何在 Android Studio 中设置开关或切换按钮的内容描述?

android - Dagger 2 如何将对象注入(inject)测试

java - 控制随机数

android - 从服务接收触摸事件

android - 我的网站在 android 默认浏览器上没有 css