因为项目需要在一台触摸一体机上浏览VR网页,但是window对VR网页的触摸控制基本无效,所以考虑将一体机刷成android_x86.但是android_x86的网站一直打不开,没办法,只能用模拟器试试,于是有了下面这番折腾,记录一下,免得下次还要重新想

一.将vr网页打包成安卓app.

1.创建vr场景网页项目

新建一个react项目,将所有的vr场景网页放入public目录.将所有的vr场景连接放入组件,点击后使用iframe展示

import React, { useState } from "react";
import "./thumbnail.css";const roomList = ["报告厅","大厅","公共安全","火灾逃生通道","家庭安全","交通安全","入口","消防安全","校园安全","心理健康咨询","应急救护",
];const Thumbnail = () => {const [selectedRoom, setSelectedRoom] = useState("");const handleClick = (room: string) => {setSelectedRoom(room);};const handleBackClick = () => {setSelectedRoom("");};const findIndex = (room: string) => {const res = roomList.findIndex((item) => item === room) + 1;console.log(res);return res + "";};return (<div className="thumbnail">{selectedRoom ? (<iframesrc={`./assets/vr/${findIndex(selectedRoom)}/pano/index.html`}style={{ width: "100%", height: "100%" }}title={selectedRoom}/>) : (<><img src="./assets/map.png" alt="地图" className="thumbnail-bg" />{roomList.map((room, index) => {return (<imgsrc="./assets/camera.png"alt="房间"className={`camera ${room}`}onClick={() => handleClick(room)}/>);})}</>)}{selectedRoom && (<imgsrc="./assets/return.png"alt="返回"className="back-button"onClick={handleBackClick}/>)}</div>);
};export default Thumbnail;

重点在package.json增加  "homepage": "./",否则打包出来的app是空白的

  "homepage": "./",

运行项目,查看是否成功

yarn start

如果运行正确,则build项目

yarn build

2.打包app

注册账号,并下载HBuilder X,创建空的5+app项目

将上面build出来的react项目build目录中,除了manifest.json(重点),复制进新建的5+app目录

删除无用的空目录 .

在HBuilder X中双击manifest.json,进行app配置

生成图标

由于此app只是浏览vr网页,无需任何权限,所以在模块配置中,去掉所有模块

在app常用其他设置中选择支持的cpu类型

打包,发行->云打包

等待打包成功,后在目录中找到app

二.使用golang编写启动模拟器和app的程序

1.编写yaml配置文件config.yaml

file_location: "D:\\leidian\\LDPlayer9\\dnplayer.exe"
wait_time: 10
send_key: "f11"
execute_command:command: "D:\\leidian\\LDPlayer9\\dnconsole.exe"parameters:- "runapp"- "--index"- "0"- "--packagename"- "com.xx.kkllhh"

file_location为模拟器的地址

wait_time为等待模拟器启动的时间,单位是秒

send_key为设置模拟器全屏的快捷键,f大写无效

execute_command为运行指定app的命令,需按实际修改最后一行的"com.xx.kkllhh"包名.包名可以在云打包的界面中查看

2.golang程序

package mainimport ("fmt""io/ioutil""os""os/exec""time""github.com/go-vgo/robotgo""gopkg.in/yaml.v2"
)type Config struct {FileLocation   string `yaml:"file_location"`WaitTime       int    `yaml:"wait_time"`SendKey        string `yaml:"send_key"`ExecuteCommand struct {Command    string   `yaml:"command"`Parameters []string `yaml:"parameters"`} `yaml:"execute_command"`
}func main() {config := readConfig("config.yaml")// Open the exe programfmt.Println("Opening the exe program...")cmd := exec.Command(config.FileLocation)err := cmd.Start()if err != nil {fmt.Printf("Error starting the program: %v\n", err)return}// Wait for the specified durationwaitWithCountdown(config.WaitTime)// Activate the windowfmt.Println("Activating the window...")pid := int32(cmd.Process.Pid)robotgo.ActivePID(pid)// Move the mousefmt.Println("Moving the mouse...")moveMouse()//等待1秒time.Sleep(1 * time.Second)// Send the specified keyfmt.Printf("Sending key: %s\n", config.SendKey)robotgo.KeyTap(config.SendKey)//等待1秒time.Sleep(1 * time.Second)// Execute the commandfmt.Println("Executing the command...")command := exec.Command(config.ExecuteCommand.Command, config.ExecuteCommand.Parameters...)commandOutput, err := command.CombinedOutput()if err != nil {fmt.Printf("Error executing command: %v\n", err)return}fmt.Printf("Command output: %s\n", string(commandOutput))
}func readConfig(configFile string) Config {data, err := ioutil.ReadFile(configFile)if err != nil {fmt.Printf("Error reading config file: %v\n", err)os.Exit(1)}var config Configerr = yaml.Unmarshal(data, &config)if err != nil {fmt.Printf("Error unmarshalling config file: %v\n", err)os.Exit(1)}return config
}func waitWithCountdown(seconds int) {for i := seconds; i > 0; i-- {fmt.Printf("Waiting... %d seconds remaining\n", i)time.Sleep(1 * time.Second)}
}func moveMouse() {// 首先直接鼠标位置设置为 (800, 800)robotgo.Move(800, 800)// 然后,完成一次点击,(按下弹起)robotgo.Click("left")// 注意鼠标两次点击之间应当有一个时间间隔,否则可能不会触发双击的time.Sleep(100 * time.Millisecond)// 再来一次点击robotgo.Click("left")// 等待 2 秒钟(2000 毫秒)time.Sleep(2 * time.Second)// 将鼠标光标移动到另一个位置(2000, 2000)robotgo.Move(2000, 2000)
}

