minicap竖屏横屏切换
minicap的使用
mnicap如何使用看这篇帖子就够了。
minicap竖屏
-P 后面的参数格式:{RealWidth}x{RealHeight}@{VirtualWidth}x{VirtualHeight}/{Orientation}
Orientation可以理解为手机的旋转角度,可选参数为 0 | 90 | 180 | 270
init.js核心代码如下:
'use strict';
const execSync = require('child_process').execSync;
var info = {};
/**
* 获取手机像素
*/
function getWMsize() {
var data = execSync('adb shell wm size').toString();
var size;
var regex = /\d+x\d+/g;
var match = regex.exec(data);
size = match[0];
return size;
}
/**
*初始化
*/
function initMinicap(){
var size = getWMsize();
info.size = size;
info.width = size.substring(0,size.indexOf('x'));
info.height = size.substring(size.indexOf('x')+1);
var cwd = process.cwd();
cwd = cwd.replace(/\\/g,'/');
execSync('adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P '+ info.width +'x'+ info.height +'@'+ info.width/3 +'x'+ (info.height/3) +'/0');
execSync('adb forward tcp:1717 localabstract:minicap');
}
//执行初始化
initMinicap();
minicap横屏
只需要将Orientation改成90或者270即可实现横屏,其他代码块跟竖屏代码块保持一致就ok。
minicap竖屏和横屏的切换
目前只会手动方式。
通过执行横屏或者竖屏的当前cmd窗口,ctrl+c即可停止。
还有一种方式是进入到adb shell下执行如下命令:
等我研究出如何自动关闭minicap实现竖屏和横屏的切换时再来更新这个帖子吧。
minicap关闭
(1)java代码实现
public static void excuteExec(int orientation){
OutputStream out;
InputStream in;
try {
Process pro = CMDutils.excuteCMD4Process(Content.ADB +" shell");
out = pro.getOutputStream();
in = pro.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
PrintWriter pw = new PrintWriter(out);
pw.println("ps -ef|grep minicap");
pw.flush();
String s = reader.readLine();
while (s!=null) {
//获取所需pid 并杀掉pid的进程
if(s.contains("shell") && s.contains(" minicap -P ")) {
System.out.println(s);
String[] strs = s.split(" ");
System.out.println(strs[8]);
//杀掉minicap进程
pw.println("kill -9 "+strs[8]);
pw.flush();
//重新启动minicap进程
MinicapActivity ac = new MinicapActivity();
ac.restartMinicap(orientation);
}
s = reader.readLine();
}
} catch (IOException e) {
System.out.println("ERROR:"+e.getMessage());
}
}
(2)python脚本实现
#查看minicap进程并杀掉
pid_lines = os.popen('adb shell "ps -ef|grep minicap"').readlines()
for one_line in pid_lines:
pid_list = one_line.split()
print(pid_list)
if len(pid_list) > 7 and pid_list[7] != "grep" and pid_list[7] !="sh":
os.system('adb shell "kill -9 "' + pid_list[1])