12.UiAutomator 获取系统信息
一、Build构建信息
1.build类:
Build类提供了硬件厂商、编号、序列号、SDK版本等重要信息。
类名:android.os.Build
|
常量名 |
说明 |
| BOARD | 底层板名称 |
| BOOTLOADER | Bootloader版本号 |
| BRAND | 品牌 |
| CPU_ABI | CPU指令集 |
| CPU_ABI2 | CPU第二指令集 |
| DEVICE | 工业设计名称 |
| DISPLAY | 显示给用户的构建ID字符串 |
| FINGERPRINT | 构建的唯一标识符 |
| HARDWARE | 硬件的名称 比如高通 |
| HOST | 主机 |
| ID | ID标签 |
| MANUFACTURER | 产品生产商 |
| MODEL | 手机型号 |
| PRODUCT | 产品名称 |
| RADIO | 无线电固件版本号 |
| SERIAL | 硬件序列号(如果可用) |
| TAGS | 逗号分隔标签描述构建,如”调试” |
| TIME | 出场时间 |
| TYPE | 构建类型 |
| USER | 构建用户名称 |
2.Build.VERSION类
Build.VERSION类提供了开发代号、内部版本、SDK版本等信息
类名:android.os.Build.VEISION
|
常量名 |
说明 |
| CODENAME | 当前的开发代号 |
| INCREMENTAL | 使用的内部值表示这个构建底层的源代码控制 |
| RELEASE | 用户可见版本字符串 |
| SDK_INT | 用户可见的SDK版本的框架 |
3.Build.VERSION_CODES类
android.os.Build.VERSION_CODES枚举当前已知的SDK版本代号
|
常量名 |
说明 |
| BASE | 2008-10:第一个版本的android |
| BASE_1_1 | 2009-02:第一个安卓更新,官方称为1.1 |
| CUPCAKE | 2009-05:android1.5 |
| CUR_DEVELOPMENT | 发展过程中构建的版本,但是未正式发布 |
| DONUT | 2009-09:android1.6 |
| ECLAIR | 2009-11:android2.0 |
| ECLAIR_0_1 | 2009-12:android2.0.1 |
| ECLAIR_MR1 | 2010-01:android2.1 |
| FROYO | 2010-06:android2.2 |
| GINGERBREAD | 2010-11:android2.3 |
| GINGERBREAD_MR1 | 2011-02:android2.3.3 |
| HONEYCOMB | 2011-02:android3.0 |
| HONEYCOMB_MR1 | 2011-05:android3.1 |
| HONEYCOMB_MR2 | 2011-06:android3.2 |
| ICE_CREAM_SANDWICH | 2011-10:android4.0 |
| ICE_CREAM_SANDWICH_MR1 | 2011-12android4.0.3 |
| JELLY_BEAN | 2012-06:android4.1 |
| JELLY_BEAN_MR1 | android4.2 |
| JELLY_BEAN_MR2 | android4.3 |
| KITKAT | android4.4 |
4.实例演示:
public void testDemo1(){
//Build类
System.out.println("Build:"+Build.BOARD);
System.out.println("Build:"+Build.BOOTLOADER);
System.out.println("Build:"+Build.CPU_ABI);
System.out.println("Build:"+Build.CPU_ABI2);
System.out.println("Build:"+Build.DEVICE);
System.out.println("Build:"+Build.DISPLAY);
System.out.println("Build:"+Build.FINGERPRINT);
System.out.println("Build:"+Build.HARDWARE);
System.out.println("Build:"+Build.HOST);
System.out.println("Build:"+Build.ID);
System.out.println("Build:"+Build.MANUFACTURER);
System.out.println("Build:"+Build.MODEL);
System.out.println("Build:"+Build.PRODUCT);
System.out.println("Build:"+Build.RADIO);
System.out.println("Build:"+Build.SERIAL);
System.out.println("Build:"+Build.TAGS);
System.out.println("Build:"+Build.TIME);
System.out.println("Build:"+Build.TYPE);
System.out.println("Build:"+Build.USER);
System.out.println("Build:"+Build.BOARD);
//Build.VERSION类
System.out.println("Build.VERSION:"+Build.VERSION.CODENAME);
System.out.println("Build.VERSION:"+Build.VERSION.INCREMENTAL);
System.out.println("Build.VERSION:"+Build.VERSION.RELEASE);
System.out.println("Build.VERSION:"+Build.VERSION.SDK_INT);
//Build.VERSION_CODES类
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.BASE);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.BASE_1_1);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.CUPCAKE);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.CUR_DEVELOPMENT);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ECLAIR);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ECLAIR_0_1);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ECLAIR_MR1);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.FROYO);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.GINGERBREAD);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.GINGERBREAD_MR1);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.HONEYCOMB);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.HONEYCOMB_MR1);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.HONEYCOMB_MR2);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ICE_CREAM_SANDWICH);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.JELLY_BEAN);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.JELLY_BEAN_MR1);
System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.JELLY_BEAN_MR2);
}
2)通过判定手机SDK级别来使用API
public void testDemo2() throws UiObjectNotFoundException{
//获取SDK版本号
int sdk=Build.VERSION.SDK_INT;
//进行判断
if (sdk>=18){
//改一下键盘输入默认时间
Configurator.getInstance().setKeyInjectionDelay(100);
}
//用例操作
UiObject editText=new UiObject(new UiSelector().className(EditText.class.getName()));
editText.setText("10086");
}
二、Environment环境变量
Environment类提供了一些常用的Android环境变量的访问和获取:
典型的文件目录,如:root目录、data目录、外部SD卡目录等SD卡状态检测,帮助了解外部存储设备的状态信息
|
API |
说明 |
| getDataDiretory() | 获取数据目录 |
| getDownloadCacheDirectory() | 获取下载缓存目录 |
| getExternalStorageDirectory() | 获取外部存储目录 |
| getExternalStoragePublicDirectory(String type) | 获取特定类型的目录 |
| getExternalStorageState() | 获取外部存储状态 |
| getRootDirectory() | 获取Root目录 |
| getStorageState(File path) | 返回给定目录的存储状态 |
| isExternalStorageEmulated() | 检查是否有外部存储设备模拟 |
| isExternalStorageRemovable() | 检查外部存储设备是否可以移除 |
- 示例:
public void testDemo1(){
//输出指定目录
System.out.println("------指定目录------");
System.out.println(Environment.getDataDirectory());//数据目录
System.out.println(Environment.getDownloadCacheDirectory());//下载缓存目录
System.out.println(Environment.getExternalStorageDirectory());//外部存储目录
System.out.println(Environment.getRootDirectory());//Root目录
//输出特定目录
System.out.println("------特定目录------");
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS));
System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES));
//列出下载目录下的文件
System.out.println("------下载目录下的文件------");
File downloadFile=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File[] file=downloadFile.listFiles();
for(File f:file){
System.out.println(f.getAbsolutePath());
}
}
三、getprop命令获取系统属性
1.系统属性
除了build类可提取系统属性外,使用命令getprop可以列出所有的系统属性,除了原生系统定义外,厂商定义的属性也会全部列出。
存放系统属性的文件位置如下:
/defalt.prop
/system/build.prop
/data/property 下的4个prop文件
- 获取的系统属性非常多,对其进行简单分类
1)dalvik.vm→ 虚拟机内存分配情况2)dhcp → 局域网参数信息
3)gsm → GSM信息
4)init → 守护进程信息
5)net → 网络信息
6)persist → 系统常驻
7)ro → 一些系统只读属性
8)wifi → wifi相关信息
8)其他厂商自定义的属性
2.常用属性举例说明
| 系统属性 | KEY |
| 硬件平台 | ro.board.platform |
| SN号 | ro.boot.serialno |
| 系统android版本号 | ro.build.version.release |
| SDK级别 | ro.build.bersion.sdk |
| 手机当前运营商信息 | gsm.operator.alpha |
| 系统版本 | ro.build.version.inscremental |
| 手机制造商信息 | ro.product.manufacturer |
| 手机型号 | ro.product.model |
| 手机名子 | ro.product.name |
| 系统语言 | ro.product.local.language |
- 实例:
public class buildTestcase extends UiAutomatorTestCase{
//快速调试
public static void main(String [] args){
new UiAutomatorHelper("test","Jian.demo.buildTestcase","testDemo1","2");
}
//用例
public void testDemo1(){
//调用设定的方法,传入key输出键值
System.out.println("硬件平台:"+getProp("ro.board.platform"));
System.out.println("SN号:"+getProp("ro.boot.serialno"));
System.out.println("系统android版本号:"+getProp("ro.build.version.release"));
System.out.println("SDK级别:"+getProp("ro.build.bersion.sdk"));
System.out.println("手机当前运营商信息:"+getProp("gsm.operator.alpha"));
System.out.println("系统版本:"+getProp("ro.build.version.inscremental"));
System.out.println("手机制造商信息:"+getProp("ro.product.manufacturer"));
System.out.println("手机型号:"+getProp("ro.product.model"));
System.out.println("手机名子:"+getProp("ro.product.name"));
System.out.println("系统语言:"+getProp("ro.product.local.language"));
}
//解析系统属性的方法
public String getProp(String key){
try{
//命令窗口输入命令
Process p=Runtime.getRuntime().exec("getprop");
//从命令中提取的输入流
InputStream in=p.getInputStream();
InputStreamReader reader=new InputStreamReader(in);
BufferedReader buff=new BufferedReader(reader);
//逐行读取并输出
String line="";
while((line=buff.readLine())!=null){
if(line.contains("["+key+"]")){
String[] s=line.split("\\[");
//调试用的
// for(String ss:s){
// System.out.println("**:"+ss);
// }
//返回值
return s[2].replaceAll("\\].*", "");
}
}
}catch(IOException e){
e.printStackTrace();
}
//如果没取到就返回这个
return "未找到对应KEY";
}
}
12.UiAutomator 获取系统信息的更多相关文章
- psutil——获取系统信息的Python第三方模块
本文摘自廖雪峰大神个人网站:https://www.liaoxuefeng.com/wiki/1016959663602400/1183565811281984 用Python来编写脚本简化日常的运维 ...
- python获取系统信息psutil
python获取系统信息psutil:psutil获取系统cpu使用率的方法是cpu_percent(),其有两个参数,分别是interval和percpu,interval指定的是计算cpu使用率的 ...
- 【UG二次开发】获取系统信息UF_ask_system_info
获取系统信息可以使用这个函数UF_ask_system_info 下面是例子: 1 extern DllExport void ufsta(char *param, int *returnCode, ...
- php获取系统信息的方法
php获取系统信息的方法. 用 getenv函数进行处理: <?php $root = getenv('DOCUMENT_ROOT'); ////服务器文档根目录 $port = getenv( ...
- 灵活使用getconf命令来获取系统信息
http://blog.chinaunix.net/uid-23105261-id-109513.html 灵活使用getconf命令来获取系统信息 我们时常需要查询系统相关的信息,比如页面大小,整数 ...
- win10 UWP 获取系统信息
获取系统信息 Windows.System.Profile.AnalyticsVersionInfo analyticsVersion = Windows.System.Profile.Analyti ...
- Java如何获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)
1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息. 下载地址:http://sourceforge ...
- JAVA获取系统信息以及系统时间
在做测试的时候,经常需要获取系统信息,并且用获取到的系统时间给生成的报告取名字. 以下代码实在TestNG展示的,没有Test NG的话需要些一个main方法. import java.net.Ine ...
- 主机性能监控之wmi 获取系统信息及内存性能信息
标 题: 主机性能监控之wmi 获取系统信息及内存性能信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990240.html 欢迎转帖 请保持文本完整 ...
随机推荐
- IO多路复用(二) -- select、poll、epoll实现TCP反射程序
接着上文IO多路复用(一)-- Select.Poll.Epoll,接下来将演示一个TCP回射程序,源代码来自于该博文https://www.cnblogs.com/Anker/p/3258674.h ...
- 阿里巴巴将在美国推出电子商务网站11 Main
新浪科技讯 北京时间2月11日晚间消息,阿里巴巴集团周二向路透社证实,阿里巴巴将通过旗下子公司Vendio和Auctiva在美国推出一个电子商务网站. 该网站的名称为“11 Main”(11main. ...
- 作业 20181120-3 Beta发布
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2408 小组介绍 组长:付佳 组员:张俊余 李文涛 孙赛佳 田良 于洋 段 ...
- Beta阶段中间产物
空天猎功能说明书:https://git.coding.net/liusx0303/Plane.git 空天猎代码控制:https://coding.net/u/MR__Chen/p/SkyHunte ...
- Thunder团队第七周 - Scrum会议5
Scrum会议5 小组名称:Thunder 项目名称:i阅app Scrum Master:邹双黛 工作照片: 宋雨沉迷于照相无法自拔,所以不在相片中. 参会成员: 王航:http://www.cnb ...
- 下载与安装APache Cordova
最近老师留了写网页版或手机版程序,但先前没有好好听javaweb,而今年又没选Android移动应用开发.所以去图书馆借了一本书是关于HTML5+CSS3+jQueryMobile的. 这几天配置了打 ...
- 《我是IT小小鸟》阅读心得
虽然读这本书是老师布置的作业,但是读了几页后就被书中的内容所吸引住了.或许是因为我也是学这个专业的,所以书中的一些内容让我觉得非常的有兴趣.作为一个学习软件工程的大一学生还没真正的认识到这个专业的深奥 ...
- 【Linux 命令】- more和less
more命令 more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b ...
- PHP面向对象之重写
覆盖(override): 基本概念 覆盖,又叫“重写”: 含义: 将一个类从父类中继承过来的属性和方法“重新定义”——此时相当于子类不想用父类的该属性或方法,而是想要定义. 覆盖的现实需要: 对于一 ...
- mysql流程控制语句
mysql编程 mysql编程中语句块包含符: 其实就是相当于js或php中大括号语法: [标识符:]begin //语句.... end [标识符]: 标识符就是定义定义的任意的名字而已,比如: ...