检查Android设备是否在代码中有某个硬件按钮

时间:2011-09-05 01:07:05

标签: java android button hardware

我需要检查某个Android设备是否在代码中有硬件按钮。例如,只有部分手机有搜索按钮。 那么如何检查设备是否有硬件按钮(搜索,相机,d-pad等)?

2 个答案:

答案 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)上工作正常