【问题标题】:How to press physical buttons of android programatically如何以编程方式按下android的物理按钮
【发布时间】:2015-05-24 20:10:18
【问题描述】:

我想以编程方式按下音量按钮。在 Java 中可以使用机器人类,但在 Android 中没有机器人类。

我想知道如何在 Android 中实现这一点。

【问题讨论】:

  • 您是否 100% 确定要模拟按下音量按钮而不是通过编程方式调整音量?
  • @Arkadiy 我确定.. 1 秒 .. 是的

标签: android awtrobot


【解决方案1】:

我建议您以编程方式增加/减少音量,这会更容易一些,但是如果您想将它用于其他过程,那么您可以检查下面的代码 - 编辑 - 我之前给出的 sn-p 不起作用,但这个起作用。它使用 runnable,因此 try catch 块是必要的。

 new Thread(new Runnable() {         
            @Override
            public void run() {
                try {
                    Instrumentation inst = new Instrumentation();
                    //This is for Volume Down, change to 
                    //KEYCODE_VOLUME_UP for Volume Up.
                    inst.sendKeyDownUpSync(KeyEvent.KEYCODE_VOLUME_DOWN);
                }catch(InterruptedException e){}
            }   
        }).start();

【讨论】:

  • 你的答案看起来很棒..但我在 inst.sendKeyDownUpSync(KeyEvent.KEYCODE_VOLUME_DOWN);
  • 每个设备都使用一个 KeyEvent 标准,在本例中为 KEYCODE_VOLUME_DOWN。我不确定这是怎么发生的。您是否尝试查看它是否被中断?将日志添加到 catch 块以进行检查。
  • 有没有办法按住而不是按按钮? @pronoobsanved
  • @mazhar 我在这里写了一个答案,让我知道它是否适合你 - stackoverflow.com/questions/36551794/…
  • 它需要android.permission.INJECT_EVENTS,但该权限仅适用于root设备。我在Android 21版本中测试。如何解决它
【解决方案2】:

这个怎么样

 private abstract class SimpleButton extends Button {
        public SimpleButton(String text) {
            super(TechDemoLauncher.this);
            setText(text);
            setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    onButtonPressed();
                }
            });
        }

        public abstract void onButtonPressed();
    }

之后你可以像这样实现 onButtonPressed() 方法

private void Example(String string) {
    yourLayout.addView(new SimpleButton(string) {
                @Override
                public void onButtonPressed() {
                    //insert your code
                }
            });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多