Configuración y adquisición de propiedades del sistema global de desarrollo del marco de Android

Este artículo se reproduce http://blog.csdn.net/qq435757399/article/details/30270875

Línea de comando de Android/lenguaje c/método de configuración de Java para obtener las propiedades del sistema
Establezca y obtenga las propiedades de SystemProperty en Java:

[Java]  ver plano  Copiar
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. SystemProperties.getInt( "persist.sys.boot_music_control" 0 )  
  2.   
  3. SystemProperties.set( "persist.sys.boot_music_control" "" +valor);  
Obtenga el valor del atributo establecido en la capa de Java en C++:
[Java]  ver plano  Copiar
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. char  boot_music_control[PROPIEDAD_VALOR_MAX];  
  2.  if  (property_get( "persist.sys.boot_music_control" , boot_music_control,  0 ) !=  0 ) {  
  3.      mediastatus = mediaplayer->setDataSource(pBackupSoundFileName, NULL);  
  4.  }  
    1 Interfaz de adquisición y configuración de propiedades de línea de comando (shell)
    2 Interfaz de adquisición y configuración de propiedades de lenguaje c/c++
    3 Interfaz de adquisición y configuración de propiedades de lenguaje Java
           Android proporciona un conjunto de métodos de adquisición y configuración de parámetros del sistema, estos parámetros se pueden usar en el sistema android Configuración y adquisición estática o dinámica, usando la clase SystemProperty (esta clase solo se usa en marcos o aplicaciones de nivel de sistema), hay una gran cantidad de códigos: SystemProperties.set()/SystemProperties.get(); a través de estas dos interfaces , puede Las propiedades del sistema se leen/establecen Como su nombre lo indica, las propiedades del sistema deben compartirse globalmente para todo el sistema. Por lo general, la ejecución de programas es independiente entre sí en unidades de procesos ¿Cómo realizar el intercambio global?
        ¿Qué son las propiedades del sistema ( Introducción detallada y principio de SystemProperty ) y cómo se realizan?
       El sistema de atributos es una característica importante de Android. Se ejecuta como un servicio y administra la configuración y el estado del sistema. Todas estas configuraciones y estados son propiedades.
Cada atributo es un par clave-valor (par clave/valor), cuyo tipo es una cadena.
Estas propiedades pueden ser el estado de uso de algunos recursos, el estado de ejecución del proceso y las propiedades únicas del sistema...
 configuración de propiedades de la línea de comandos (shell) e interfaz de adquisición
getprop "clave"
setprop "clave" "valor"
c Configuración y adquisición de las propiedades del lenguaje /c++ El
código de la interfaz se define en:
[Java]  ver plano  Copiar
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. system/core/libcutils/properties.c  
  2.    
  3. #define PROPERTY_KEY_MAX   32  
  4. #define PROPERTY_VALUE_MAX  92  
  5.    
  6. int property_get(const char *key, char*value, const char *default_value);  
  7. int property_set(const char *key, constchar *value);  
  8. int property_list(void (*propfn)(const char *key, constchar *value, void*cookie), void *cookie);     
使用:
[java]  view plain  copy
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. #include "cutils/properties.h"  
  2.    
  3. char prop[PROPERTY_VALUE_MAX] = "000";  
  4. if(property_get("prop_name", prop, NULL) != 0) {  
  5.     ...  
  6. }  
说明:
    property_get返回值为get到的属性值的字符串长度.
    prop_name为属性名.
    prop为存放属性值字符串的地方.
 Java语言 properties设置和获取的接口
frameworks/base/core/java/android/os/SystemProperties.java
[java]  view plain  copy
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. <span style="font-size:14px;">public static final int PROP_NAME_MAX = 31;  
  2. public static final int PROP_VALUE_MAX = 91;  
  3. public static String get(String key) ;  
  4. public static String get(String key, String def) ;  
  5. public static int getInt(String key,int def) ;  
  6. public static long getLong(String key,long def) ;  
  7. public static boolean getBoolean(String key, boolean def) ;  
  8. public static void set(String key, String val) ;  
  9. public static void addChangeCallback(Runnable callback) ;  
  10. </span>  

遇到问题解决:

1.在Setting中添加开关使用getProperty()和setProperty()属性来进行属性的获取和设置,在命令行使用

[java]  view plain  copy
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. adb shell getprop  

来查看属性的值:

[java]  view plain  copy
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. [persist.service.adb.enable]: []  
  2. [persist.sys.ams.recover]: [false]  
  3. <span style="color:#FF0000;">[persist.sys.boot_music_control]: [1]</span>  
  4. [persist.sys.bootpackage]: [1]  
  5. [persist.sys.btn_auto_light]: [1]  
2.在C++中获取不到build.prop中设置的属性值:

[java]  view plain  copy
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1. <span style="color:#FF0000;">persist.sys.boot_music_control</span>  

解决:

[java]  view plain  copy
  Echa un vistazo a los fragmentos de código en CODE derivado a mi segmento de código
  1.                      //Modfy by jjli,control the boot and shutdown music   
  2. char boot_music_control[PROPERTY_VALUE_MAX];      
  3. property_get("persist.sys.boot_music_control", boot_music_control, 1);  
  4. int boot_music_value = atoi(boot_music_control);      
  5. si  (boot_music_value ==  1 ) {      
  6. mediastatus = mediaplayer->setDataSource(pBackupSoundFileName, NULL);  

Supongo que te gusta

Origin blog.csdn.net/Vincent20111024/article/details/50754370
Recomendado
Clasificación