Author:Harish_hu@qq.com 由于现在电脑上只有4.0的代码,考虑到代码差别也不大,所以下部分,就基于4.0来分析.  3:SensorManager 上一部分说过,开机后,system server启动时,就会初始化sensor service,也就是说,开机后她一直都在后台运行着,客户端部分,直接connect就行了.至于怎么connect,这一切都被封装到SensorManager里了. 3.1 SensorManager的创建 获取SensorManager的对象实例代…
我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前,视图都是由一个一个的组件构成的.组件就是我们常见的Button.TextEdit等等.那么我们平时看到的Android手机中那些漂亮的界面是怎么显示出来的呢?这就要用到Android的布局管理器了,网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了. 在分析布局之前,我们首先看看控件:Android中任何可视化的控件都是从andr…
分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API 调用了未实现的OpenGL ES API函数,一般由于导入的第三方库如地图库,里面有用到OpenGL,但是模拟器的硬件默认是没有这个的,所以需要我们编辑模拟器Emulation Options选项勾选 Use Host GPU 然后重启模拟器再尝试,如果还是这个错误,那么我们只好用真机测试了. 2.…
这几天深入学习了Android sensor框架,以此博客记录和分享分析过程,其中难免会有错误的地方,欢迎指出! 这里主要分析KERNEL->HAL->JNI这3层的流程.主要从以下几方面开始着手:(A) 驱动层向上提供了那些文件节点给系统层读写?(B) 系统层通过什么方式访问驱动层?(C) 如何统一各种sensors的接口,生成.so库?(D) 如何加载访问.so库 (E) 实现sensor service (未写,待续)(F) JNI接口 (未写,待续) (A) 驱动层向上提供了那些文件节…
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857 概述 一直想写篇关于Android事件派发机制的文章,却一直没写,这两天刚好是周末,有时间了,想想写一篇吧,不然总是只停留在会用的层次上但是无法了解其内部机制.我用的是4.4源码,打开看看,挺复杂的,尤其是事件是怎么从Activity派发出来的,太费解了.了解Windows消息机制的人会发现,觉得Android的事件派发机制和Windows的消息派发机制挺像的…
Android中很多框架性的设计都已经存在了,但在市场上的发布版本里却因为没有很好的理解Android的设计意图而进行自己的定制,或者自己又做一 个冗余的实现.Android中的Provision其实就是类似刚出厂时或者恢复出厂设置之后,一步一步引导用户完成各种设置的Setup Wizard程序. 在Android的原生代码中,Provision并没有被编译进系统,这可能是Provision不被人所知的原因.另外SdkSetup是一个实现相同功能的程序,从名字来看,SdkSetup是被用来在模拟…
1.Android 源码剖析 性能优化  开源代码 2.Android UI效果源码 3.http://mzh3344258.blog.51cto.com/1823534/d-3 4.微信公众平台开发 5.使用开源框架…
小知识:什么是build.prop?   /system/build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件.这个文件是如何生成的呢? build/tools/buildinfo.sh 脚本就是专门用于生成build.prop文件 build/core/Makefile中使用build/tools/buildinfo.sh 脚本生成build.prop文件, 并把系统默认的system.prop以及定制的system.…
1. 制定smack规则 “Zygote”进程由init进程创建,它负责创建系统服务进程“systemserver”.“radio”进程和APP进程.其中“radio”进程的uid是1001,它能够实现打电话和发短信的功能,“systemserver”进程uid是1000,它负责创建系统服务组件,通讯录进程uid是10000,它能够访问通讯录数据库,uid大于等于10000的进程都属于Android应用程序进程. 为了实现对“radio”和通讯录进程的访问控制,本课题使用“libsmack”库中…
之前写过一篇“android系统如何在静音模式下关闭camera拍照声音”的博客,今天来写他的续篇,继续探讨这个问题. 公司新需求,要求在camera应用中添加一个开关,可以进行拍照声音的关闭和开启. 上篇文章解决静音不能有拍照声音用的是系统静音的property,在camera playsound()函数中来进行判断的(详见一).如何自己定义个property,使其既能有get的权限,关键是得有set权限. 其实android系统有一个service,是用来进行SystemProperty权限…
这两天由于一个客户的要求,将MID竖屏时候的状态条上的音量键去掉.所以尝试修改了一下,成功了,分享一下经验. 先看一下修改后的效果图,如下所示 . 横屏的时候:有音量加减键 竖屏的时候:音量加减键被去掉了 然后来说一说我的解决思路. 首先我查看了\mx0831-0525\frameworks\base\packages\SystemUI\res\layout\system_bar.xml文件 <?xml version="1.0" encoding="utf-8&quo…
1. 拷贝Amlogic的SourceCode 切换目录到  /home/roco/work/amlogic/SourceCode/mx0831-0525下将mx0831-0525.tgz拷贝到  /home/pyou/ 目录下,解压,生成mx0831-0525目录.此目录就是将来的工作目录.  tar.bz2 命令: tar -jxvf  *.tar.bz2   2. 配置环境变量 2.1 准备工作 切换目录到 /home/roco/work/amlogic/Document中,拷贝amlog…
1.首先先来看一下修改前后的效果对比图 step1.插上3G设备前 step2.插上3G设备后,获取信号中.... step3.插上3G设备后,获取到信号 step4.使用3G信号浏览网页 2.下面讲解一下具体的修改步骤 step1.进入到device/other/TBDG1073/overlay/frameworks/base/core/res/res/values目录下 step2.修改config.xml 文件 <!-- List of regexpressions describing…
在消息的获取上是选择轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如更新检查,可能是半个小时或一个小时一次,那用轮询也是一个不错的选择,因为不需要额外搭建推送服务器,不用额外配置推送服务.另外推送现在一般以维持长连接的方式实现,在手机客户端也会耗费一定的电量.今天就介绍一个在Android上实现轮询机制的方法——使用AlarmManager AlarmManager在Android中主要用来定时处理一…
背景:因为之前老板上次问我我们的app能不能自定义上面的状态栏我说可以啊!当时没管,今天试了下果然很多坑,之前github上也有很多大佬写了一个开源库有兴趣的可以点进去看下支持DrawLayout沉侵式[StatusBarUtil](https://github.com/laobie/StatusBarUtil)感觉好牛逼,像大佬敬礼,我毕竟是个小喽喽,我只能用最蠢的办法! 首先说下关于状态栏当系统版本为4.4或者4.4以上时可以使用沉浸式状态栏实现代码 其实状态栏这东西不是很难,就是通过添加一…
原始尺寸场景 相信大家对上面也有所有耳闻另外就是如何计算屏幕的密度一般都是按照勾股定理例如中等屏幕密度 480^2+800^2开根号 然后除以当前屏幕尺寸3.5-4.2之间尺寸. 对于刚出来的那些Android职场的小鸟,适配的确是一件很头痛的事情,现在相信大家都知道主流的屏幕是xhdpi(超高屏幕702*1280)和xxhpi(高清屏幕1080*1920)但是有些公司为了节约成本只用iphone1x然后android根据px进行换算一般都是px转dp是px 除以2dp=px/2 Px (Pix…
连载上一篇http://www.cnblogs.com/hackfun/p/7327320.html (D) 如何加载访问.so库 在前一篇博客http://www.cnblogs.com/hackfun/p/7327320.html中,知道如何生成了一个HAL的.so库,在这里将分析如何加载这个HAL,如何再次封装以适合多客户端访问的情况.    实际上,系统是通过SENSORS_HARDWARE_MODULE_ID找到对应的.so库的.因为该库中的struct sensors_module_…
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 今天我们学习如何实现Android应用的自动更新版本功能,这是在各种语言编写的应用中都会经常遇到的情景.当我们的应用检测到网络上有新版本发布时,系统会提示是否下载新版本应用,当新版本应用下载完毕后,系统会自动安装下载的新版本应用(或跳转到相关安装页面询问).我们将下载的应用存放在sdcard中,由于整个流程涉及对sdcard的读写操作,所以要赋给我们应用读写外存的权限.下面给出该场景…
Android 开发之serviceManager分析 在Android系统中用到最多的通信机制就是Binder,Binder主要由Client.Server.ServiceManager和Binder驱动程序组成.其中Client.Service和ServiceManager运行在用户空间,而Binder驱动程序运行在内核空间.核心组件就是Binder驱动程序了,而ServiceManager提供辅助管理的功能,无论是Client还是Service进行通信前首先要和ServiceManager…
在上一篇文章中,我们详细分析了android是如何解析蓝牙反馈上来的搜索到的设备信息,本文将会继续分析这些信息到了上层之后是如何处理. 8.inquiry result引起的上层变化 我们知道inquiry result引起的上层变化是通过向上层回报device found的signal来实现的.在jni层收到这个signal之后,会调用java层的onDeviceFound接口,这个地方为什么会调用我就不详细解释了,看了我之前的文章,这个地方应该是轻车熟路了.直接分析onDeviceFound…
5.1实验方案 通过以上章节,本文阐述了目前Android平台上的恶意软件以“隐私窃取”和“恶意扣费”类为主,本研究课题访问控制的目标也正是阻止恶意软件“隐私窃取”和“恶意扣费”的行为,因此,本实验方案选取良性软件和恶意软件,分别针对拨打电话.发送短信.联网.访问sd卡.访问通讯录.查看短信行为进行测试和分析.测试用例选取百度通讯录.360通讯录.酷狗音乐.DroidDream,实验环境为Ubuntu10.04和Android4.0模拟器以及相应的goldfish内核. 5.2实验过程 1. 测…
SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值. 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误. 另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,如下面语句…
Android系统是基于Linux内核开发的,因此,Android系统不仅保留和继承了Linux操作系统的安全机制,而且其系统架构的各个层次都有独特的安全特性[2] . 1. Linux内核层安全机制 Android的Linux内核包含了强制访问控制机制和自主访问控制机制.强制访问控制机制由Linux安全模块来实现,但Google出于某种原因,并没有将LSM编译进Android内核.自主访问控制机制通常由文件访问控制来实现,Linux文件系统的权限控制是由user.group.other与读(r…
Android四大组件之BroadcastReceiver Broadcast Receiver 广播接收器,是一种负责接收广播消息并对消息做出响应的组件,和Service一样并不提供与用户交互的UI界面.它和事件处理机制类似,只不过事件处理机制是程序组件级别,而广播事件是系统级别. 系统源码:frameworks/base/core/java/android.content.BroadcastReceiver.java 1)BroadcastReceiver生命周期 BroadcastRece…
1)修改开机默认壁纸 Android开机默认资源文件为:frameworks/base/core/res/res/values/config.xml 我们找到wallpaper行: <string name="default_wallpaper_component">@null</string> 系统默认壁纸一般是一张静态图片,这里设置的静态图片为@null空,那么壁纸到底在什么地方设置的呢? 系统是在packages/apps/Launcher2/res 目录…
Android系统开发之XML文件的解析 我们知道Http在网络传输中的数据组织方式有三种分别为:XML方式.HTML方式.JSON方式.其中XML为可扩展标记语言,如下: <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>Jack</name> <age>23</age>…
系统自带的控件TextView有时候没满一行就换行了,为了解决这个问题,自定义了一个TextView,只有一行显示不完全的情况下才会去换行显示,代码如下: package com.open.textview; import java.util.ArrayList; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphic…
为了适应越来越大的设备屏幕,Android在3.X后引入了Fragment概念,作用是可以在一个屏幕上同时显示多个Activity,以达到充分利用屏幕的目的.关于Fragment的使用说明,可以阅读<Android Fragment完全解析,关于碎片你所需知道的一切>.其中,Fragment有一个很强大的功能,就是可以动态加载.这样可以让整个界面的开发更加灵活,可以根据不同的场景动态加加载不同的Activity. 回到今天的主题——利用Fragment实现注入攻击.从3.X后,android工…
Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.AdapterView的类,包括ListView.GridView.Spinner和Gallery. 1)基本的列表控件ListView     ListView控件垂直显示一组项,通常通过编写一个扩展android.app.ListActivity的新活动来使用ListView.ListActivi…
在我们Linux系统中创建线程函数为:pthread_create(),在Android中我们为线程封装了一个类Thread,实际调用的还是pthread_create() 当我们想创建线程的时候,只需要继承于这个Thread类并实现虚函数thread_loop()即可. frameworks/base/include/utils/threads.h class Thread : virtual public RefBase { public: // 创建一个Thread对象,但是并不立即启动线…