一、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 获取系统信息的更多相关文章

  1. psutil——获取系统信息的Python第三方模块

    本文摘自廖雪峰大神个人网站:https://www.liaoxuefeng.com/wiki/1016959663602400/1183565811281984 用Python来编写脚本简化日常的运维 ...

  2. python获取系统信息psutil

    python获取系统信息psutil:psutil获取系统cpu使用率的方法是cpu_percent(),其有两个参数,分别是interval和percpu,interval指定的是计算cpu使用率的 ...

  3. 【UG二次开发】获取系统信息UF_ask_system_info

    获取系统信息可以使用这个函数UF_ask_system_info 下面是例子: 1 extern DllExport void ufsta(char *param, int *returnCode, ...

  4. php获取系统信息的方法

    php获取系统信息的方法. 用 getenv函数进行处理: <?php $root = getenv('DOCUMENT_ROOT'); ////服务器文档根目录 $port = getenv( ...

  5. 灵活使用getconf命令来获取系统信息

    http://blog.chinaunix.net/uid-23105261-id-109513.html 灵活使用getconf命令来获取系统信息 我们时常需要查询系统相关的信息,比如页面大小,整数 ...

  6. win10 UWP 获取系统信息

    获取系统信息 Windows.System.Profile.AnalyticsVersionInfo analyticsVersion = Windows.System.Profile.Analyti ...

  7. Java如何获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)

    1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息. 下载地址:http://sourceforge ...

  8. JAVA获取系统信息以及系统时间

    在做测试的时候,经常需要获取系统信息,并且用获取到的系统时间给生成的报告取名字. 以下代码实在TestNG展示的,没有Test NG的话需要些一个main方法. import java.net.Ine ...

  9. 主机性能监控之wmi 获取系统信息及内存性能信息

    标 题: 主机性能监控之wmi 获取系统信息及内存性能信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990240.html 欢迎转帖 请保持文本完整 ...

随机推荐

  1. 【shell 每日一练7】一键安装mysql5.7,以及密码及策略修改

    一.一键安装Mysql脚本 [root@uat01 ~]# cat InstallMysql01.sh #!/bin/bash #-- #旅行者-Travel #.安装wget yum -y inst ...

  2. 在GPT格式的硬盘上,使用EFI启动的方式,安装Win7 64位系统

    Win7 sp1 原装系统,用UltraISO(软碟通) 把U 盘制成Win7 安装的启动U盘 将bootmgfw.efi和shell.efi 加到已制好启动U盘的根目录,并在efi/boot/路径下 ...

  3. 什么是Meta标签? 哪些Meta标签对搜索引擎SEO优化有作用?

    什么是Meta标签? Meta标签给搜索引擎提供了许多关于网页的信息,这些信息都是隐含信息,意味着对于网页自身的访问者是不可见的. 你可以在网页的 <head>元素中发现<meta& ...

  4. 王者荣耀交流协会第四次Scrum立会

    会议时间:2017年10月23号   18:00-18:28,时长28分钟. 会议地点:二食堂一楼第四个档口对着的靠路边的桌子. 立会内容: 1.小组成员汇报今日工作: 2.关于折线图与饼状图生成问题 ...

  5. OOP 1.5 类和对象的基本概念与用法1

    1.定义 面向对象的基本特点:抽象.封装.继承.多态 面向对象程序设计方法:将某类客观事物的共同特点归纳出来,形成一个数据结构 抽象:将事物所能进行的行为归纳出来,形成一个个函数,这些函数可以用来操作 ...

  6. 第四次c++作业

    一,GitHub地址 https://github.com/ronghuijun/3Elevators-scheduling 二,命令行和文件读写 百度有时候有点蒙,命令行用的是D:>Eleva ...

  7. Xcode 6添加模板无效

    最近发现从Xcode 5拷贝来的模板在Xcode 6上是OK的,但是自己自定义的却不行,一直使用的是自定义的基类模板,最后发现原因是没有在 TemplateInfo.plist 中注册自定义的模板,注 ...

  8. mybatis_mysql

    SELECT round(avg(c.AVG_DELAY_TIME)) as AVG_DELAY FROM `result_road_saturation_day` a LEFT JOIN info_ ...

  9. json_decode遇到的编码问题

    初入csdn,就最近遇到的简单问题做一个功能解释; json_encode和json_decode只针对utf8字符有效,如果遇到其他编码比如gbk,需要进行转码然后解析: header(" ...

  10. linux 内核态调试函数BUG_ON()[转]

    一些内核调用可以用来方便标记bug,提供断言并输出信息.最常用的两个是BUG()和BUG_ON(). 当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印.为什么这些声明会导致 oops跟 ...