我需要检查某个Android设备是否在代码中有硬件按钮。例如,只有部分手机有搜索按钮。 那么如何检查设备是否有硬件按钮(搜索,相机,d-pad等)?
答案 0 :(得分:8)
您可以使用PackageManager.hasSystemFeature()
例如:
boolean hasCamera =
getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
您还可以通过Configuration
获取PackageManager
无法测试的某些功能,例如DPAD。
Configuration c = getResources().getConfiguration();
if(c.navigation == Configuration.NAVIGATION_DPAD)
hasDpad = true;
唯一的例外是搜索按钮。几天前在这里有一个问题,问的基本相同。我不记得任何答案,我不知道检测搜索按钮的方法,因为它不在功能列表中。 (编辑:你去了,可能重复的帖子是我在这里提到的那个)
答案 1 :(得分:2)
我知道这篇文章已有一年多的历史了,但它仍然出现在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运行MikMik GingerGrits)上工作正常