浅析Android系统属性SystemProperties

一、查看系统属性build.prop
   Android系统主要通过SystemProperties这个类,直接本地调用来实现创建、获取及修改系统属性。
   Systemproperties类在android.os下,路径为:
   /frameworks/base/core/java/android/os/SystemProperties.java
   
   在手机系统中,我们可以通过如下命令查看到系统属性文件build.prop。
   jinzhimin@jinzhimin:~$ adb remount        //连接到手机系统
   remount succeeded
   jinzhimin@jinzhimin:~$ adb shell           //进入到手机系统
   # cd system                              //连接system目录
   # ls                                     //查看文件
   usr
   xbin
   bin
   res
   media
   lib
   vendor
   etc
   app
   build.prop
   fonts
   secro
   lost+found
   framework
   # exit                                   //退出手机系统
jinzhimin@jinzhimin:~$ adb pull /system/build.prop /home/jinzhimin/00          //将系统属性文件build.prop拷贝出来
   43 KB/s (3543 bytes in 0.079s)
   jinzhimin@jinzhimin:~$
   
   这样,我们就可以通过build.prop查看手机系统属性了。
   当然了,我们在成功编译完源代码后,在以下目录下也可以看到build.prop。
   /out/target/product/huaqin75_cu_ics/system/build.prop
   
   build.prop是如何生成的呢?Android的build.prop文件是在Android编译时刻收集的各种property,编译完成之后,文件生成在/out/target/product/huaqin75_cu_ics/system/目录下。在Android运行时刻可以通过SystemProperties_get*()读取这些属性值。
   build.prop的生成是由make系统解析build/core/Makefile完成。
二、Android手机build.prop参数详解(手机型号不同,有些内容可能不一样)
  ro.build.version.sdk=10         sdk版本 10对应2.3ROM
  ro.build.version.release=2.3.4    android版本
  ro.build.date=三 12月 15 20:41:26 CST 2010   时区时间CST可以代表4个时区
  ro.product.model=GT540           手机型号    
  ro.product.locale.language=zh   刷机后默认语言
  ro.product.locale.region=CN     刷机后启动的默认语言
  ro.build.description=soju-user 2.3.3 GRI40 102588 release-keys    内部版本号
  Default network type.   # 0 => WCDMA preferred.         默认网络类型
  wifi.supplicant_scan_interval=120    WIFI扫描时间单位为秒 调大这个值可节约耗电
  ## opengles 2.0               LINUX下针对多媒体的一些功能
  debug.sf.hw=1                    硬件加速设定 0是关闭, 1是开启
  dalvik.vm.heapsize=24m               虚拟内存范围由12M-48M, 默认是24M
  ro.config.ringtone=Playa.ogg                       默认来电铃声
  ro.config.notification_sound=regulus.ogg                            默认通知铃声
  ro.config.alarm_alert=Alarm_Beep_03.ogg                         默认闹钟铃声
  ro.modversion=CyanogenMod-7.0.3-GT540-MUR4IK   MOD版本号
  ro.setupwizard.mode=DISABLED   刷机后设置向导,ENABLED为显示,DISABLED为禁用,OPTIONAL为可选
  persist.sys.timezone=Asia/shanghai"默认时区
  media.stagefright.enable-player=true   与多媒体效果有关 
  media.stagefright.enable-meta=false  与多媒体效果有关 
  media.stagefright.enable-scan=false  与多媒体效果有关 
  media.stagefright.enable-http=false  与多媒体效果有关 
  persist.service.adb.enable=1 开启调试模式
  ro.secure=0 默认开启未知源APK
  ro.allow.mock.location=1 开启模拟位置
  settings.display.autobacklight=1       自动背光默认为开
  debug.sf.nobootanimation=0             控制开机动画的,0为关闭,1为开启!
  ro.config.hw_menu_unlockscreen=true 控制唤醒屏幕的设置
  ro.sf.lcd_density=120 (显示屏分辨率,数值越大分辨率越底)
  view.touch_slop=15 (触摸屏灵敏度,数值越大越灵敏)
  view.minimum_fling_velocity=25 (滑动速度)
  view.scroll_friction=0.008 (滑动误差)
  # RIL specific configuration. (特定设置)
  ro.ril.hsdpa.category=8 (hsdpa全称High Speed Downlink Packet Access中文意思:高速下行分组接入,设置的数越大传输越快)
  ro.ril.gprsclass=12 (GPRS设置)
  # For HSDPA low throughput (HSDPA低输量)
  ro.ril.disable.power.collapse=1 (关闭电源)
  # Modify MMS APN retry timer from 5s to 2s. (修改短信的APN设置5秒为2秒)
  keyguard.no_require_sim=true (手机卡保护设置)
  ro.com.android.dateformat=MM-dd-yyyy (默认时间格式,改为yyyy-MM-dd,显示效果就是XXXX年XX月XX日)
三、设置系统属性值(实例)
1.定义: RO_CONFIG_REMOVE_FOCUSMODE
  在mediatek\build\tools\Configoption.pm中
  定义,RO_CONFIG_REMOVE_FOCUSMODE
2.赋值:RO_CONFIG_REMOVE_FOCUSMODE = true
  在mediatek\config\huaqin75_cu_ics\XXX\ProjectConfig.mk中
  赋值,RO_CONFIG_REMOVE_FOCUSMODE = true
3.使用:在代码XXX.java中使用

实例一:
    import android.os.SystemProperties;        //导包
  ……
final boolean RemoveFocusMode = SystemProperties.getBoolean(
"ro.config.remove.focusmode",false);  //获得属性值

if (RemoveFocusMode == true) {            //使用属性值
        // Remove the focus mode if we can use tap-to-focus.
                removePreference(group, focusMode.getKey());
}
else{
           ……
}
  可以定义这样的系统属性值(布尔值)来取代宏FeatureOption,从而达到控制代码的目的。
  
实例二:
另外,这样的用法在情景模式中用得非常多,对初始音量值的定义。
赋值:RO_CONFIG_GENERAL_VOLUME_RING = 7
  RO_CONFIG_OUTDOOR_VOLUME_RING = 7(ProjectConfig.mk中)
使用: private static final int DEFAULT_RINGER_VOLUME_GENERAL = SystemProperties.getInt("ro.config.general.volume.ring", 4);
      private static final int DEFAULT_RINGER_VOLUME_OUTDOOR = SystemProperties.getInt("ro.config.outdoor.volume.ring", 6);
  也即在生成的build.prop中:
  ro.config.general.volume.ring=7
  ro.config.outdoor.volume.ring=7
  
实例三:
  还可以定义初始的字符串的值,例如查询命令:*#8375#。
  赋值:RO_CONFIG_VERSIONCODE = *_86556_(客户要求指令)
  使用:final String specialVersionCode = SystemProperties.get(
   "ro.config.versioncode", "defaultVersionCode");
  specialCode = specialVersionCode.replace("_", "#");
  (这当中以” _”代替” #”)

猜你喜欢

转载自blog.csdn.net/lf12345678910/article/details/49095293