我正在尝试使用头部手势来浏览我的 Google Glass 应用程序。我能够识别头部姿势,例如向右看、向左看和向上看。他们每个人都有自己的方法来识别该手势时该怎么做
现在我需要在每个方法中模拟相应的触摸手势。所以它会认为我正在向左或向右滑动,这将允许我用头部手势浏览卡片。
有谁知道如何真正实现这一目标?
Edit
我创建了一个快速的 hello world 应用程序来玩。我添加了头部手势代码并开始尝试让按键正常工作。
我将以下内容添加到我的 onCreate() 中
Instrumentation instr = new Instrumentation();
然后我将以下几行添加到每个相应的头部手势方法中。
- 头部向上的姿势应与轻击触摸板相对应
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER)
- 向左头部手势应与在触摸板上向左滑动相对应
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_LEFT);
- 向右的头部手势应与在触摸板上向右滑动相对应
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_RIGHT);
他们现在正在做出相应的回应,但是我收到一个例外:
java.lang.RuntimeException: This method can not be called from the main application thread
解决方案
最后,我走了与我在上面编辑中提到的方向不同的方向。
我发现可以通过使用在外壳中调用触摸控件
adb shell input keyevent <keycode here>
然后我找到了一种在android中使用它的方法,我有以下名为issueKey的类
public class issueKey {
public void issueKey(int keyCode)
{
try {
java.lang.Process p = java.lang.Runtime.getRuntime().exec("input keyevent " + Integer.toString(keyCode) + "\n");
} catch (Exception e) {
Log.wtf("IssueKeyError", e.getMessage());
}
}
}
然后我只需调用该类并传递相应手势的键码
mIssueKey.issueKey(4);//functions as swipe down
这是我为感兴趣的人测试过的键码列表。
每个按钮/手势的按键
-
4:刷下
-
21:向左滑动
-
22:向右滑动
-
23: Tap
-
24:提高音量
-
25:音量减小
-
26:锁定/解锁屏幕
-
27:相机按钮
然而,我现在想知道的是。最佳实践是什么,通过使用 asyncTask 让我在编辑中提到的解决方案发挥作用,或者是我目前使用的更好的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)