Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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
Android 模拟硬件按键事件的方法_Android_Methods_Input_Instrumentation - Fatal编程技术网

Android 模拟硬件按键事件的方法

Android 模拟硬件按键事件的方法,android,methods,input,instrumentation,Android,Methods,Input,Instrumentation,我有一个自定义的InputMethod,其中有一个BroadcastListener。当侦听器在onReceive()方法中捕捉到意图时,我调用InputMethod的onKey方法,这样我就模拟了软键板上的按键。如果调用onKeyDown或onkeydup则模拟硬件键盘。所以这是一个我不喜欢的解决方案 昨天我发现: 使用Instrumentation.sendKeyDownUpSync来模拟按键是否是一个好主意,而且它工作得很好,我甚至不需要实现自己的输入方法。我的意思是,据我所知,该仪器用

我有一个自定义的
InputMethod
,其中有一个
BroadcastListener
。当侦听器在
onReceive()
方法中捕捉到意图时,我调用
InputMethod
onKey
方法,这样我就模拟了软键板上的按键。如果调用
onKeyDown
onkeydup
则模拟硬件键盘。所以这是一个我不喜欢的解决方案

昨天我发现:

使用
Instrumentation.sendKeyDownUpSync
来模拟按键是否是一个好主意,而且它工作得很好,我甚至不需要实现自己的
输入方法
。我的意思是,据我所知,该仪器用于测试目的


以我的方式使用是个好主意吗?

我认为使用自己的
IME
来测试应用程序太过分了

您已经有了一种使用Android的
工具实现这一点的方法。

您还可以检查哪些可能对您要测试的内容有用。

Macarase感谢您的响应,但问题是我不想测试任何东西,我只想在应用程序的最终发行版中将插装作为正常的逻辑部分来使用,以生成用户输入数据。这可以吗?这在任何版本的android上都可以正常工作吗?会有任何权限问题吗?是的,如果我使用Instrumentation,就不需要IME,但是在发布版本中使用它可以吗(不用于测试)。您不应该将
Instrumentation
作为应用程序的一部分使用。你想存档什么?有一个意图是通过广播从另一个应用程序发送的(我没有访问该应用程序的权限)。在意图中有一个额外的字符,即ASCII码。所以我想在我自己的应用程序中捕获它,并将该字符发送到当前的InputMethod。我找到了两种方法。首先是我自己的IM,它有一个广播侦听器的实例。BL捕捉到意图,然后调用IM的onKeyDown和onkeydup方法。在第二种方法中,我只使用捕获意图的BL,然后调用Instrumentation.sendKeyDownUpSync(),它模拟按键。当然,第二种方法对我来说更容易,更好的是它可以与用户安装的任何IM一起工作。但是现在你说把它作为我的应用程序的一部分不是一个好主意,你能告诉我为什么吗?因为仪器只是用于测试,我想你将无法将带有仪器的apk上传到市场上。