【发布时间】:2011-11-10 07:32:25
【问题描述】:
我需要检查某个 android 设备的代码中是否有硬件按钮。例如,只有一些手机有搜索按钮。 那么如何检查设备是否有硬件按钮(搜索、相机、方向键等)?
【问题讨论】:
-
好吧,我问的是检查硬件按钮的一般方法,他们只是要求搜索按钮。
标签: java android button hardware
我需要检查某个 android 设备的代码中是否有硬件按钮。例如,只有一些手机有搜索按钮。 那么如何检查设备是否有硬件按钮(搜索、相机、方向键等)?
【问题讨论】:
标签: java android button hardware
您可以使用PackageManager.hasSystemFeature()。
示例:
boolean hasCamera =
getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
您还可以通过Configuration 获得PackageManager 无法测试的一些功能,例如DPAD。
Configuration c = getResources().getConfiguration();
if(c.navigation == Configuration.NAVIGATION_DPAD)
hasDpad = true;
唯一的例外是搜索按钮。前几天这里有个问题,问的基本一样。我不记得任何答案,也不知道检测搜索按钮的方法,因为它不在功能列表中。 (编辑:你去吧,可能重复的线程是我在这里提到的那个)
【讨论】:
这是一个检查硬件“菜单”按钮是否存在的好方法:
ViewConfiguration.get(context).hasPermanentMenuKey();
发件人:https://stackoverflow.com/a/9481965 另见:http://developer.android.com/reference/android/view/ViewConfiguration.html#hasPermanentMenuKey()
【讨论】:
我知道这篇文章已有一年多的历史了,但它仍然出现在 Google 搜索中(在第一页上)。我想,如果像我这样的人正在搜索相同的东西,我会发布一个小小的更新或建议。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
Toast.makeText(this,"VOL Down", Toast.LENGTH_LONG).show();
return true;
} else if(keyCode == KeyEvent.KEYCODE_SEARCH){
Toast.makeText(this,"search", Toast.LENGTH_LONG).show();
return false;
}else{
Toast.makeText(this,"Vol Up", Toast.LENGTH_LONG).show();
return true;
//return super.onKeyDown(keyCode, event);
}
}
我已将 onCreate() 放在外面。这在我的 Thunderbolt 上运行良好(Rooted running MikMik GingerGrits)
【讨论】: