江中游电脑版按键论坛教学总录:http://bbs.anjian.com/showtopic-697741-1.aspx
江中游安卓手机系统教学总录: http://bbs.anjian.com/showtopic-699643-1.aspx
江中游异次元 ——未来的夏娃
第5课 adb获取系统信息
要求:请瞪圆你的眼睛,昨天有朋友和我说调试时adb命令不好用,其实他只是看着电脑并没注意手机的变化 ,比如信任此电脑他一直没有点允许。
疑问:为什么江老师一直强调空格呢?
英文的每个单词之间一定要有空格,比如英文的for大家都知道是"循环"的意思,ever中文的意思是"曾经",这完全是两个内容,但是如果你不加空格呢?forever,翻译成中文就是“永远”的意思了。当然有的合并在一起就没有意思了,所以大家一定要知道空格的重要性。
疑问:什么是shell命令呢:
操作系统运行的本身其实并不需要人来控制。但人需要告诉操作系统做什么这就叫做人对话,而人机对话所使用的交互程序就被称为shell。基本的人机对话是dos命令,而在windows中shell有点苍白了,不过在未来的发展手机的兴起shell还会再次卷土重来的。
注意:整篇的代码我就不写了,我主要写本功能的代码。主要也是节省一下空间免的大家看的文章很长很长,不想继续学习了。本文最后下载中有全部的源码文件
1、取屏幕分辨率,注意配置文件adb.ini中就不要再加adb了,并且我上一课也教大家是怎么控制单个手机,所以本文不再重述:
adb原生命令
adb.ini方式,注意注意:hell wm size 前必须要有
空格,这是必须的
按键应用命令后会出现 "
hysical size: ",翻译成中文为:物理尺寸,那么就代表成功了
测试开始:- //调用服务取设备ID请见http://bbs.anjian.com/showtopic-699720-1.aspx
- 分辨率 = 取屏幕分辨率(设备数组(0))
- TracePrint "当前设备分辨率为:"&分辨率
- Function 取屏幕分辨率(设备ID)
- Dim 命令, adbret, arr, tmp
- 命令 =Plugin.File.ReadINI("adb", "取分辨率", adbcmd)'读取保存在ini文件中的命令
- adbret = Plugin.JzyCommand.Command(adb & 命令, 1000)'使用我的插件来获取连接的设备
- If instr(adbret, "Physical size: ") >= 0 Then '如果有"Physical size: "字符串
- adbret = Replace(adbret, "Physical size: ","")'过滤一下更健康
- arr = split(adbret, "|")
- If UBound(arr) > 1 Then '虽然我考虑很周全了,但还是要判断一下免的出现万恶的下标越界
- tmp=arr(0)
- End If
- End If
- 取屏幕分辨率 = tmp
- End Function
复制代码 2、取屏幕dpi:取屏幕dpi,注意配置文件adb.ini中就不要再加adb了,并且我上一课也教大家是怎么控制单个手机,所以本文不再重述:adb原生命令
adb.ini方式,注意注意:Physical density 前必须要有空格,这是必须的
按键应用命令后会出现 "Physical density ",翻译成中文为:物理密度,那么就代表成功了
测试开始:
- //调用服务取设备ID请见http://bbs.anjian.com/showtopic-699720-1.aspx
- DPI = 取屏幕DPI(设备数组(0))
- TracePrint "当前设备DPI为:" & DPI
- Function 取屏幕DPI(设备ID)
- Dim 命令, adbret, arr, tmp
- 命令 =Plugin.File.ReadINI("adb", "取DPI", adbcmd)'读取保存在ini文件中的命令
- adbret = Plugin.JzyCommand.Command(adb & 命令, 1000)'使用我的插件来获取连接的设备
- TracePrint adbret
- If instr(adbret, "Physical density: ") >= 0 Then '如果有"Physical density: "字符串
- adbret = Replace(adbret, "Physical density: ","")'过滤一下更健康
- arr = split(adbret, "|")
- If UBound(arr) > 1 Then '虽然我考虑很周全了,但还是要判断一下免的出现万恶的下标越界
- tmp=arr(0)
- End If
- End If
- 取屏幕DPI = tmp
- End Function
复制代码3、
3、获取设备的IP:adb原生命令adb.ini方式,注意注意:shell ip route 前必须要有
空格,这是必须的
- //调用服务取设备ID请见http://bbs.anjian.com/showtopic-699720-1.aspx
- IP = 取设备IP(设备数组(0))
- TracePrint "当前设备IP为:" & IP
- Function 取设备IP(设备ID)
- Dim 命令, 关键字, 出现位置, 关键字长度, adbret, arr, tmp
- 命令 =Plugin.File.ReadINI("adb", "IP地址", adbcmd)'读取保存在ini文件中的命令
- adbret = Plugin.JzyCommand.Command(adb & 命令, 1000)'使用我的插件来获取连接的设备
- TracePrint adbret
- 关键字 = "proto kernel scope link src "'如果有IP返回,那么就会有这串字符
- 出现位置 = instr(adbret, 关键字)
- 关键字长度 = len(关键字)
- If 出现位置 >= 0 Then '如果有"proto kernel scope link src"字符串
- adbret = Replace(adbret, left(adbret, 出现位置 + 关键字长度-1), "")'计算出IP地址左边的字符串长度并取出并替换掉,过滤一下更健康
- TracePrint adbret
- arr = split(adbret, "|")
- If UBound(arr) > 1 Then '虽然我考虑很周全了,但还是要判断一下免的出现万恶的下标越界
- tmp=arr(0)
- End If
- End If
- 取设备IP = tmp
- End Function
复制代码 4、获取设备的型号:adb原生命令- adb shell getprop ro.product.model
复制代码 adb.ini方式,注意注意:shell getprop ro.product.model 前必须要有
空格,这是必须的
- //调用服务取设备ID请见http://bbs.anjian.com/showtopic-699720-1.aspx
- 型号 = 取设备型号(设备数组(0))
- TracePrint "当前设备型号为:" & 型号
- Function 取设备型号(设备ID)
- Dim 命令, adbret, arr, tmp
- 命令 =Plugin.File.ReadINI("adb", "设备型号", adbcmd)'读取保存在ini文件中的命令
- adbret = Plugin.JzyCommand.Command(adb & 命令, 1000)'使用我的插件来获取连接的设备
- TracePrint adbret
- arr = split(adbret, "|")
- If UBound(arr) > 1 Then '虽然我考虑很周全了,但还是要判断一下免的出现万恶的下标越界
- tmp=arr(0)
- End If
- 取设备型号 = tmp
- End Function
复制代码 5、查看android_id:adb原生命令- adb shell settings get secure android_id
复制代码 adb.ini方式,注意注意:shell settings get secure android_id 前必须要有
空格,这是必须的
那么记事本怎么写呢?
那么按键怎么写呢?
我给大家留个作业吧,按我上面的方式灵活变通一下就可以获取到安卓的ID。
好喽,下节课我们继续研究其它一些高级问题
下面附件是adb及我的插件还有教学中的源码: