Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查Android设备的代码中是否有特定的硬件按钮_Java_Android_Button_Hardware - Fatal编程技术网

Java 检查Android设备的代码中是否有特定的硬件按钮

Java 检查Android设备的代码中是否有特定的硬件按钮,java,android,button,hardware,Java,Android,Button,Hardware,我需要检查某个安卓设备的代码中是否有硬件按钮。例如,只有一些手机有搜索按钮。 那么,如何检查设备是否有硬件按钮(搜索、摄像头、d-pad等)?您可以使用。 例如: 您还可以通过,例如DPAD,获得一些无法通过PackageManager进行测试的功能 Configuration c = getResources().getConfiguration(); if(c.navigation == Configuration.NAVIGATION_DPAD) hasDpad = true;

我需要检查某个安卓设备的代码中是否有硬件按钮。例如,只有一些手机有搜索按钮。 那么,如何检查设备是否有硬件按钮(搜索、摄像头、d-pad等)?

您可以使用。
例如:

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

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

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

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

ViewConfiguration.get(context).hasPermanentMenuKey();
发件人:
另请参见:

我知道这篇文章已经有一年多的历史了,但它仍然出现在谷歌搜索中(在第一页)。我想,如果像我这样的人正在搜索相同的东西,我会发布一个关于我正在使用的东西的轻微更新或建议

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(根运行MikMik GingerGrits)上运行得很好。

复制自Well我问了一个检查硬件按钮的一般方法,他们只是要搜索按钮。太棒了。虽然我对搜索按钮感到羞耻,但我会勾选这个,然后看另一个线程。我不认为这个答案可以接受,这只会检查设备上是否安装了摄像头,而不会检查设备上是否安装了摄像头硬件按钮。恐怕SDK中没有这样的功能。很高兴知道。对于任何使用它的人,请注意它需要API14及以上版本。最初,我需要在显示应用程序之前检查设备是否有硬件按钮。这只会在按下硬件按钮后起作用。但谢谢分享。这是一个有效的解决方案。是的,我和HTC ADR6300查过了。这是检测硬件搜索按钮笔划的最佳方法。
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); 
           }
    }