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 欢迎转帖 请保持文本完整 ...
随机推荐
- Centos6升级至openssh-7.5p1
最近公司有几台服务器需要搬至甲方(政府单位),所以在安装服务时用的是16年的openssh7.3pl, 今天通知我们有漏洞,需要再一次升级,看到官方文档上版本已升级至7.5,所以干脆直接搞7.5 具体 ...
- linux下搭建python机器学习环境
前言 在 linux 下搭建 python 机器学习环境还是比较容易的,考虑到包依赖的问题,最好建立一个虚拟环境作为机器学习工作环境,在建立的虚拟环境中,再安装各种需要的包,主要有以下6个(这是看这个 ...
- android点击事件的四种方式
android点击事件的四种方式 第一种方式:创建内部类实现点击事件 代码如下: package com.example.dail; import android.text.TextUtils; im ...
- [python][odlboy]设置字符串打印的颜色
格式:\033[显示方式;前景色;背景色m 说明:前景色 背景色 颜色---------------------------------------30 ...
- 如何使用HtmlTestRunner让自动化测试报告内容更丰富
原文出自:http://www.cnblogs.com/tsbc/p/4128150.html 简述 使用selenium webdriver + Python做自动化测试,执行完成后要生成测试报告, ...
- 关于requestanimationframe
首先字面理解,请求动画框架, 用法: var nextFrame = (function() { return window.requestAnimationFrame || window.webki ...
- 20181120-6 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 03
此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2411] 版本控制地址 [https://git.coding.n ...
- 基础系列(4)—— C#装箱和拆箱
一 装箱和拆箱的概念 装箱是将值类型转换为引用类型 : 拆箱是将引用类型转换为值类型 : 值类型:包括原类型(Sbyte.Byte.Short.Ushort.Int.Uint.Long.Ulong.C ...
- WPF和Expression Blend开发实例:模拟QQ登陆界面打开和关闭特效
不管在消费者的心中腾讯是一个怎么样的模仿者抄袭者的形象,但是腾讯在软件交互上的设计一直是一流的.正如某位已故的知名产品经理所说的:设计并非外观怎样,感觉如何.设计的是产品的工作原理.我觉得腾讯掌握了其 ...
- inotify 工具 是一种强大的、细粒度的、异步文件系统监控机制
前言:Inotify是一种强大的.细粒度的.异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性.读写属性.权限属性.删除创建.移动等操作,也就是可以监控文件发生的一切变化. ...