码迷,mamicode.com
首页 > 其他好文 > 详细

12.UiAutomator 获取系统信息

时间:2016-02-28 19:51:55      阅读:408      评论:0      收藏:0      [点我收藏+]

标签:

一、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 获取系统信息

标签:

原文地址:http://www.cnblogs.com/JianXu/p/5225287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!