在网络上查找了一下使用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