android系统属性

合集下载

Android Tips---Android平台常见属性集合

Android Tips---Android平台常见属性集合
设置行间距。
android:phoneNumber
true/false
设置为电话号码的输入方式。
android:privateImeOptions
提供额外的输入法选项(字符串格式)。
android:scrollHorizontally
true/false
设置文本超出TextView的宽度的情况下,是否出现横拉条。
android:fadingEdgeLength
设置边框渐变的长度。
android:linksClickable
设置链接是否点击连接,即使设置了autoLink
android:maxLines
设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示
android:minLines
设置文本的最小行数
android:lineSpacingExtra
android:longClickable
true/false
view是否可以对长时间的click事件作出反应。
android:focusable
view是否能响应焦点事件
android:cacheColorHint
#00000000
滚动时,列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919,要改变这种情况,只需要调用listView的setCacheColorHint(0),颜色值设置为0或者xml文件中listView的属性Android:cacheColorHint="#00000000"即可,滚动时,重绘View的时候就不会有背景颜色。
android:cursorVisible
true/false

androidpersist属性使用

androidpersist属性使用

androidpersist属性使用Android的`android:persist`属性用于指示应用程序是否可以在重新启动后继续保持其状态。

当`android:persist`属性设置为`true`时,系统会尝试在设备重启后恢复应用程序的状态。

这有助于提供更好的用户体验,因为用户可以在重新启动后继续与应用程序进行互动,而无需重新开始。

要使用`android:persist`属性,需要在应用程序的清单文件(`AndroidManifest.xml`)中添加以下代码:```xml<activity...</activity>```在上述示例中,`MainActivity`是要使用`android:persist`属性的活动。

使用`android:persist`属性时需要注意以下几点:1. `android:persist`属性仅适用于活动。

它不能应用于服务、广播接收器或其他组件。

2. 在应用程序的清单文件中使用`android:persist`属性时,确保将其添加到要恢复状态的每个活动上。

3. 保留`android:persist`属性的默认值为`false`。

设置为`true`时,系统才会尝试在设备重启后恢复应用程序的状态。

4. 当重新启动设备时,系统会尝试恢复每个具有`android:persist`属性设置为`true`的活动的状态。

但是,如果设备内存不足,系统可能会清除一些应用程序的状态。

5. 使用`android:persist`属性可能会对应用程序的性能产生一定的影响。

因此,只有当应用程序需要持久保持其状态并且性能牺牲可接受时,才应使用此属性。

虽然`android:persist`属性可以确保应用程序在重新启动后保持其状态,但是这并不是持久化数据的最佳解决方案。

如果应用程序需要保存和恢复大量的数据,建议使用其他持久化技术,如`SharedPreferences`、数据库或文件存储。

android系统的手机目录各个文件夹代表什么?例如acct

android系统的手机目录各个文件夹代表什么?例如acct

1、mnt挂载点目录
2、etc系统主要配置文件
3、system Android 系统文件
4、sys Linux 内核文件
5、proc运行时文件
6、init.rc启动脚本
7、default.prop系统属性配置文件
8、data 用户程序目录
9、dev设备文件
system 目录下面的主要文件目录下面也简单介绍一下:
1、usr用户文件夹,包含共享、键盘布局、时间区域文件等
2、app 常规下载的应用程序,这些apk包都是受保护的哦
3、lib 系统底层库,如平台运行时库等
4、etc系统的配置文件,比如APN接入点设置等核心配置等
5、framework Android 系统平台核心framework 的文件
6、build.prop Android 系统属性配置文件
7、xbin常用开发工具,比如tcpdump/sqlite3 等
8、bin 系统工具,比如ps/cp/pm 等。

【推荐下载】Android中的android.provider.Settings.System系统属性设定

【推荐下载】Android中的android.provider.Settings.System系统属性设定

Android 中的android.provider.Settings.System 系统属性设定2012/04/12 0 Content Provider 中的Setting.System 表内存储了很多系统属性的,以键对的形式存在!可以对如下的变量进行设置ConstantsStringACCELEROMETER_ROTATIONControl whether the accelerometer will be used to change screen orientation.StringADB_ENABLEDThis constant is deprecated. Use ADB_ENABLED insteadStringAIRPLANE_MODE_ONWhether Airplane Mode is on.StringAIRPLANE_MODE_RADIOSA comma separated list of radios that need to be disabled when airplane mode is on.StringALARM_ALERTPersistent store for the system-wide default alarm alert.StringALWAYS_FINISH_ACTIVITIESIf 1, the activity manager will aggressively finish activities and processes as soon as they are no longer needed.StringANDROID_IDThis constant is deprecated. Use ANDROID_ID insteadStringAPPEND_FOR_LAST_AUDIBLEAppended to various volume related settings to record the previous values before they the settings were affected by asilent/vibrate ringer mode change.StringAUTO_TIMEValue to specify if the user prefers the date, time and time zone to be automatically fetched from the network (NITZ).StringAUTO_TIME_ZONEValue to specify if the user prefers the time zone to be automatically fetched from the network (NITZ).StringBLUETOOTH_DISCOVERABILITYDetermines whether remote devices may discover and/or connect to this device.StringBLUETOOTH_DISCOVERABILITY_TIMEOUTBluetooth discoverability timeout.StringBLUETOOTH_ONThis constant is deprecated. Use BLUETOOTH_ON insteadStringDATA_ROAMINGThis constant is deprecated. Use DATA_ROAMING insteadStringDATE_FORMATDate format string mm/dd/yyyy dd/mm/yyyy yyyy/mm/ddStringDEBUG_APPName of an application package to be。

