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";
    }
}
时间: 2024-09-30 18:36:05

12.UiAutomator 获取系统信息的相关文章

python获取系统信息psutil

python获取系统信息psutil:psutil获取系统cpu使用率的方法是cpu_percent(),其有两个参数,分别是interval和percpu,interval指定的是计算cpu使用率的时间间隔,percpu则指定是选择总的使用率还是每个cpu的使用率. import psutil #cpu使用率 cpu=(str)(psutil.cpu_percent(1))+'%' #剩余内存.free 总共.total memory=str(psutil.virtual_memory().f

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

本文摘自廖雪峰大神个人网站:https://www.liaoxuefeng.com/wiki/1016959663602400/1183565811281984 用Python来编写脚本简化日常的运维工作是Python的一个重要用途.在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等.要获取这些系统信息,Python可以通过subprocess模块调用并获取结果.但这样做显得很麻烦,尤其是要写很多解析代码. 在Python中获取系统信息的另一个好办法是使

java 获取系统信息及CPU的使用率(转)

java 获取系统信息及CPU的使用率 原文:http://kakaluyi.javaeye.com/blog/211492 最近做个项目,就是要取得cpu占有率等等的系统信息,一开始以为要用动态链接库了,但后来发现可以像下面这样做,不去调用jni,这样省去了很多看新技术的时间o(∩_∩)o... 在Java中,可以获得总的物理内存.剩余的物理内存.已使用的物理内存等信息,下面例子可以取得这些信息,并且获得在Windows下的内存使用率.     首先编写一个MonitorInfoBean类,用

获取系统信息

/* ************************************ *<精通Windows API> * 示例代码 * osinfo.c * 10.1 系统信息 **************************************/ /* Windows 2k */ #define _WIN32_WINNT 0x0500 /* 头文件 */ #include <windows.h> #include <Lmcons.h> #include <s

利用Sigar获取系统信息

地址 Hyperic-hq官方网站:http://www.hyperic.com Sigar.jar下载地址:http://sourceforge.net/projects/sigar/files/ Sigar.jar文档地址:https://support.hyperic.com/display/SIGAR/Home 介绍 Sigar全名是System Information Gatherer And Reporter,中文名是系统信息收集和报表工具.我是一个开源的工具,提供了跨平台的系统信息

python之psutil模块获取系统信息

psuti是一个跨平台,能够轻松实现获取系统运行进程,系统利用率信息,主要用于系统监控,分析和限制系统资源及进程管理. psutil为第三方模块,通过pip安装模块. 获取cpu信息 1.cpu信息2.User Time:执行用户进程的时间百分比3.System Time:执行内核进程和中断的时间百分比4.Wait IO 由于IO等待而使CPU处于idle空闲状态的时间百分比5.Idle,CPU处于idle状态的时间百分比 ######获取cpu的物理个数 >>> psutil.cpu_

C# 获取系统信息

public string GetMyOSName()        {            //获取当前操作系统信息            OperatingSystem MyOS = Environment.OSVersion;            string MyOSName = "";            //如果版本号是 5, 则它应该是 Win2K, XP或2003            if (MyOS.Version.Major == 5)           

通过Java代码获取系统信息

在开发中,我们需要获取JVM中的信息,以及操作系统信息,内存信息,CPU信息,磁盘信息,网络信息等,通过Java的API不能获取内存等信息,需要sigar的第三方依赖包. ①:加入依赖 <dependency> <groupId>org.hyperic.sigar</groupId> <artifactId>com.springsource.org.hyperic.sigar</artifactId> <version>1.6.3&l

获取系统信息(WINDOWS目录/系统目录/临时目录/我的文档/桌面)

1 void C获取系统目录Dlg::OnBnClickedButton1() 2 { 3 TCHAR szPath[MAX_PATH] = { 0 }; 4 GetWindowsDirectory(szPath, MAX_PATH); 5 MessageBox(szPath); 6 } 7 8 9 void C获取系统目录Dlg::OnBnClickedButton2() 10 { 11 TCHAR szPath[MAX_PATH] = { 0 }; 12 GetSystemDirectory