Build相关属性和调用系统信息的方法

来源:互联网 发布:申通快递单打印软件 编辑:程序博客网 时间:2024/04/20 14:42

转自:http://blog.csdn.net/meng425841867/article/details/8498748

Build相关属性和调用系统信息的方法
一、Build类的作用主要是获取系统信息,他有两个嵌套类:
    Build.BOARD // 主板   
    Build.BRAND // Android系统定制商   
    Build.CPU_ABI // cpu指令集   
    Build.DEVICE // 设备参数   
    Build.DISPLAY // 显示屏参数   
    Build.FINGERPRINT // 硬件名称   
    Build.HOST  //
    Build.ID // 修订版本列表   
    Build.MANUFACTURER // 硬件制造商   
    Build.MODEL // 版本   
    Build.PRODUCT // 手机制造商   
    Build.TAGS // 描述build的标签   
    Build.TIME  //时间
    Build.TYPE // builder类型   
    Build.USER  //用户

① Build.VERSION      获取android系统的版本信息。
 当前开发代号   Build.VERSION.CODENAME  
 源码控制版本号   Build.VERSION.INCREMENTAL  
 版本字符串   Build.VERSION.RELEASE  
 版本号   Build.VERSION.SDK  
           版本号   Build.VERSION.SDK_INT  
② Build.VERSION_CODES 这个类封装了已经存在的SDK框架及android版本。

ECLAIR_0_1 December 2009: Android 2.0.1
ECLAIR_MR1 January 2010: Android 2.1
FROYO June 2010: Android 2.2
GINGERBREAD November 2010: Android 2.3
GINGERBREAD_MR1 February 2011: Android 2.3.3.
HONEYCOMB February 2011: Android 3.0.
HONEYCOMB_MR1 May 2011: Android 3.1.
HONEYCOMB_MR2 June 2011: Android 3.2.
ICE_CREAM_SANDWICH Android 4.0.
二、关于在获取系统信息的使用
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)对比应用的版本与平台的版本做相应的处理。
    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)这个语句在程序中指出应用的版本。
    getRadioVersion方法可以根据以上属性获取系统信息。
三、实例:
/** * Shows the progress UI and hides the login form. */@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) // 指明应用版本private void showProgress(final boolean show) {    // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow    // for very easy animations. If available, use these APIs to fade-in    // the progress spinner.    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { // 应用版本与平台版本对比。        int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);//获得android定义的短片动画时间        mLoginStatusView.setVisibility(View.VISIBLE);//设置该VIEW为显示        mLoginStatusView.animate().setDuration(shortAnimTime)//设置动画显示时间               .alpha(show ? 1 : 0)//设置动画的渐变效果               .setListener(new AnimatorListenerAdapter() {                   @Override                   public void onAnimationEnd(Animator animation) {                       mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE); //跟据参数控制该控件显示或隐藏                   }        });        mLoginFormView.setVisibility(View.VISIBLE);        mLoginFormView.animate().setDuration(shortAnimTime).alpha(show ? 0 : 1).setListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {                mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);            }        });    } else {        // The ViewPropertyAnimator APIs are not available, so simply show        // and hide the relevant UI components.        mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE); //根据参数控制控件的显示与隐藏        mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);    }}

问题:在使用android自带的登录界面时遇到了@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2),这段代码什么意思,在程序中起到什么作用那。

解答: 指明应用的API版本,在代码中获得平台的SDK版本与这个版本对比,在代码中判断应用与平台的兼容性。
关于获取及使用用户信息的Bulid列的介绍及使用说明。

使用@TargetApi annotaion, 使高版本API的代码在低版本SDK不报错

例如:

AsyncTask.THREAD_POOL_EXECUTOR, 这个静态变量是API11才有的, 设置project build target 为 2.1.

这个时候eclipse会提示找不到这个变量。

只要在方法前面加一个 @TargetApi(11), 这样就不会报错了,程序已经可以跑在低版本SDK上了。

另外在代码上要加一个版本判断是否执行该代码, 例子如下

@TargetApi(11)public void text() {    if (Build.VERSION.SDK_INT >= 11) {             // 使用api11 新加 api    }}

0 0