如何检测android设备是否包含所有SDK版本(所有设备)的编程虚拟主页按钮或物理主页按钮?

时间:2016-05-25 12:03:27

标签: android

enter image description here

 有些设备包含虚拟主页按钮,如下所示,其他一些设备包含物理主页按钮,如三星duos模型。我的问题是如何找到哪个设备包含哪些键。

1 个答案:

答案 0 :(得分:0)

adb shell getevent -lp

您将看到包含可能事件的输入设备列表。

向下滚动至包含KEY_VOLUMEUP KEY_VOLUMEDOWN或至少KEY_POWER的关键设备。

如果您看到KEY_HOMEPAGEKEY_HOME按钮是实体的。

如果不是,那就是虚拟的。

在java中处理:

try {
        StringBuilder device_folder = new StringBuilder();
        ArrayList<String> command_list2 = new ArrayList<String>();
        command_list2.add("getevent");
        command_list2.add("-lp");

        ProcessBuilder process_builder2 = new ProcessBuilder().command(command_list2).redirectErrorStream(false);
        Process process = process_builder2.start();
        BufferedReader buffered_reader2 = new BufferedReader(new InputStreamReader(process.getInputStream()));

        String line = "";
        while ((line = buffered_reader2.readLine()) != null) {
            device_folder.append(line + "\n");                    
        }

        if (device_folder.toString().contains("KEY_HOMEPAGE") 
            || device_folder.toString().contains("KEY_HOME")) {
            //physical button
        }

        else {
            //virtual button
        }

    } catch (IOException e) {
        e.printStackTrace();
    }