通过代码模拟触摸控制

2023-12-02

我正在尝试使用头部手势来浏览我的 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(使用前将#替换为@)

通过代码模拟触摸控制 的相关文章

  • 如何做Android - 滑动抽屉从左到右滑动..?

    如何将android滑动抽屉从LTR滑动 使用时android orientation horizontal 它从 RTL 滑出 我该如何进行 LTR 谢谢 我找到了答案表格 Here http blog sephiroth it 2011
  • 如何在android中实现触摸平滑图像橡皮擦?

    我已经从 API 演示中看到了finturePaint java 我想实现触摸平滑橡皮擦 通过在android中触摸移动来擦除部分图像 FingerPaint 告诉我要实现这个 mPaint setXfermode new PorterDu
  • 如何自定义菜单项的背景颜色?

    我正在尝试定制Toolbar的弹出菜单 现在我无法设置菜单项的背景颜色 我的 styles xml 如下所示
  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • 如何正确释放Android MediaPlayer

    我正在尝试向我的 Android 应用程序添加一个按钮 当点击该按钮时它会播放 MP3 我已经让它工作了 但没有办法释放 mediaPlayer 对象 因此即使在我离开活动后它仍然会继续播放 如果我在react 方法之外初始化MediaPl
  • fetchUuidsWithSdp 的奇怪 UUID 逆转

    我有一个在树莓派上运行的 python 蓝牙服务器 使用 PyBluez 我在服务器中使用的uuid是 8f86d132 4ab8 4c15 b8df 0b70cf10ea56 我正在打电话device fetchUuidsWithSdp
  • 将现有 VARCHAR 列与 Room 结合使用

    我正在尝试将现有的数据库与 Android Room 一起使用 但是 我的一个表有一个 VARCHAR 列 Room 似乎只支持 TEXT 不支持 VARCHAR 而且 sqlite 不允许修改列类型 那么 有没有办法使用Room中现有的带
  • 以编程方式将文本颜色设置为主要 Android 文本视图

    如何设置我的文本颜色TextView to android textColorPrimary以编程方式 我已经尝试了下面的代码 但它将 textColorPrimary 和 textColorPrimary Inverse 的文本颜色始终设
  • 在 Cordova 应用程序中获取额外功能

    我们有两个 Android 应用程序 一个使用本机 Java 实现 另一个使用 Ionic 编写 Ionic 应用程序启动我的应用程序 这是使用灯插件 https github com lampaa com lampa startapp 我
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 如何在 Android 中从 WorkManager 取消工作?

    我已经保存了 WorkManagerUUID转换成String在领域数据库中 这是代码 Constraints constraints new Constraints Builder setRequiredNetworkType Netwo
  • Android Studio 缓慢的增量构建

    我已经完成了许多步骤来完善我们的构建系统 those https stackoverflow com questions 16775197 building and running app via gradle and android st
  • 通过系统应用程序以编程方式静默安装 apk(无需 root)

    我有带有 android sharedUserId android uid system UID 1000 的系统级应用程序 设备未root INSTALL PACKAGES 权限包含在清单中 我可以静默安装下载的 apk 吗 我已经发现这
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 如何使用 AccessibilityService 在 Android 中模拟按键

    我正在编写一个辅助服务 我一直在尝试在应用程序上进行一些自动搜索 我使用accessibilityservice action paste来填充EditText 然后我需要模拟软键盘上的按键 但我不知道如何做 你们能帮我一下吗 你可以尝试A
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始
  • Android 后台倒计时器

    我有一个 Android 应用程序 它管理一个倒计时器 类 CountDownTimer 它显示在应用程序屏幕中 以显示到达 00 00 还剩多少时间 我现在的问题是 当我按主页按钮或启动另一个应用程序时 应用程序 计时器不会在后台运行 所
  • 有没有任何代码可以在android中设置壁纸而无需裁剪和缩放?

    我正在创建一个画廊应用程序 我的第一个应用程序 这是我的代码 Bitmap bmd BitmapFactory decodeStream is try getApplicationContext setWallpaper bmd catch

随机推荐

  • 一行写和多行写的区别

    当我在一行上写一些东西并用 分隔时有什么区别 并在两条线上 显然我不明白其中的区别 因为我认为下面的两个函数应该返回相同的结果 def fibi n a b 0 1 for i in range n a b b a b return a p
  • 如何删除特定 mysql 表字段上的唯一键

    我在用户名和电子邮件两个字段中分配了唯一的密钥 我已经执行了这个查询 ALTER TABLE goipmonl users DROP INDEX username DROP INDEX username ON goipmonl users
  • PrimeFaces DataTable 有记录时“未找到记录”

    我将 dataTable 定义为
  • 数据库表越多越好吗?

    最近 我一直在重新思考几个月前所做的数据库设计 主要原因是昨晚我读了vBulletin的数据库模式 发现他们使用了很多很多表 我当前用于模式 例如我的日志表 的 想法 是通过将日志类型与整数进行区分 将所有内容保留在一个表中 id type
  • 子进程重定向的 STDOUT 上的重叠 ReadFileEx 永远不会触发

    我有一个长期运行的基于控制台的应用程序 Sender 它使用非缓冲输出 例如 cout 我问过一个单独的问题关于做到这一点的最佳方法 我的第一次尝试是为子进程创建带有重定向 STDIN 和 STDOUT 的管道 并使用异步 ReadFile
  • 是否可以确保 constexpr 函数在编译时最多调用一次?

    正如标题所问 是否可以确保 constexpr 函数在编译时最多调用一次 如果函数不是 constepxr 这显然是不可能的 我可以编写一个每当我按下空格键时就会调用的函数 因此编译器永远无法在编译时弄清楚这一点 简短回答 没有为什么con
  • 查找裁剪后的相似图像

    2 个图像具有相同的颜色 图案等 一张图像是从另一张图像中裁剪出来的 我发现的算法主要使用位置来比较图像之间的差异 因此它会为裁剪图像产生错误的结果 如何知道这两张图片相似 Thanks 您确实需要提供更多信息 但也许您可以使用互相关算法
  • 打开 NFC 模拟器使用

    我想知道如何正确使用开放式 NFC 模拟器 我已经在以下位置浏览过类似的帖子 Open NFC 模拟器入门 但我的问题是 在遵循上面链接中的所有说明后 没有运气 有人可以给我有关如何正确加载 SDK 插件并启动模拟器的分步说明吗 我正在做一
  • Ramda 柯里化:如何将参数应用于多个参数

    我有一种情况需要这样做 const f obj gt assoc list createList obj obj 由于我需要第二个和第三个参数的参数 因此禁止我执行以下操作 const f assoc list somehowGetObj
  • Orion Context Broker 的工作效率只有一半

    我已经安装了 Orion Context Broker 0 23 0 但它的表现很少 它只能工作一半的时间 例如 当尝试检索版本时 我收到以下错误消息 curl http localhost 1026 version curl 52 Emp
  • 使用 updateDate() 方法设置 DatePicker 的日期

    我目前正在制作日期 时间选择器课程 本质上 我创建了 3 个单选按钮 明天 两天内 和 下周 我想要做的是让这些单选按钮自动将日期选择器设置为提前相应的天数 提前 1 2 和 7 天 当用户单击单选按钮时 我尝试使用 updateDate
  • Google 搜索检索搜索关键字的结果数量

    我有一个关键字列表 想知道每个关键字的谷歌搜索结果数量 对于我的研究项目 我正在使用下面的代码来实现相同的目的 def showsome searchfor hits 1 try query urllib urlencode q searc
  • $_SERVER['REMOTE_ADDR'] 的问题

    我使用 SERVER REMOTE ADDR 它返回客户端 ip 地址 用户查看当前页面的 IP 地址 但现在 和相同的代码 它返回主机 ip 地址 我用 ip 位置检查了 ip 地址 问题是主机还是什么 感谢你 您应该查询HTTP X F
  • 体积的imfilter速度

    我正在研究一种算法 该算法需要过滤 3D 矩阵 非稀疏 512 3 来查找边缘 我只想找到每个切片中的边缘 所以我一直在执行以下操作 2D loop appaoch x y ndgrid floor 3 sigma ceil 3 sigma
  • APK 签名错误:无法从密钥库读取密钥

    我正在 intellij 和 gradle 下开发 Android 应用程序 并使用以下方式生成密钥库文件 keytool genkey v keystore my release key keystore alias alias name
  • 是什么意思[重复]

    这个问题在这里已经有答案了 这是代码 def my func f arg return f arg print lambda x 2 x x 5 gt gt gt
  • 控制笔记本相关表达式的 Rasterize[] 宽度

    Update向导先生的答案给出了像素完美的结果 但它仅适用于 Windows 并且会破坏剪贴板内容 我的答案应该适用于任何平台 但不太精确 例如它省略了输入 输出标签 但它确实允许设置光栅化宽度 这个问题我当时就出现了尝试为图像上传器制作预
  • WebStorm:如何美化 JavaScript 文件中引号中的 HTML

    我的中有以下块app component ts file Component selector my app template h1 title h1 h2 My Heroes h2 ul class heroes li li ul h2
  • 打开目录对话框

    我希望用户选择一个目录 用于保存我将生成的文件 我知道在 WPF 中我应该使用OpenFileDialog来自 Win32 但不幸的是 该对话框需要选择文件 如果我只是单击 确定 而不选择文件 它就会保持打开状态 我可以通过让用户选择一个文
  • 通过代码模拟触摸控制

    我正在尝试使用头部手势来浏览我的 Google Glass 应用程序 我能够识别头部姿势 例如向右看 向左看和向上看 他们每个人都有自己的方法来识别该手势时该怎么做 现在我需要在每个方法中模拟相应的触摸手势 所以它会认为我正在向左或向右滑动