安卓系统属性

安卓系统属性

android系统属性build.prop,所在位置:out\target\product\kylin\system\build.prop用数据线连接android 设置,进入调试模式(在android的设置--应用程序--开发--USB调试)开始--运行--CMDC:\Documents and Settings\Administrator>adb shell# cd systemcd system# lslsapp build.prop fonts lib usrbin etc framework media xbin可以看到build.prop,这个就是系统的属性表,若要COPY出来,这样操作:比如COPY到D盘的leo目录下C:\Documents and Settings\Administrator>adb pull system/build.prop d://leo120 KB/s (0 bytes in 1925.000s)C:\Documents and Settings\Administrator>可用记事本打开查看若要在java代码里读取里面的属性值,则需用到android.os.SystemProperties这个类,此类未开放(未提供给SDK API),此类具体位置:frameworks\base\core\java\android\os\SystemProperties.java能够在frameworks里面使用,比如在所有文件policies\base\phone\com\android\internal\policy\impl\LockScreen.java 里使用final boolean isMonkey = SystemProperties.getBoolean("ro.monkey", false);也能够在android自带的APP 里使用,比如在Settings app里使用packages\apps\Settings\src\com\android\settings\deviceinfo\Status.java//leo added for KYLIN-529if(SystemProperties.get("").equals("surfone_citic"))。

将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现

将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现

将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现作者:赵国强彭大芹来源:《电子世界》2013年第10期【摘要】本文通过对Android RIL层代码分析,将android RIL层功能在纯LINUX平台上实现,完全脱离了Android系统。

为基于LINUX的通用平台实现一套成熟的RIL层代码,并开发出相应的框架层,以便基于LINUX的平台能快速成熟的向3G网络发起相关业务。

在OpenWrt系统上验证了移植后的RIL层代码正常工作。

【关键词】Android RIL;LINUX;移植;Parcel;验证1.课题研究的背景和意义1.1 Android RIL简介Android RIL(Radio Interface Layer)提供了无线基带Modem与电话应用之间的抽象层。

在Android RIL层中,完善的考虑了电话应用的各种情况,如:双SIM卡;电话,短信,彩信,PS DATA业务,PIN/PUK码等各种3G网络业务。

RIL层在Android系统中,处于硬件抽象层,运行在一个独立的守护进程中,主要为框架层和基带接口提供适配,具有良好的独立性。

其中的通信机制,与框架层接口主要使用Socket 通信,内部线程主要使用管道,与基带接口默认使用AT命令。

且其代码均由C和C++来完成,依赖第三方库较少,所以,Android RIL层具有良好的移植性。

1.2 移植Android RIL的意义目前很多基于LINUX平台的系统,如:PC(LINUX操作系统),QT,路由器平台(如OpenWrt系统)等等,都对连接3G网络有需求,但在这些平台原生的功能中,没有独立的RIL接口层,所以开发一套基于LINUX的独立应用,用来支持与基带发起各种3G网络相关业务是很有意义的。

Android RIL具有良好的稳定性,独立性,以及对3G网络业务的完整性,所以将其移植成一个独立的,供LINUX通用平台使用的RIL层,可方便所有的基于LINUX的平台完成各种电话应用的开发。

Android平台简单介绍

Android平台简单介绍

Android平台简单介绍1. 起源和发展Android是由Android公司的创始⼈Andy Rubin创造的,⽽后被Google收购,Google的⽬标是将Android打造成⼀个标准化、开放式的移动操作系统平台。

Android是开放源代码的移动操作系统软件,提供了丰富的功能和酷炫的⽤户界⾯。

Google不断优化和改进Android系统,并开放原⽣的安卓系统源代码允许各个软件⼚商或者⼿机⼚商进⾏定制化的修改。

同时Google也提供了丰富的Android API和强⼤的开发环境,使得在Android平台上开发Android App变得⼗分便捷。

Android是⽬前移动端市场占有率最⾼的⼿机操作系统,事实上,Android已经不仅仅⽤在⼿机端,还⼴泛⽤于TV、⼿表等各种可穿戴设备以及各种智能硬件。

2. Android平台架构Android平台是基于Linux内核构建起来的,从上到下主要包含四个层次:应⽤程序层,这⼀层主要包含各种应⽤程序软件,包括最基本的通话、短信、联系⼈、浏览器等App,还包括⼤量开发者开发的各种App;应⽤程序框架层,所有的App都是基于应⽤框架层开发的,应⽤框架层提供了⼤量的API供开发者使⽤,开发者也可以提交⾃⼰开发的功能模块;系统环境层,这⼀层包含了⽀持上层功能所需要的⼤量C/C++函数库,还包括Android运⾏时环境,Android运⾏时环境包括Java核⼼库以及Android虚拟机;Linux内核层,Android内核建⽴在Linux 2.6之上,这⼀层提供最基础的诸如内存管理、进程管理、⽹络协议栈等操作系统级服务;关于Android虚拟机,在5.0版本之前使⽤的是Dalvik虚拟机,⽽⾃5.0版本之后使⽤的是ART。

