常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字

这篇具有很好参考价值的文章主要介绍了常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

1.小米vr正式在插入手机后,会自动启动小米VR APP,然后因为小米官方已经关闭了小米VR的生态,你面对的只是一个空荡荡的vr界面,以及商店里那些已经老旧的软件(大多已经不再更新,服务器关闭,不能使用)
看着外面的第三方APP比如gizmoVR浏览器,看着外面的VR虚拟应用,比如全景图片共享平台,没有一个能在小米VRAPP里打开,仅仅是因为他们没有和小米合作
然而我们就束手待毙吗?
当然不是,需要实现的是在已经启动小米VR的情况下,仍然有切换其他VR APP的能力
比如你自己开发了一个小米vR应用,但是菜单里没有显示,那你就直接adb命令启动,都一样

2.另一个问题是,使用vr浏览器输入文字十分麻烦,即使使用蓝牙手柄,也需要一个个点确认,能否直接从电脑键盘上输入文字直接到vr设备中呢?
当然可以的,这个已经解决了

3.另外一个问题是,对于一些放入手机的VR设备,如果没有蓝牙手柄怎么办?
问题是你的电脑和手机有蓝牙啊,手机的功能不仅有陀螺仪,蓝牙,还有震动等等功能,你蓝牙手柄能干的我手机能干,你蓝牙手柄不能干的我照样干,我是手机我牛逼,随便找另外一部手机模拟出来不就好了
使用手机模拟体感蓝牙手柄不过分吧?
当然,这个暂定开发,现在仅仅实现的是用模拟蓝牙手柄的确认功能,以及文字传输功能
对于一些看电影的来说,使用头戴盯住一些界面看一会儿来实现确认功能实际上是非常烦人的

原理

功能看似很多,实际上原理很简单
就是利用电脑,使用wifi用adb命令控制手机而已
让我们看看这几个adb命令主角
1.adb命令,向手机输入文字
比如:

adb shell input text ‘123

注意!当字符串中含有“&”这样的特殊字符时,例如hello & world这个时候,传输就会到这个&这里终止,如果想要继续传输的话,就需要进行转义处理,即:adb shell input text “hello & world”
还有一点就是esc的····小写符号的特殊性,以及‘“”’需要进行转义处理才能正确传输
2.adb命令,启动手机app
比如:
adb shell am start -n 应用包名/应用主Activity名

adb shell am start -n com.GizmoVR.Virtual.Reality.Videos/com.gizmo.tools.CustomUnityActivity

3.adb命令关闭手机app
比如:
adb shell am force-stop 包名

 adb shell am force-stop com.GizmoVR.Virtual.Reality.Videos

4.adb命令点击手机位置

adb shell input tap 600 800

当然,还需要电脑键盘的监听以及adb命令的传送,这些都有介绍
电脑键盘监听可见
https://blog.csdn.net/lidashent/article/details/121892655

流程

如果你的手机已经插入了小米VR正式版的VR盒子
想要使用其他应用,进入小米的官方VR界面后(手机插入VR盒子,头已经戴上小米VR,不能摘下)
想要切换到其他应用,比如外面安装的gizmoVR浏览器, 你可以使用adb命令切换到其他应用

首先你的手机放入小米VR盒子之前,电脑需要使用adb命令连接手机
比如:
电脑和手机放在同一局域网下,adb连接命令,这里的手机ip根据实际情况填写,查看设置里的wifi信息可以看到本机局域网ip

adb connect 192.168.2.105

基于此,连接成功后使用adb的其他命令可以随意开启和切换小米VR之外的应用,而不用摘下已经戴着的VR眼镜
当然需要的信息是需要开启的应用的包名和主activity名

如何得到这个应用的包名和它的主Activtty名字呢?

使用手机上的mt管理器
先提取已经安装的应用的安装包,
常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字

然后点击得到的应用包查看,
常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字

进入AndroidManifest.xml文件中
常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字
选择反编译
常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字
打开AndroidManifest.xml,“package=”之后的就是命令需要的package,“android.intent.action.MAIN” action 所在的activity就是命令需要的launch activity
常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字
使用搜索过滤功能,可以快速定位主Acitivity
常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字

