Android framework开发全局系统属性设置与获取
2016-02-27 11:19
721 查看
本文转载 http://blog.csdn.net/qq435757399/article/details/30270875
Android命令行/c语言/java设置获取系统属性的方法
Java中设置和获取SystemProperty属性:
[java] view
plain copy
SystemProperties.getInt("persist.sys.boot_music_control", 0)
SystemProperties.set("persist.sys.boot_music_control", ""+value);
C++中获取Java层中设置的属性值:
[java] view
plain copy
char boot_music_control[PROPERTY_VALUE_MAX];
if (property_get("persist.sys.boot_music_control", boot_music_control, 0) != 0) {
mediastatus = mediaplayer->setDataSource(pBackupSoundFileName, NULL);
}
1 命令行(shell) properties设置和获取接口
2 c/c++语言 properties设置和获取接口
3 Java语言 properties设置和获取的接口
Android提供了一套系统参数设置和获取的方法,这些参数可以在android系统中静态或动态的设定和获取,使用SystemProperty类(该类只有在framework或系统级应用中使用),代码中大量存在:SystemProperties.set()/SystemProperties.get();通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属性,肯定对整个系统全局共享。通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢?
System Properties(SystemProperty详细介绍及原理)是怎么一回事,又是如何实现的呢?
属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。
每个属性是一个键值对(key/value pair),其类型都是字符串。
这些属性可能是有些资源的使用状态,进程的执行状态,系统的特有属性……
命令行(shell) properties设置和获取接口
getprop “key”
setprop "key" "value"
c/c++语言 properties设置和获取接口
代码定义在:
[java] view
plain copy
system/core/libcutils/properties.c
#define PROPERTY_KEY_MAX 32
#define PROPERTY_VALUE_MAX 92
int property_get(const char *key, char*value, const char *default_value);
int property_set(const char *key, constchar *value);
int property_list(void (*propfn)(const char *key, constchar *value, void*cookie), void *cookie);
使用:
[java] view
plain copy
#include "cutils/properties.h"
char prop[PROPERTY_VALUE_MAX] = "000";
if(property_get("prop_name", prop, NULL) != 0) {
...
}
说明:
property_get返回值为get到的属性值的字符串长度.
prop_name为属性名.
prop为存放属性值字符串的地方.
Java语言 properties设置和获取的接口
frameworks/base/core/java/android/os/SystemProperties.java
[java] view
plain copy
<span style="font-size:14px;">public static final int PROP_NAME_MAX = 31;
public static final int PROP_VALUE_MAX = 91;
public static String get(String key) ;
public static String get(String key, String def) ;
public static int getInt(String key,int def) ;
public static long getLong(String key,long def) ;
public static boolean getBoolean(String key, boolean def) ;
public static void set(String key, String val) ;
public static void addChangeCallback(Runnable callback) ;
</span>
遇到问题解决:
1.在Setting中添加开关使用getProperty()和setProperty()属性来进行属性的获取和设置,在命令行使用
[java] view
plain copy
adb shell getprop
来查看属性的值:
[java] view
plain copy
[persist.service.adb.enable]: []
[persist.sys.ams.recover]: [false]
<span style="color:#FF0000;">[persist.sys.boot_music_control]: [1]</span>
[persist.sys.bootpackage]: [1]
[persist.sys.btn_auto_light]: [1]
2.在C++中获取不到build.prop中设置的属性值:
[java] view
plain copy
<span style="color:#FF0000;">persist.sys.boot_music_control</span>
解决:
[java] view
plain copy
//Modfy by jjli,control the boot and shutdown music
char boot_music_control[PROPERTY_VALUE_MAX];
property_get("persist.sys.boot_music_control", boot_music_control, 1);
int boot_music_value = atoi(boot_music_control);
if (boot_music_value == 1) {
mediastatus = mediaplayer->setDataSource(pBackupSoundFileName, NULL);
Android命令行/c语言/java设置获取系统属性的方法
Java中设置和获取SystemProperty属性:
[java] view
plain copy
SystemProperties.getInt("persist.sys.boot_music_control", 0)
SystemProperties.set("persist.sys.boot_music_control", ""+value);
C++中获取Java层中设置的属性值:
[java] view
plain copy
char boot_music_control[PROPERTY_VALUE_MAX];
if (property_get("persist.sys.boot_music_control", boot_music_control, 0) != 0) {
mediastatus = mediaplayer->setDataSource(pBackupSoundFileName, NULL);
}
1 命令行(shell) properties设置和获取接口
2 c/c++语言 properties设置和获取接口
3 Java语言 properties设置和获取的接口
Android提供了一套系统参数设置和获取的方法,这些参数可以在android系统中静态或动态的设定和获取,使用SystemProperty类(该类只有在framework或系统级应用中使用),代码中大量存在:SystemProperties.set()/SystemProperties.get();通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属性,肯定对整个系统全局共享。通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢?
System Properties(SystemProperty详细介绍及原理)是怎么一回事,又是如何实现的呢?
属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。
每个属性是一个键值对(key/value pair),其类型都是字符串。
这些属性可能是有些资源的使用状态,进程的执行状态,系统的特有属性……
命令行(shell) properties设置和获取接口
getprop “key”
setprop "key" "value"
c/c++语言 properties设置和获取接口
代码定义在:
[java] view
plain copy
system/core/libcutils/properties.c
#define PROPERTY_KEY_MAX 32
#define PROPERTY_VALUE_MAX 92
int property_get(const char *key, char*value, const char *default_value);
int property_set(const char *key, constchar *value);
int property_list(void (*propfn)(const char *key, constchar *value, void*cookie), void *cookie);
使用:
[java] view
plain copy
#include "cutils/properties.h"
char prop[PROPERTY_VALUE_MAX] = "000";
if(property_get("prop_name", prop, NULL) != 0) {
...
}
说明:
property_get返回值为get到的属性值的字符串长度.
prop_name为属性名.
prop为存放属性值字符串的地方.
Java语言 properties设置和获取的接口
frameworks/base/core/java/android/os/SystemProperties.java
[java] view
plain copy
<span style="font-size:14px;">public static final int PROP_NAME_MAX = 31;
public static final int PROP_VALUE_MAX = 91;
public static String get(String key) ;
public static String get(String key, String def) ;
public static int getInt(String key,int def) ;
public static long getLong(String key,long def) ;
public static boolean getBoolean(String key, boolean def) ;
public static void set(String key, String val) ;
public static void addChangeCallback(Runnable callback) ;
</span>
遇到问题解决:
1.在Setting中添加开关使用getProperty()和setProperty()属性来进行属性的获取和设置,在命令行使用
[java] view
plain copy
adb shell getprop
来查看属性的值:
[java] view
plain copy
[persist.service.adb.enable]: []
[persist.sys.ams.recover]: [false]
<span style="color:#FF0000;">[persist.sys.boot_music_control]: [1]</span>
[persist.sys.bootpackage]: [1]
[persist.sys.btn_auto_light]: [1]
2.在C++中获取不到build.prop中设置的属性值:
[java] view
plain copy
<span style="color:#FF0000;">persist.sys.boot_music_control</span>
解决:
[java] view
plain copy
//Modfy by jjli,control the boot and shutdown music
char boot_music_control[PROPERTY_VALUE_MAX];
property_get("persist.sys.boot_music_control", boot_music_control, 1);
int boot_music_value = atoi(boot_music_control);
if (boot_music_value == 1) {
mediastatus = mediaplayer->setDataSource(pBackupSoundFileName, NULL);
相关文章推荐
- Android手机号码归属地的查询(使用聚合数据API,获取JSON数据并解析)
- Android WIFI 启动流程(TIP^^)
- Android系统目录下 各jar包作用
- 【Android】13.4 使用SQLite.NET.Async-PCL访问SQLite数据库
- Android DownloadManager 的使用
- Android概念(持续整理)
- android.support:recyclerview-v7:23.2.0终于支持自动测量了!!!
- 如何查看android应用签名文件的信息
- Android中EditText输入框焦点从文字前面变成文字后面
- Android 如何让EditText不自动获取焦点
- Android即时通讯--仿QQ即时聊天:(二)闪屏页及登录页面的实现
- 你还在问android横竖屏切换的生命周期?
- Android文件下载之进度检测
- Android 中 Service AIDL使用
- android创建SQlite数据库和表格详解
- Android即时通讯--仿QQ即时聊天:(一)初识Socket
- Android-实现底部切换标签(fragment)
- 详解Android中AsyncTask的使用
- android管理SD卡 mksdcard
- Android 中的DisplayMetrics类的用法