Dalvik虚拟机是⼀种解释执⾏的虚拟机,由于其在运⾏App时进⾏动态编译,使得运⾏App的速度⽐较慢。

ART采⽤AOT(Ahead of Time)的技术在安装App时就进⾏编译,使得运⾏App的效率得到较⼤提升。

64系统下如何安装Android系统

64系统下如何安装Android系统

首先,访问/technetwork/java/javase/downloads/index.html下载最新版Java SE Development Kit其次,访问/sdk/index.html下载Android SDK最后,访问/downloads/下载Eclipse IDE for Java Developers下载完成后,开始安装和配置。

下载完成后,开始安装和配置。

第一步,安装和配置JDK。

下载后,双击运行jdk-7u3-windows-x64安装文件,安装至C:\Java\jdk1.7.0_03。

安装完毕后,就是配置环境变量。

步骤如下:(1)设置JAVA路径在“我的电脑”上点右键,选“属性”,打开“系统属性”对话框,点“高级”选项卡,再点“环境变量”按钮,在打开的对话框中的“系统变量”下方,点“新建”,然后在对话框中的“变量名”中填JAVA_HOME,在“变量值”中填C:\Java\jdk1.7.0_03,点“确定”。

(2)设置CLASS路径再“新建”一个系统变量,在“变量名”中填CLASSPATH,在“变量值”中填.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。

说明:最开始的.;中的.(点)表示当前路径,;(分号)是路径分隔符。

接下来的%JAVA_HOME%引用的是前面刚创建的JAVA安装路径。

(3)设置PATH路径PATH变量一般都有了,因此选中点“编辑”,然后在“变量值”后面加上;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,注意前面的分号。

这样,JDK就安装好。

“开始->运行”,输入cmd,然后在命令行提示符中输入:java -version,应该能够看到java version “1.7.0_03″信息;JDK安装成功。

第二步,安装和配置Android SDK安装installer_r17-windows,安装至C:\Android\android-sdk。

systemproperties selinux规则

systemproperties selinux规则

systemproperties selinux规则SELinux(Security-Enhanced Linux)是Linux操作系统上的一个安全模块,它通过强制访问控制(MAC)机制提供了额外的安全保护层。

SystemProperties SELinux规则是SELinux中的一个重要组成部分,它定义了系统属性的安全策略。

本文将详细介绍SystemProperties SELinux规则的作用、工作原理以及配置方法。

一、SystemProperties SELinux规则的作用SystemProperties SELinux规则用于控制系统属性的访问权限。

在Android系统中,系统属性是一种用于存储设备运行时信息的方式。

通过限制对系统属性的读写权限,可以有效保护设备的安全性和稳定性。

SystemProperties SELinux规则通过定义访问权限规则,确保只有具有相应权限的进程能够修改或者读取系统属性,从而防止恶意应用程序对系统属性的滥用。

二、SystemProperties SELinux规则的工作原理SystemProperties SELinux规则的工作原理基于SELinux的安全策略。

当一个进程尝试读取或者修改系统属性时,SELinux会根据SystemProperties SELinux规则来判断该进程是否具有相应的权限。

如果该进程的安全上下文与SystemProperties SELinux规则中定义的安全上下文匹配,并且满足相应的访问权限条件,则进程被允许对系统属性进行操作。

否则,操作被拒绝。

三、配置SystemProperties SELinux规则的方法配置SystemProperties SELinux规则需要编辑SELinux策略文件。

以下是配置SystemProperties SELinux规则的步骤:1. 打开终端,并以root权限登录设备。

2. 定位到SELinux策略文件的存储位置。

android系统的手机目录各个文件夹代表什么

android系统的手机目录各个文件夹代表什么

自己整理的:打开ROOT目录后所看到的路径:ROOT手机后,安装一个Root Explor文件管理器(RE管理器)就可以看到手机系统里的各种文件夹以及各种文件了Mounted as r/o是什么?(Mounted as r/w可以切换成Mounted as r/o)r/w = read/write(就是说可以更改,删除等等)r/o = read only (就是单单读资料,不能更改)1、acct文件夹根目录/acct/ 系统回收站,误删除的系统文件恢复ACCT计算机语言,系统调用禁止/启用系统记录进程信息。

名称: acct -- 启用/禁止进程信息记录功能库: Standard C Library (libc, -lc)概要: #include <unistd.h> int acct(const char * file, int mode);详述: acct()系统调用禁止/启用系统系统调用禁止/启用系统记录进程信息。

若,记录功能将被禁用;若file指向一个存在的文件(以'\0'结尾),则记录功能被启用,正常结束的进程都会在该文件尾添加对应的信息。

异常结束是指重启或其它致命的系统问题。

acct()不能生成那些永远不会结束的进程的信息acct()系统调用禁止/启用系统记录进程信息。

若,记录功能将被禁用;若file指向一个存在的文件(以'\0'结尾),则记录功能被启用,正常结束的进程都会在该文件尾添加对应的信息。

异常结束是指重启或其它致命的系统问题。