切换应用的adb命令

比如gizmoVR浏览器的切换命令
格式为:
adb shell am start -n 应用包名/应用主Activity名

adb shell am start -n com.GizmoVR.Virtual.Reality.Videos/com.gizmo.tools.CustomUnityActivity

这样,不论你现在开启的是什么应用,只需要使用此命令就能迅速切换到GizmoVR浏览器了,即使是你戴着小米VR的情况下也能在VR中使用这个外部的app

关闭外部APP的命令

只需要 adb shell am force-stop 应用包名 就可以了
比如:

 adb shell am force-stop com.GizmoVR.Virtual.Reality.Videos

问题解决

但是问题是我已经戴上小米VR了,我还需要摘下头戴输命令?
当然不需要,使用python封装这些命令,然后判断键盘按键键就能使用了
比如需要输入文字,则检测键盘按键,将按键输入的文字使用adb命令传送给手机
比如点击位置等等

比如使用键盘上的闲置按键就能方便的控制应用的切换,比如tab,esc,上下左右按键等等很合理吧,同理更多

python脚本
实现的功能如下:
1,按动键盘按键,将电脑键盘上的文字传送给手机
2.模拟蓝牙手柄的确认功能,通过键盘的上下左右控制触发
3.切换其他vrapp,使用esc按键启动gizmoVR软件,至于为什么不用abc等等按键,那个用来传输文字了
4.关闭其他app,使用tab按键关闭gizmoVR软件,为什么不用abc等按键同理

按键盘esc自动打开手机上的gizmoVR软件,按tab自动关闭,这样戴着头盔也能无限切换外部的vr应用了
同样也能切换外部爱奇艺vr等等

import cv2
import os

adbPath = "C:\\Users\\Administrator.DESKTOP-KMH7HN6\\Downloads\\Compressed\\platform-tools-windows\\platform-tools\\adb.exe"
path = r"C:\Users\Administrator.DESKTOP-KMH7HN6\Downloads\pictures\2056968.jpg"
myIp = '192.168.2.105'


def doCmd(myCmd):
    cmdCommand = adbPath + " " + myCmd
    print(cmdCommand)
    backInfo = os.popen(cmdCommand).read()
    print(backInfo)


def openGizmoVR():
    doCmd("connect " + myIp)
    doCmd("shell am start -n com.GizmoVR.Virtual.Reality.Videos/com.gizmo.tools.CustomUnityActivity")


def closeGizemovR():
    doCmd("connect " + myIp)
    doCmd("shell am force-stop com.GizmoVR.Virtual.Reality.Videos")


def inputText(a):
    doCmd("connect " + myIp)
    doCmd("shell input text {}".format(a))


def clickScreen():
    doCmd("connect " + myIp)
    doCmd("shell input tap 600 800")


a = cv2.imread(path)
cv2.imshow('a', a)
cv2.waitKey(0)
inputTextBuff = ""
while (1):
    k = cv2.waitKey() & 0xFF
    print(k)
    # ascll码上常用标识符截止位
    if k >= 33:
        if k == 96:
            charChange = "\\'"
        elif k == 38:
            charChange = "\\&"
        else:
            charChange = chr(k)
        inputTextBuff = inputTextBuff + charChange
        print(inputTextBuff)
    # enter按键ascll码
    elif k == 13 and len(inputTextBuff) > 0:
        inputText(inputTextBuff)
        inputTextBuff = ""
    # 上下左右按键ascll码
    elif k == 0:
        clickScreen()
    # esc按键ascll码
    elif k == 27:
        openGizmoVR()
    # tab按键ascll码
    elif k == 9:
        closeGizemovR()

adb常识

//在屏幕上做划屏操作,前四个数为坐标点,后面是滑动的时间(单位毫秒)

adb shell input swipe 50 250 250 250 500

//在 100 100 位置长按 1000毫秒

adb shell input swipe 100 100 100 100 1000

直接触发手机的响应操作事件代码

格式
adb shell input keyevent 代码
比如 查看后台菜单

adb shell input keyevent 82

其他代码