go程序的作用是打开模拟器->等待配置文件中设置的等待时间->移动鼠标点击模拟器->发送全屏快捷键->执行打开指定app的命令

三.在pc中的设置

1.将golang编译出来的程序和配置文件拷入D盘

2.在windows的启动目录中放入start.exe的快捷方式,并将start.exe修改为管理员权限

重启PC,自动启动模拟器,然后启动指定app

已经编译好的go程序和配置文件

自动启动雷电模拟器,然后启动指定app-其他文档类资源-CSDN文库

开机启动雷电模拟器 全屏 启动指定app相关推荐

  1. 开机自启动夜神模拟器全屏并打开指定apk

    公司最近提了个新的需求,要求用模拟器开机自启动指定apk并全屏,没太弄过这个方面,在网上找了些方法解决了,在这里记录一下. 解决方案: 思路大致是用批处理文件打开模拟器,然后通过模拟键盘按键用全屏快捷 ...

  2. 树莓派开机不加载桌面全屏启动chromium浏览器

    编辑/etc目录下的profile文件. sudo nano /etc/profile 在这个文件的顶部 输入chromium可执行文件的绝对路径,正常为 /usr/lib/chromium-brow ...

  3. Chrome浏览器全屏打开指定网页以及开机自启

    前言 最近一个项目是给社区做一个便民服务,设备是室外触摸大屏(windows系统),而项目载体居然是web网页.项目的核心是只给用户使用网页上的内容,那么需求就很明确了: 浏览器全屏打开指定网页 浏览 ...

  4. 如何将谷歌浏览器设置为开机全屏启动指定网页

    第一步,添加指定网页全屏启动. 首先,将谷歌浏览器发送至桌面快捷方式. 在快捷方式上点击右键,选择属性,在目标栏最后打一个空格,输入--kiosk 需要全屏启动的网址.(配置好后关闭所有浏览器,再打开 ...

  5. 开机全屏启动谷歌浏览器,打开指定页面,不可关闭最小化和还原

    一.首先创建一个浏览器的快捷方式 二.右键快捷方式->属性 目标 :"C:\Program Files (x86)\Google\Chrome\Application\chrome_p ...

  6. 虚拟桌面启动后自动全屏

    如果客户端有多个显示器,打开虚拟桌面后,如果需要进入到全屏模式(覆盖所有的客户端显示器),目前还是需要一定技巧的,需要把桌面拖放到两个屏幕的中间,然后全屏才可以实现.否则,简单的全屏只会覆盖当前所在的 ...

  7. 雷电模拟总是显示android启动,雷电模拟器启动失败如何解决?启动失败解决方法图文分享...

    雷电模拟器启动失败卡在0-29%怎么解决?有很多用户在启动雷电安卓模拟器程序时,发现程序启动卡在0-29%,启动失败的情况,下面通过这篇文章给大家讲讲怎么解决. 雷电安卓模拟器加载时卡在89%解决方法 ...

  8. 应用全屏启动页适配小米9(水滴屏)

    启动页的简单制作 网上已经有这方面的教程,我选用的是我认为比较方便简单的方式,首先创建Activity: class LunchActivity : AppCompatActivity() {over ...

  9. 雷电模拟器一直android正在启动,雷电模拟器启动失败卡在0-29%怎么解决 加载卡0-29%教程...

    雷电模拟器启动失败卡在0-29%怎么解决?有很多用户在启动雷电安卓模拟器程序时,发现程序启动卡在0-29%,启动失败的情况,下面通过这篇文章给大家讲讲怎么解决. 雷电模拟器使用教程==>雷电安卓 ...

最新文章

  1. 开发日记-20190328 关键词 利用eolinker一键快速生成API接口文档
  2. w3cschool的jQuery Mobile教程总结
  3. 转货币格式和 rgb转hex
  4. 尝试在centos5下运行phantomjs2
  5. 2-4 测试案例helloWorld
  6. 从拉格朗日乘数法到KKT条件
  7. 使用jsp,tag提取字符串中的单词
  8. Flume监听文件夹中的文件变化_并把文件下沉到hdfs
  9. ipv6 ripng配置
  10. 基于 C#遥感图像处理方法(代码实现)
  11. 如何使用Zend Expressive建立NASA照片库
  12. ubuntu下vscode配置C++项目编译调试(json文件),以高翔octomap教程为例,顺便解决vscode无法设置断点问题.
  13. android pie mi 3 tab,前沿科技:三星Galaxy Tab S3和Tab A(2017)正在获得Android 9.0 Pie更新
  14. 对分解和组合思维方法的理解
  15. 系统自带的最便捷的远程控制方法
  16. POJ - 3067
  17. 重装系统Win7步骤
  18. 编写一个函数,计算两个数字的和,差,积,商
  19. NOI Linux备忘(竞赛)
  20. 开源一款娱乐的qq机器人-QQRobot

热门文章

  1. 【tensorflow.js学习笔记(1)】tf.js环境搭建及曲线拟合例子
  2. python向上取整_python怎么向上取整
  3. Mac中如何查看java版本
  4. python 水晶报表_什么是水晶报表与水晶报表功能分析
  5. 大象装企营销:不会内容营销的装饰公司一定要看
  6. 莫西的伤感情侣日志推荐:分手的那一刻,我们变得陌生
  7. 跳舞的伤感心情日志:你恋或者不恋,爱就在那里
  8. Ubuntu16.04桌面指南6--文件、文件夹和搜索
  9. 荣耀8X鸿蒙OS系统,华为全面启用鸿蒙OS系统!所有华为终端设备:默认搭载鸿蒙系统...
  10. 本周最新文献速递20210822