acct()不能生成那些永远不会结束的进程的信息2、cache文件夹-----缓存(cache)3、config文件夹【计】(计算机系统)配置1、mnt 挂载点目录2、etc 系统主要配置文件3、system Android 系统文件4、sys Linux 内核文件5、proc 运行时文件6、init.rc 启动脚本7、default.prop 系统属性配置文件8、data 用户程序目录9、dev 设备文件system 目录下面的主要文件目录下面也简单介绍一下:1、usr 用户文件夹,包含共享、键盘布局、时间区域文件等2、app 常规下载的应用程序,这些apk 包都是受保护的哦3、lib 系统底层库,如平台运行时库等4、etc 系统的配置文件,比如APN接入点设置等核心配置等5、framework Android 系统平台核心framework 的文件6、build.prop Android 系统属性配置文件7、xbin 常用开发工具,比如tcpdump/sqlite3 等8、bin 系统工具,比如ps/cp/pm 等。

android系统之属性系统详解

android系统之属性系统详解

android系统之属性系统详解1 属性系统概述 (2)2 property数据的编译 (3)2.1 /default.prop (3)2.2 /system/build.prop (4)2.3 其他属性文件 (8)3 property的相关实现代码和流程 (9)3.1 property服务端解析 (10)3.1.1 Server端代码流程 (10)3.1.1.1 init.c下的整体流程 (10)3.1.1.2 创建共享内存区域 (10)3.1.1.3加载根目录下的default.prop (15)3.1.1.4加载其余4个属性文件的全部属性,并启动socket监听 (16)3.1.1.5 property触发器执行函数加入队列 (18)3.1.1.6 执行队列中的property任务 (19)3.1.1.7 将property的监听socket加入待检查的socket数组 (20)3.1.1.8 检查上层有哪些端口连接请求 (20)3.1.1.9 property设置的响应 (20)3.1.2 详解server端的property_set (25)3.1.2.2 find_property (26)3.1.2.3 prop数据二叉树存取解析 (29)3.1.2.4 __system_property_update (30)3.1.2.5 __system_property_add (30)3.1.2.6 write_persistent_property (30)3.1.2.7 property_changed (31)3.2 property系统桥梁 (31)3.2.1 __system_property_set (32)3.2.2__system_property_set (33)3.3 property客户端解析 (34)3.3.1 客户端C层访问属性系统 (34)3.3.2 客户端shell命令访问 (35)3.3.3 客户端java层访问 (36)4总结 (37)附录一:《GCC的constructor》 (37)1 属性系统概述属性property系统是android的一个重要特性。

android rc文件 语法

android rc文件 语法

Android中的rc文件是用来定义系统属性和执行脚本的文件,其语法规则如下:1. 属性定义```name=value```其中,`name` 是属性名,不能包含空格或等号。

`value` 是属性值,可以包含空格和其他特殊字符。

2. 脚本执行```on property:<property_name>=<property_value><command>```其中,`<property_name>` 和 `<property_value>` 用于指定要监视的属性和属性值,`<command>` 是要执行的命令或脚本。

当指定的属性值发生变化时,将触发执行`<command>`。

3. 注释以 `#` 开头的行表示注释,将被忽略。

4. 包含其他rc文件```import /path/to/file.rc```使用 `import` 命令可以在当前rc文件中引用其他的rc文件。

下面是一个简单的rc文件示例:```# 属性定义ro.example.property=value# 执行脚本on property:ro.boot.mode=chargerecho "Charger mode"# 包含其他rc文件import /system/etc/init.example.rc```其中,`ro.example.property` 是一个属性定义,表示一个名为 "ro.example.property" 的属性,并设置其值为 "value"。

`on property` 表示监听属性值的变化,当 `ro.boot.mode` 属性的值变为 "charger" 时,执行 `echo "Charger mode"` 命令。

`import` 命令用于引用`/system/etc/init.example.rc` 文件。

ANDROID:控件属性(很全)

ANDROID:控件属性(很全)

控件属性:android属性Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料,第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom 贴紧父元素的下边缘android:layout_alignParentLeft 贴紧父元素的左边缘android:layout_alignParentRight 贴紧父元素的右边缘android:layout_alignParentTop 贴紧父元素的上边缘android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物第二类:属性值必须为id的引用名“@id/id-name”android:layout_below 在某元素的下方android:layout_above 在某元素的的上方android:layout_toLeftOf 在某元素的左边android:layout_toRightOf 在某元素的右边android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐第三类:属性值为具体的像素值,如30dip,40pxandroid:layout_marginBottom 离某元素底边缘的距离android:layout_marginLeft 离某元素左边缘的距离android:layout_marginRight 离某元素右边缘的距离android:layout_marginTop 离某元素上边缘的距离EditText的android:hint 设置EditText为空时输入框内的提示信息。

android systemproperties.set()存储原理

android systemproperties.set()存储原理

android systemproperties.set()存储原理1. 引言1.1 概述在Android开发中,我们经常会遇到需要存储和获取一些系统属性的场景。

系统属性是一种用于存储和访问应用程序之间共享数据的机制,而Android系统提供了一个用于设置系统属性的方法——systemproperties.set()。

这个方法的使用非常方便,但背后的存储原理并不为人所熟悉。

因此,本文将深入探究android systemproperties.set()方法的存储原理。

