日期:2014-05-16  浏览次数:21183 次

adb命令控制横/竖屏切换

?

在网络上查找了一下使用adb命令来控制真机的横竖屏的命令,普遍找到的结果是:

adb shell service call window 2013 i32 0(设置横屏)

adb shell service call window 2013 i32 1(设置竖屏)

?

但是在真机(root过)上测试普遍没有通过,会有出错信息。(Result: Parcel(Error: 0xffffffb6 "Not a data message"))

?

查看一下service的使用说明

adb shell service --help

unknown option -- -unknown option -- eunknown option -- lunknown option -- pUsage: service [-h|-?]

? ? ? ?service list

? ? ? ?service check SERVICE

? ? ? ?service call SERVICE CODE [i32 INT | s16 STR] ...

Options:

? ?i32: Write the integer INT into the send parcel.

? ?s16: Write the UTF-16 string STR into the send parcel.

?

首先,service list很明显就是查看service列表啦!

其次,service check SERVICE就是检测服务是否存在啦!

最后,service call SERVICE CODE [i32 INT | s16 STR] ...SERVICE可从list中获取,CODE的获取方法(http://xtor.warp.es/?p=1093,CODE列表:http://xtor.warp.es/wp-content//uploads/2011/03/android_transaction_codes.txt),但是发现看到的不是很准确,(这个可以自己写个循环脚本试验一下)。i32代表数字,s16代表字符串。

?

本人找不到真正代表window横竖屏的CODE,所以写了个循环脚本,通过观察现象,找到了对应的CODE,那就是74。

adb shell service call window 74 i32 0(设置横屏)

adb shell service call window 74 i32 1(设置竖屏)

?

符上脚本代码:

#!bin/bash
count=0
while [ "$count" -lt 1000 ]; do
	echo "$count"
	adb shell service call window "$count" i32 0
	count=$(($count+1))
done
?