0 --> “KEYCODE_UNKNOWN”
1 --> “KEYCODE_MENU”
2 --> “KEYCODE_SOFT_RIGHT”
3 --> “KEYCODE_HOME”
4 --> “KEYCODE_BACK”
5 --> “KEYCODE_CALL”
6 --> “KEYCODE_ENDCALL”
7 --> “KEYCODE_0”
8 --> “KEYCODE_1”
9 --> “KEYCODE_2”
10 --> “KEYCODE_3”
11 --> “KEYCODE_4”
12 --> “KEYCODE_5”
13 --> “KEYCODE_6”
14 --> “KEYCODE_7”
15 --> “KEYCODE_8”
16 --> “KEYCODE_9”
17 --> “KEYCODE_STAR”
18 --> “KEYCODE_POUND”
19 --> “KEYCODE_DPAD_UP”
20 --> “KEYCODE_DPAD_DOWN”
21 --> “KEYCODE_DPAD_LEFT”
22 --> “KEYCODE_DPAD_RIGHT”
23 --> “KEYCODE_DPAD_CENTER”
24 --> “KEYCODE_VOLUME_UP”
25 --> “KEYCODE_VOLUME_DOWN”
26 --> “KEYCODE_POWER”
27 --> “KEYCODE_CAMERA”
28 --> “KEYCODE_CLEAR”
29 --> “KEYCODE_A”
30 --> “KEYCODE_B”
31 --> “KEYCODE_C”
32 --> “KEYCODE_D”
33 --> “KEYCODE_E”
34 --> “KEYCODE_F”
35 --> “KEYCODE_G”
36 --> “KEYCODE_H”
37 --> “KEYCODE_I”
38 --> “KEYCODE_J”
39 --> “KEYCODE_K”
40 --> “KEYCODE_L”
41 --> “KEYCODE_M”
42 --> “KEYCODE_N”
43 --> “KEYCODE_O”
44 --> “KEYCODE_P”
45 --> “KEYCODE_Q”
46 --> “KEYCODE_R”
47 --> “KEYCODE_S”
48 --> “KEYCODE_T”
49 --> “KEYCODE_U”
50 --> “KEYCODE_V”
51 --> “KEYCODE_W”
52 --> “KEYCODE_X”
53 --> “KEYCODE_Y”
54 --> “KEYCODE_Z”
55 --> “KEYCODE_COMMA”
56 --> “KEYCODE_PERIOD”
57 --> “KEYCODE_ALT_LEFT”
58 --> “KEYCODE_ALT_RIGHT”
59 --> “KEYCODE_SHIFT_LEFT”
60 --> “KEYCODE_SHIFT_RIGHT”
61 --> “KEYCODE_TAB”
62 --> “KEYCODE_SPACE”
63 --> “KEYCODE_SYM”
64 --> “KEYCODE_EXPLORER”
65 --> “KEYCODE_ENVELOPE”
66 --> “KEYCODE_ENTER”
67 --> “KEYCODE_DEL”
68 --> “KEYCODE_GRAVE”
69 --> “KEYCODE_MINUS”
70 --> “KEYCODE_EQUALS”
71 --> “KEYCODE_LEFT_BRACKET”
72 --> “KEYCODE_RIGHT_BRACKET”
73 --> “KEYCODE_BACKSLASH”
74 --> “KEYCODE_SEMICOLON”
75 --> “KEYCODE_APOSTROPHE”
76 --> “KEYCODE_SLASH”
77 --> “KEYCODE_AT”
78 --> “KEYCODE_NUM”
79 --> “KEYCODE_HEADSETHOOK”
80 --> “KEYCODE_FOCUS”
81 --> “KEYCODE_PLUS”
82 --> “KEYCODE_MENU”
83 --> “KEYCODE_NOTIFICATION”
84 --> “KEYCODE_SEARCH”
85 --> “TAG_LAST_KEYCODE”

KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25

KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入键 124
KEYCODE_TAB Tab键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK Break/Pause键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169