1.2 文章结构本文将从以下几个方面进行分析:首先介绍android systemproperties.set()方法的基本概念和用法;然后详细解释该方法的参数及其解析过程;接着深入探究systemproperties.set()方法的实现原理;随后通过对存储原理进行分析,揭示属性文件的存储方式和SystemProperties类的作用;最后通过示例代码展示set方法调用示例和效果,并举例说明其在实际应用中的使用场景。

1.3 目的本文旨在帮助读者全面了解android systemproperties.set()方法,并深入理解其背后隐藏的存储原理。

通过对该方法功能、参数、实现原理以及具体应用场景等方面进行分析,读者能够更好地利用该方法进行系统属性设置,并能够在实际开发中更加灵活地应用。

同时,针对系统属性存储机制的优化和改进也将被讨论,以期为未来的Android系统开发提供一些有益的建议和思路。

(注:文章目录为示意,具体标题可能会在写作过程中进行微调)2. android systemproperties.set()方法介绍:2.1 方法概述:android systemproperties.set()方法是Android系统中的一个重要方法,用于设置系统属性值。

系统属性可以被应用程序读取和修改,它们经常被用来在系统级别传递参数和配置信息。

Android控件常见的属性

Android控件常见的属性

一、TextView控件常见的属性二、EditText是可编辑的文本框,继承自TextView,因此属性基本相同。

EditText中的文字可以编辑而TextView只显示文字,其中的文字不能编辑。

EditText和TextView类似于C#中的Label和TextBox控件。

三、Button也继承自TextView,因此也具有TextView的宽和高设置,文字显示等一些基本属性。

Button一般会与单击事件联系在一起。

为Button注册单击事件有两种方法:1.通过Button控件的setOnClickListener()方法为Button注册OnClickListener。

2.通过使用android:OnClick属性在xml布局文件中为Button 指定单击事件发生时执行的函数。

当用户点击了Button时,Android系统调用activity的selfDestruct(View view)方法。

指定的这个方法必须是public的,而且只有一个View类型的参数。

例如:TextView、EditText、Button都可以用setText()方法设置控件中文本的值,也都可以用getText()获取的控件的文本值。

需要注意的是EditText的getText()方法返回的是Editable对象。

这个对象与string对象差不多,区别是:当我们修改了一个string对象的值后会返回一个新的string对象。

因为string对象不能修改,所以返回新的对象。

而Editable可以修改即返回的是它本身,因此在修改的时候不必创建新的对象,节约了内存。

可以用getText().toString()方法将获得的Editable对象转换为string。

四、MenuMenu 控件不需要添加在xml布局文件中,需要在Activity中复写onCreateOptionsMenu(Menu menu)方法,当我们在模拟器或者在手机上点击Menu按钮时Android系统会自动调用这个函数,生成相应的菜单选项。

android 的系统属性(systemproperties)分析 bobs blo...

android 的系统属性(systemproperties)分析  bobs blo...

android 的系统属性(systemproperties)分析bobs blo...Android 的系统属性(SystemProperties)分析by bob, 2,184 views 以下分析以android 4.03为基础前言Android的系统属性相当于windows的注册表,由key和value 组成,且都是核心系统的一个基本机制。

相对于windows的注册表,Android的系统属性要简单一些,它没有windows 注册表的树状结构,而只是一个列表,也就是说没有父子关系。

value有string,int,long,boolean,但是设置只能通过字符串方式。

Android 的系统属性包括两部分:文件保存的持久属性和每次开机导入的cache属性。

前者主要保存在下面几个文件中(目录下):/default.prop/system/build.prop/system/default.prop/data/local.prop/data/property目录下的所有presist属性(以presist.开头)后者则通过API方式使用。

一、接口1. JA V A层接口:包名:android.os类名:SystemProperties,为隐藏类接口: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)其key长度不能超过31字,val不超过91字文件:frameworks/base/core/java/android/os/SystemProperties.java2.JNI接口在android_os_SystemProperties.cpp定义,在frameworks/base/core/jni/AndroidRuntime.cpp中注册JNI 3.本地接口接口:int property_get(const char *key, char *value, const char*default_value)/* property_set: returns 0 on success, &lt; 0 on failure*/int property_set(const char *key, const char *value)int property_list(void (*propfn)(const char *key, const char*value, void *cookie), void *cookie)文件:system/core/include/cutils/properties.hsystem/core/libcutils/properties.c4. 底层bionic内部接口除非想修改系统属性机制,可以分析一下int __system_property_get(const char *name, char *value);int __system_property_set(const char *key, const char *value); const prop_info *__system_property_find(const char *name); int __system_property_read(const prop_info *pi, char *name,char *value);const prop_info *__system_property_find_nth(unsigned n);文件:bionic/libc/include/sys/system_properties.hbionic/libc/include/sys/_system_properties.hbionic/libc/bionic/system_properties.c5. init.rc接口原始rc文件有system/core/rootdir/init.rcdevice/vendor/platformname/init.devicename.rc编译后在跑到out/target/product/platformname/root/下做成image后在out/target/product/platformname/ramdisk.img,有可能由于平台不一样,文件名不一样设备运行后就是在根目录下的一些init*.rc文件在init.rc我们可以设置属性,监听属性变化setprop key valueon property:key=valuedo_your_work实现:property的处理在init进程中,相关文件system/core/init/property_service.csystem/core/init/property_service.h入口函数start_property_service及property_init、load_persist_props1. 通讯机制:property_set有两套实现,一套接口3:本地接口的实现,会调用接口4:中的__system_property_set,__system_property_set 通过本地SOCKET: “/dev/socket/property_service”与init 进程中properties服务通讯。

