公司最近提了个新的需求,要求用模拟器开机自启动指定apk并全屏,没太弄过这个方面,在网上找了些方法解决了,在这里记录一下。 

解决方案:

思路大致是用批处理文件打开模拟器,然后通过模拟键盘按键用全屏快捷键达到全屏的效果。

1.新建个star.txt文档,将如下文字写入,修改后缀为bat。

start "" "D:\Program Files\Nox\bin\Nox.exe" -package:com.tl.calendar

D:\Program Files\Nox\bin\Nox.exe是我电脑夜神模拟器的启动路径,修改为自己的。

com.tl.calendar是我要用安卓模拟器打开的apk的包名,包名查看如下。

2.这里查找包名是用adb命令查询。

(1)下载adb

ADB Download - Get the latest version of ADB and fastboot

(2)配置环境变量

windows窗口搜查看高级系统设置->环境变量->新建环境变量->编辑path环境变量

新建环境变量:

变量名:ANDROID_HOME

变量值:C:\Users\84841\Downloads\platform-tools_r33.0.3-windows

变量值填写下载的adb的绝对路径

android 13 adb 切换充电模式 安卓adb怎么用_android

编辑path环境变量:

android 13 adb 切换充电模式 安卓adb怎么用_学习_02

添加:%ANDROID_HOME%\platform-tools

(3)打开命令行输入adb,如图则为环境变量配置成功

android 13 adb 切换充电模式 安卓adb怎么用_环境变量_03

(4)将apk安装到手机上并运行,打开开发者模式

 在命令行输入adb shell dumpsys window w |findstr \/ |findstr name=

如下图:

android 13 adb 切换充电模式 安卓adb怎么用_全屏_04

 这样就获得了包名。

3.编写vbs并加入到开机启动

创建startwnl.txt 写入下

Set ws = CreateObject("WScript.Shell")
wscript.sleep 5000
ws.Run "D:\start.bat",0
wscript.sleep 3000
ws.SendKeys "^0"

通过 win+R 输入shell:startup 打开开机自启文件夹,将startwnl后缀改为vbs文件放到自启文件夹中。

这里测试可以开机自启模拟器但是无法全屏,是因为开机后鼠标焦点并不在模拟器上而导致全屏按键没用,这里需要用vs模拟鼠标点击。

4.模拟鼠标点击

在vs中新建项目,写入如下代码

#include<iostream>
#include<conio.h>
#include<windows.h>

#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )

#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,我是背下来的 

using namespace std;

int main() {
	//首先直接鼠标位置设置为(500,500)
	SetCursorPos(800, 800);
	//然后,完成一次点击,(按下弹起)
	mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
	mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
	//注意鼠标两次点击之间应当有一个时间间隔,否则可能不会出发双击的
	Sleep(100);
	//再来一次点击
	mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
	mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
	Sleep(2000);
	SetCursorPos(2000, 2000);
}

然后生成exe文件:

android 13 adb 切换充电模式 安卓adb怎么用_全屏_05

 修改vbs文件为:

Set ws = CreateObject("WScript.Shell")
wscript.sleep 5000
ws.Run "D:\start.bat",0
wscript.sleep 30000
ws.Run "D:\MouseClick.exe",0
wscript.sleep 3000
ws.SendKeys "^0"

这里的30000时间要一定长,否则模拟器未打开而执行了鼠标点击导致无法聚焦!