【问题标题】:Check if an Android device has a certain hardware button in code检查 Android 设备的代码中是否有某个硬件按钮
【发布时间】:2011-11-10 07:32:25
【问题描述】:

我需要检查某个 android 设备的代码中是否有硬件按钮。例如,只有一些手机有搜索按钮。 那么如何检查设备是否有硬件按钮(搜索、相机、方向键等)?

【问题讨论】:

标签: java android button hardware


【解决方案1】:

您可以使用PackageManager.hasSystemFeature()
示例:

boolean hasCamera = 
        getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); 

您还可以通过Configuration 获得PackageManager 无法测试的一些功能,例如DPAD。

Configuration c = getResources().getConfiguration();
if(c.navigation == Configuration.NAVIGATION_DPAD)
      hasDpad = true;

唯一的例外是搜索按钮。前几天这里有个问题,问的基本一样。我不记得任何答案,也不知道检测搜索按钮的方法,因为它不在功能列表中。 (编辑:你去吧,可能重复的线程是我在这里提到的那个)

【讨论】:

  • 太棒了。虽然对搜索按钮感到羞耻,但我会勾选这个,然后看看另一个线程。
  • 我不认为这个答案可以被接受,这只会检查设备上是否安装了摄像头,而不是是否安装了摄像头硬件按钮。 AFAIK SDK 中没有这样的功能。
【解决方案2】:

这是一个检查硬件“菜单”按钮是否存在的好方法:

ViewConfiguration.get(context).hasPermanentMenuKey();

发件人:https://stackoverflow.com/a/9481965 另见:http://developer.android.com/reference/android/view/ViewConfiguration.html#hasPermanentMenuKey()

【讨论】:

  • 很高兴知道。对于任何使用它的人,请注意它需要 API14 及更高版本。
【解决方案3】:

我知道这篇文章已有一年多的历史了,但它仍然出现在 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)

【讨论】:

  • 最初,我需要在显示应用程序之前检查设备是否有硬件按钮。这仅在按下该硬件按钮后才有效。不过谢谢分享。
  • 是的,这是一个可行的解决方案。是的,我用 HTC ADR6300 进行了检查。这是检测硬件搜索按钮敲击的最佳方法。
猜你喜欢
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2016-08-31
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多