android常用控件属性方法事件说明

android常用控件属性方法事件说明

1,TextView用于在界面上显示文字,内容不可编辑,继承View2,EditText是可供用户编辑内容的文本框。

继承TextView,可重用TextView定义的属性3,按钮控件Button,继承TextView,ImageButton继承ImageViewButton可根据用户的操作动态切换图片,需定义drawable资源<selector><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:drawable="@drawable/app_icon" android:state_pressed="true"/> <item android:drawable="@drawable/app_notes"android:state_pressed="false"/> </selector>4,单选按钮RadioButton继承至Button按钮。

可通过android:checked属性指定是否选中。

一组RadioButton只能选择其一,因此它需要与RadioGroup一起使用。

5,复选框按钮CheckBox。

继承至Button按钮。

可通过android:checked属性指定是否选中7,AnalogClock继承View,重写了onDraw()方法。

显示模拟时钟,不会显示当前的秒数。

DigitalClock继承TextView.显示数字时钟,会显示当前秒数。

8,图片显示控件ImageView,继承View,任何Drawable对象都可以用它来显示,注意src 属性和background属性的区别9,自动完成AutoCompleteTextView继承至EditText,当用户输入信息后,会显示下拉菜单10,MultiAutoCompleteTextView可支持选择多个值,分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配,它与AutoCompleteTextView的区别是AutoCompleteTextView一个文本框只能输入一个值,而MultiAutoCompleteTextView可以输入多个值,中间的分隔符在代码中设置11,日期时间控件DatePicker/TimePicker,继承至FrameLayout,DatePicker用于选择日期,TimePicker用于选择时间12,进度条ProgressBar用于向用户显示某个耗时操作完成的百分比,可通过style属性为其指定风格,setProgress(int) 设置进度完成的百分比,incrementProgressBy(int) 设置增量/减量13,拖动条seekBar,继承AbsSeekBar,通常用于对系统的某些参数进行调节,允许改变滑块的外观,Android:thumb 用来指定一个Drawable对象,OnSeekBarChangeListener可处理滑动事件14,星级评分条RatingBar,继承AbsSeekBar,OnRatingBarChangeListener可处理评分事件15,代表应用程序的菜单Menu,Android中的菜单需要用户单击手机上的“MENU”按键时才会显示。

androidgetprop读取的属性哪里来的?

androidgetprop读取的属性哪里来的?

Android getprop 读取的属性哪里来的?Android getprop 读取的属性哪里来的?在公司没事情做,就只有自己自觉慢慢学习自己想到的感兴趣的东西了,唉说道这都是伤心泪啊、Android getprop 和setprop 可以对系统属性进行读取和设置。

通过串口执行以下geyprop 打印出来的属性让你一目了然。

属性出来了,但是在哪里设置的呢,这里有两个地方:一个是配置文件读取的,一个是系统动态获取的1、在android源码目录下的:system/core/init/property_service.c 文件中的函数static void load_properties_from_file(const char *fn)上面函数作用是加载配置文件fn 里面的系统属性。

查看该函数被调用的地方,可知道配置文件由以下几个:#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"#define PROP_PATH_SYSTEM_BUILD"/system/build.prop"#define PROP_PATH_SYSTEM_DEFAULT"/system/default.prop"#define PROP_PATH_LOCAL_OVERRIDE"/data/local.prop"其中配置文件:system/build.prop 是在android 源码中的:build/tools/buildinfo.sh 文件中生成的,要修改的话查看一下该文件的生成方式,应该不成问题。

出去了上面的四个配置文件外,在init.rc. 文件中也可以手动的调用来增加属性:eg :setprop net.tcp.buffersize.default4096,87380,110208,4096,16384,1102082、系统开机后动态获取系统属性a、在文件system/core/init/init.c 中有函数:[cpp] view plain copy void notify_service_state(const char *name, const char*state) { char pname[PROP_NAME_MAX];int len = strlen(name); if ((len + 10) &gt;PROP_NAME_MAX) return;snprintf(pname, sizeof(pname), "init.svc.%s", name);property_set(pname, state); } 其可以自动生成前缀为init.svc. 的系统属性,通过查看该函数调用位置:void service_start(struct service *svc, const char*dynamic_args)static void service_stop_or_reset(struct service *svc, int how)static int wait_for_one_process(int block)应该是根据系统服务进程获取到的系统属性,比如:[cpp] view plain copy [init.svc.adbd]: [running][init.svc.bootanim]: [stopped] [init.svc.console]: [running] [init.svc.debuggerd]: [running] [init.svc.dhcpcd_eth0]: [stopped] [init.svc.drm]: [running] [init.svc.ifdown_eth0]: [stopped] [init.svc.ifup_eth0]: [stopped][init.svc.initrdscript]: [stopped] [init.svc.installd]: [running] [init.svc.keystore]: [running] [init.svc.kt_debug]: [stopped] [init.svc.mali]: [stopped] [init.svc.mdnsd]: [running] 标识该进程的运行状态的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android的属性系统2011-04-10 17:42每个属性都有一个名称和值,他们都是字符串格式。

