android - 检查 Android 设备是否有软件或硬件导航按钮

标签 android

我正在编写一个带有透明导航栏的 Android 应用程序。要相应地调整布局,我需要知道设备是否有软件按钮或硬件按钮。

在我的研究过程中,我遇到了以下解决方案:

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();

这种方法不适用于一些没有菜单键但仍有硬件按钮的新设备,例如 Samsung Note 4 或 HTC One。

boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
boolean hasHardwareButtons = hasBackKey && hasHomeKey;

这并不适用,因为某些设备(如 Sony Xperia Z3 Compact)虽然具有软件导航栏,但会返回 true。

有没有靠谱的方法可以判断是否有实体按键或者软件导航栏?

最佳答案

参见 this answer .您可以获得显示器的实际高度(以像素为单位),然后获取您的应用可用的高度,并确定设备是否具有包含这些值的屏幕导航栏。

关于android - 检查 Android 设备是否有软件或硬件导航按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28406506/

相关文章:

java - Eclipse 中显示奇怪的符号

android - 为什么不根据位置设置背景[android]

c# - Unity 构建太大的立方体贴图

java - Android 应用程序中的 ClassCastException

android - 保持 GPS 服务运行并优化电池生命周期

android - 如何以编程方式将 HTML5 文件添加到 Android?

android - Djinni 支持 Java 继承吗?

java - 即使设置了serialVersionUID,反序列化也会引发InvalidClassException

android - Firebase Firestore toObject()不适用于数据类

java - 自定义 ViewPager 以允许子 GoogleMap 控件水平滚动