KEYCODE_0 按键’0’ 7
KEYCODE_1 按键’1’ 8
KEYCODE_2 按键’2’ 9
KEYCODE_3 按键’3’ 10
KEYCODE_4 按键’4’ 11
KEYCODE_5 按键’5’ 12
KEYCODE_6 按键’6’ 13
KEYCODE_7 按键’7’ 14
KEYCODE_8 按键’8’ 15
KEYCODE_9 按键’9’ 16
KEYCODE_A 按键’A’ 29
KEYCODE_B 按键’B’ 30
KEYCODE_C 按键’C’ 31
KEYCODE_D 按键’D’ 32
KEYCODE_E 按键’E’ 33
KEYCODE_F 按键’F’ 34
KEYCODE_G 按键’G’ 35
KEYCODE_H 按键’H’ 36
KEYCODE_I 按键’I’ 37
KEYCODE_J 按键’J’ 38
KEYCODE_K 按键’K’ 39
KEYCODE_L 按键’L’ 40
KEYCODE_M 按键’M’ 41
KEYCODE_N 按键’N’ 42
KEYCODE_O 按键’O’ 43
KEYCODE_P 按键’P’ 44
KEYCODE_Q 按键’Q’ 45
KEYCODE_R 按键’R’ 46
KEYCODE_S 按键’S’ 47
KEYCODE_T 按键’T’ 48
KEYCODE_U 按键’U’ 49
KEYCODE_V 按键’V’ 50
KEYCODE_W 按键’W’ 51
KEYCODE_X 按键’X’ 52
KEYCODE_Y 按键’Y’ 53
KEYCODE_Z 按键’Z’ 54