属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。

属性是在整个系统中全局可见的。

每个进程可以get/set属性。

在系统初始化时,Android将分配一个共享内存区来存储的属性。

这些是由“init”守护进程完成的,其源代码位于:device/system/init。

“init”守护进程将启动一个属性服务。

属性服务在“init”守护进程中运行。

每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。

属性服务将会在共享内存区中修改和创建属性。

任何客户端想获得属性信息,可以从共享内存直接读取。

这提高了读取性能。

客户端应用程序可以调用libcutils中的API函数以GET/SET属性信息。

libcutils的源代码位于:device/libs/cutils。

API函数是:int property_get(const char *key, char *value, const char *default_value);int property_set(const char *key, const char *value);而libcutils又调用libc中的__system_property_xxx 函数获得共享内存中的属性。

libc的源代码位于:device/system/bionic。

属性服务调用libc中的__system_property_init函数来初始化属性系统的共享内存。

当启动属性服务时,将从以下文件中加载默认属性:/ default.prop/system/build.prop/system/default.prop/data/local.prop属性将会以上述顺序加载。

后加载的属性将覆盖原先的值。

这些属性加载之后,最后加载的属性会被保持在/data/property中。

特别属性如果属性名称以“ro.”开头,那么这个属性被视为只读属性。

一旦设置,属性值不能改变。

如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。

如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。

(这是很巧妙的。

netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。

)属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。

每一项服务必须在/init.rc中定义.系统启动时,与init守护进程将解析init.rc和启动属性服务。

一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。

这项服务的启动结果将会放入“ init.svc.<服务名>“属性中。

客户端应用程序可以轮询那个属性值,以确定结果。

Android toolbox程序Android toolbox程序提供了两个工具:setprop和getprop获取和设置属性。

其使用方法:getprop <属性名>setprop <属性名><<属性值>Java在Java应用程序可以使用System.getProperty()和System.setProperty()函数获取和设置属性。

Action默认情况下,设置属性只会使"init"守护程序写入共享内存,它不会执行任何脚本或二进制程序。

但是,您可以将您的想要的实现的操作与init.rc中某个属性的变化相关联.例如,在默认的init.rc中有:# adbd on at boot in emulatoron property:ro.kernel.qemu=1start adbdon property:persist.service.adb.enable=1start adbdon property:persist.service.adb.enable=0stop adbd这样,如果你设置persist.service.adb.enable为1 ,"init"守护程序就知道需要采取行动:开启adbd服务。

1. android现在好像只有/ default.prop,/system/build.prop两个文件,别的两个文件找不到2. /data/property下有4个prop文件:persist.sys.timezone,nguage,persist.sys.country,persist.sys.localevar,里面保存着属性名称以“persist.”开头的属性值。

3. libcutils的源码位于system\core\libcutils\下面,获取和设置属性的代码在properties.c里面,读取属性通过读共享内存得到,设置属性通过发送请求到property_service进行设置。

4. 相关的函数有property_set,property_get,property_list。

5. 属性系统的初始化通过__system_properties_init函数完成,__system_properties_init函数代码如下:view plaincopy to clipboardprint?int __system_properties_init(void) { prop_area *pa; int s, fd; unsigned sz; char *env; if(__syste m_property_area__ != ((void*) &dummy_props)) { return 0; } env = getenv("ANDROID_PROPERT Y_WORKSPACE"); if (!env) { return -1; } fd = atoi(env); env = strchr(env, ','); if (!env) { return -1; } sz = atoi(env + 1); pa = mmap(0, sz, PROT_READ, MAP_SHARED, fd, 0); if(pa == MAP_FAIL ED) { return -1; } if((pa->magic != PROP_AREA_MAGIC) || (pa->version != PROP_AREA_VERSION )) { munmap(pa, sz); return -1; } __system_property_area__ = pa; return 0; }可以看到首先从环境变量里面获取ANDROID_PROPERTY_WORKSPACE,ANDROID_PROPERTY_WORKSPACE 的值为如下形式:ANDROID_PROPERTY_WORKSPACE=9,32768。

然后获取共享内存的文件句柄和长度,最后对共享内存进行检查并设置全局变量__system_property_area__的值,property_get就是从__system_property_area__里面读取的属性值。

环境变量的初始化在init.c的service_start函数里面。

6. /init.rc里面有设置属性的代码,例如:# Define the oom_adj values for the classes of processes that can be# killed by the kernel. These are used in ActivityManagerService.setprop ro.FOREGROUND_APP_ADJ 0setprop ro.VISIBLE_APP_ADJ 1setprop ro.SECONDARY_SERVER_ADJ 2setprop ro.HOME_APP_ADJ 4setprop ro.HIDDEN_APP_MIN_ADJ 7setprop ro.CONTENT_PROVIDER_ADJ 14setprop ro.EMPTY_APP_ADJ 157. 通过property_list可以枚举所有的属性,下面是一段打印所有属性的代码。