KEYCODE_PLUS 按键’+’
KEYCODE_MINUS 按键’-’
KEYCODE_STAR 按键’*’
KEYCODE_SLASH 按键’/’
KEYCODE_EQUALS 按键’=’
KEYCODE_AT 按键’@’
KEYCODE_POUND 按键’#’
KEYCODE_APOSTROPHE 按键’’’ (单引号)
KEYCODE_BACKSLASH 按键’’
KEYCODE_COMMA 按键’,’
KEYCODE_PERIOD 按键’.’
KEYCODE_LEFT_BRACKET 按键’[’
KEYCODE_RIGHT_BRACKET 按键’]’
KEYCODE_SEMICOLON 按键’;’
KEYCODE_GRAVE 按键’`’
KEYCODE_SPACE 空格键

KEYCODE_NUMPAD_0 小键盘按键’0’
KEYCODE_NUMPAD_1 小键盘按键’1’
KEYCODE_NUMPAD_2 小键盘按键’2’
KEYCODE_NUMPAD_3 小键盘按键’3’
KEYCODE_NUMPAD_4 小键盘按键’4’
KEYCODE_NUMPAD_5 小键盘按键’5’
KEYCODE_NUMPAD_6 小键盘按键’6’
KEYCODE_NUMPAD_7 小键盘按键’7’
KEYCODE_NUMPAD_8 小键盘按键’8’
KEYCODE_NUMPAD_9 小键盘按键’9’
KEYCODE_NUMPAD_ADD 小键盘按键’+’
KEYCODE_NUMPAD_SUBTRACT 小键盘按键’-’
KEYCODE_NUMPAD_MULTIPLY 小键盘按键’*’
KEYCODE_NUMPAD_DIVIDE 小键盘按键’/’
KEYCODE_NUMPAD_EQUALS 小键盘按键’=’
KEYCODE_NUMPAD_COMMA 小键盘按键’,’
KEYCODE_NUMPAD_DOT 小键盘按键’.’
KEYCODE_NUMPAD_LEFT_PAREN 小键盘按键’(’
KEYCODE_NUMPAD_RIGHT_PAREN 小键盘按键’)’
KEYCODE_NUMPAD_ENTER 小键盘按键回车文章来源地址https://www.toymoban.com/news/detail-462809.html

到了这里,关于常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ?Avalonia 11.0.0 正式版发布

    AvaloniaUI 发布11.0.0正式版 终于avalonia发布了正式版。 今天,我们非常高兴地宣布Avalonia 11.0版本的发布! 在经历了近一年的预览版本和无数个数以千计的工作小时后,现在是时候发布一款改变游戏规则的跨平台应用程序开发工具了。Avalonia v11代表着我们在实现目标上的巨大飞

    2024年02月12日
    浏览(112)
  • 小程序发布体验版流程、发布正式版

    【注意】 如果使用的测试 appid 则【上传】按钮不能点击,必须使用真实 appid 上传成功后在 微信小程序公众平台 进行版本管理 点击下一步 点击“继续提交”,填写信息 点击 “提交审核” ↑ 提示 “当前提审的开发版本代码与隐私协议内容不匹配,请在当前提审页面,点击

    2023年04月25日
    浏览(179)
  • IOS17正式版今日发布

    北京时间9月19日凌晨,苹果公司正式向全球用户推送了期待已久的iOS 17正式版。此次更新为iPhone带来了多项激动人心的功能,包括对“电话”、“信息”、FaceTime通话的重大更新,“待机显示”以及音乐、小组件、Safari浏览器的升级等。 据了解,iOS 17正式版的系统安装包大小

    2024年02月07日
    浏览(64)
  • 小程序新渲染引擎 Skyline 发布正式版

    为了进一步提升小程序的渲染性能和体验,我们推出了一套新渲染引擎 Skyline,现在,跟随着基础库 3.0.0 发布 Skyline 正式版。 我们知道,小程序一直用 WebView 来渲染界面,因其有不错的兼容性和丰富的特性,且各大厂商也在不断优化 Web 的渲染性能,但 Web 体系相比于原生开

    2024年02月14日
    浏览(56)
  • DolphinScheduler3.0正式版本安装教程

    Standalone极速体验版: 下载:Apache Downloads 前置准备工作 安装并配置  JAVA_HOME  环境变量,并将其下的  bin  目录追加到  PATH  环境变量中。如果你的环境中已存在,可以跳过这步。 安装: 解压并运行 :  1. tar -xvzf apache-dolphinscheduler-*-bin.tar.gz 2. cd apache-dolphinscheduler-*-bin 3.

    2024年02月14日
    浏览(69)
  • Microsoft Office 2021 简体中文正式版下载

    Office LTSC 2021 Pro Plus + Project Pro 2021 + Visio Pro 2021. Office LTSC 2021 已于 9 月 16 日发布正式版! Office LTSC 2021 是最新版本的 Microsoft 生产力软件,通过批量许可协议提供给组织。 重要 Office LTSC 2021 独立于 Office 计划或 Microsoft 365 (提供 Office 365) 版本。 例如,如果已部署以前 Microsoft

    2024年02月06日
    浏览(60)
  • Android Studio Giraffe 正式版下载地址

    Android Studio 是 Android 的官方 IDE。它专为 Android 而打造,可以加快您的开发速度,帮助您为每款 Android 设备构建最高品质的应用。 Android Studio 基于 IntelliJ IDEA 而构建,可以提供较短的编码和运行工作流周转时间。 Apply Changes 借助 Android Studio 的 Apply Changes 功能,您可以将代码和

    2024年02月13日
    浏览(64)
  • 迅雷路由器多少钱?迅雷路由正式版价格

    前日,迅雷路由通过官方微博表示迅雷路由将于本周内在迅雷商城开卖5000台,首批开卖的迅雷路由全部都带水晶资格,售价不超过350元人民币。很多网友很关心迅雷路由到底多少钱?下面yii666小编就最新信息为大家揭晓答案。 我们从迅雷商城正式知道了其售价确定 为349元

    2024年02月06日
    浏览(66)
  • 代码生成器 CodeBuilder 3.2 正式版发布

    CodeBuilder是一款强大的代码生成工具,目前发布了 3.2 版本,大家可以前去下载体验 官方主页。 基于 ADO.NET 的数据驱动 Power Designer PDManer DbSchema Swagger 这几种数据源基本上已经覆盖了我们常用的数据环境了,如果你有能力的话,可以自己开发数据源插件。 基于 Fireasy 3,支持从

    2024年02月06日
    浏览(125)
  • windows Server 有评估版转换为正式版

        在工作中发现一台Windows 机器在不断的自动关机。刚开始以为是机器的原因,但是换了机器之后,仍然继续关机,后来发现是Windows Server License 到期导致的。要激活windows Server 就需要将评估版本转换为正式版本,不想重新安装环境,也真的找到了不用重新安装机器的方法

    2024年02月16日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包