view plaincopy to clipboardprint?#include <cutils/properties.h> #include <stdio.h> void print_prop(const char* key,const char* valu e,void* cookie) { printf("key=%s,value=%s\n",key,value); } int main() { property_list(pri nt_prop,NULL); }Android.mk文件:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= \list_property.cpp \LOCAL_SHARED_LIBRARIES := \libcutils \libutils \LOCAL_MODULE:= list_propinclude $(BUILD_EXECUTABLE)include $(call all-makefiles-under,$(LOCAL_PATH))所有的属性如下:key=ro.secure,value=0key=ro.allow.mock.location,value=1key=ro.debuggable,value=1key=persist.service.adb.enable,value=1key=ro.kernel.qemu,value=1key=ro.kernel.console,value=ttyS0key=ro.kernel.android.checkjni,value=1key=ro.kernel.android.qemud,value=ttyS1key=ro.factorytest,value=0key=ro.serialno,value=key=ro.bootmode,value=unknownkey=ro.baseband,value=unknownkey=ro.carrier,value=unknownkey=ro.bootloader,value=unknownkey=ro.hardware,value=goldfishkey=ro.revision,value=0key=ro.build.id,value=CUPCAKEkey=ro.build.display.id,value=sdk-eng 1.5 CUPCAKE 148875 test-keys key=ro.build.version.incremental,value=148875key=ro.build.version.sdk,value=3key=ro.build.version.release,value=1.5key=ro.build.date,value=Thu May 14 17:29:49 PDT 2009key=ro.build.date.utc,value=1242347389key=ro.build.type,value=engkey=er,value=android-buildkey=ro.build.host,value=key=ro.build.tags,value=test-keyskey=ro.product.model,value=sdkkey=ro.product.brand,value=generickey=,value=sdkkey=ro.product.device,value=generickey=ro.product.board,value=key=ro.product.manufacturer,value=unknownkey=nguage,value=enkey=ro.product.locale.region,value=USkey=ro.board.platform,value=key=ro.build.product,value=generickey=ro.build.description,value=sdk-eng 1.5 CUPCAKE 148875 test-keyskey=ro.build.fingerprint,value=generic/sdk/generic/:1.5/CUPCAKE/148875:eng/test-keys key=rild.libpath,value=/system/lib/libreference-ril.sokey=rild.libargs,value=-d /dev/ttyS0key=ro.config.notification_sound,value=F1_New_SMS.oggkey=xmpp.auto-presence,value=truekey=ro.config.nocheckin,value=yeskey=,value=Androidkey=net.change,value=net.gprs.local-ipkey=dalvik.vm.stack-trace-file,value=/data/anr/traces.txtkey=persist.sys.timezone,value=GMTkey=nguage,value=enkey=persist.sys.country,value=USkey=persist.sys.localevar,value=key=ro.FOREGROUND_APP_ADJ,value=0key=ro.VISIBLE_APP_ADJ,value=1key=ro.SECONDARY_SERVER_ADJ,value=2key=ro.HOME_APP_ADJ,value=4key=ro.HIDDEN_APP_MIN_ADJ,value=7key=ro.CONTENT_PROVIDER_ADJ,value=14key=ro.EMPTY_APP_ADJ,value=15key=ro.FOREGROUND_APP_MEM,value=1536key=ro.VISIBLE_APP_MEM,value=2048key=ro.SECONDARY_SERVER_MEM,value=4096key=ro.HOME_APP_MEM,value=4096key=ro.HIDDEN_APP_MEM,value=5120key=ro.CONTENT_PROVIDER_MEM,value=5632key=ro.EMPTY_APP_MEM,value=6144key=net.tcp.buffersize.default,value=4096,87380,110208,4096,16384,110208 key=net.tcp.buffersize.wifi,value=4095,87380,110208,4096,16384,110208 key=net.tcp.buffersize.umts,value=4094,87380,110208,4096,16384,110208 key=net.tcp.buffersize.edge,value=4093,26280,35040,4096,16384,35040key=net.tcp.buffersize.gprs,value=4092,8760,11680,4096,8760,11680 key=init.svc.console,value=runningkey=init.svc.servicemanager,value=runningkey=init.svc.vold,value=runningkey=init.svc.debuggerd,value=runningkey=init.svc.ril-daemon,value=runningkey=init.svc.zygote,value=runningkey=init.svc.media,value=runningkey=init.svc.installd,value=runningkey=init.svc.flash_recovery,value=stoppedkey=init.svc.goldfish-setup,value=stoppedkey=init.svc.qemud,value=stoppedkey=init.svc.goldfish-logcat,value=stoppedkey=ARGH,value=ARGHkey=net.eth0.dns1,value=10.0.2.3key=net.gprs.local-ip,value=10.0.2.15key=e-ppp,value=nokey=status.battery.state,value=Slowkey=status.battery.level,value=5key=status.battery.level_raw,value=50key=status.battery.level_scale,value=9key=ro.setupwizard.mode,value=EMULATORkey=.google.locationfeatures,value=1key=init.svc.adbd,value=runningkey=pleted,value=1key=hw.keyboards.65536.devname,value=qwerty2 key=sys.settings_secure_version,value=2key=dev.bootcomplete,value=1key=sys.settings_system_version,value=6key=gsm.sim.operator.numeric,value=key=gsm.sim.operator.alpha,value=key=gsm.sim.operator.iso-country,value=key=gsm.sim.state,value=UNKNOWNkey=adb.connected,value=1。

相关文档
最新文档