![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 83
Tommy_wxie
Tommy_wxie
展开
-
Android内存泄露分析(MemoryAnalyzer工具)
前提条件:1,电脑安装了Java 运行环境 2,手机端开启了 USB 调试开关 3,获取 root 权限基本步骤:1,使用eclipse 自带的 DDMS 工具分析各线程的内存使用情况,如下图所示Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化。怎样判断当前进程是否有内存泄漏转载 2016-11-21 13:21:42 · 952 阅读 · 1 评论 -
ION基本概念介绍和原理分析
转载前的话:ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer的使用周期;转载 2014-09-05 15:04:31 · 15482 阅读 · 1 评论 -
Android Camera TakePicture過程分析
Android Camera TakePicture過程分析接著上一篇文章,繼續講解camera拍照等具體功能實行流程Camera子系统采用C/S架构,客户端和服务端在两个不同的进程当中,它们使用android中的binder机制进行通信,本系列文章将从Android Camera应用程序到硬件抽象的实现一步一步对照相机系统进行分析,首先从CameraService初始化过程着手,原创 2014-04-03 11:35:41 · 12181 阅读 · 4 评论 -
Android Camera open运行流程
Android Camera 运行流程一 首先既然Camera是利用binder通信,它肯定要将它的service注册到ServiceManager里面,以备后续Client引用,那么这一步是在哪里进行的呢?细心的人会发现,在frameworks\base\media\mediaserver\Main_MediaServer.cpp下有个main函数,可以用来注册媒体服务。没错就是原创 2014-04-03 11:34:14 · 5392 阅读 · 1 评论 -
android中的/system/bin/input工具
input工具提供一种在终端输入命令来控制系统的方式# inputusage: input ... input text input keyevent input tap input swipe #input keyevent 4 //4 表示KEYCODE_BACK常用的几种事件:82 -->原创 2013-12-19 15:45:20 · 2529 阅读 · 0 评论 -
Adroid 触摸屏设备
1. 触摸屏设备分类1.1 多点触摸满足以下两个条件为多点触摸设备:1)输入设备驱动报告了ABS_MT_POSITION_X 和ABS_MT_POSITION_Y存在2)输入设备没有任何手柄按钮1.2 单点触摸满足以下两个条件为单点触摸设备:1)输入设备不被归类为多点触摸设备2)输入设备报告存在ABS_X和ABS_Y绝对轴,以及存在BTN_TOUCH按键码1.3转载 2013-03-28 13:32:41 · 1349 阅读 · 0 评论 -
Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支持蓝牙4.0版本_BLE开发
一、Android Bluetooth现状在android官网可以了解到android4.2新增了部分新功能,但是对于BT熟悉的人或许开始头疼了,那就是Android4.2引入了一个新的蓝牙协议栈针。谷歌和Broadcom之间的合作,开发新的蓝牙协议栈,取代了基于堆栈的Bluez。因此市场上出现了老设备的兼容问题,很多蓝牙设备在android4.2手机上不能使用。N原创 2013-12-31 15:52:50 · 4139 阅读 · 1 评论 -
JellyBean的VSync与三级buffer的入门介绍(外文翻译)
天我们来探讨一些不同的,来研究一些对于所有人都很实用的一个话题:性能。大家可以看到JellyBean非常的快,在GalaxyNexus测试它可以感到它变成了一台全新的手机。滚动变得非常平滑和更快了,而且相应点击也变得高度敏感。另外,这些平滑的表现体现在了各个方面。 我不清楚你们是否都已经看到了这些改变,不过这些都很无趣呀,真正有趣的东西是——他们怎么做到这些的?这就是我们这里要探究的。因此转载 2013-11-05 18:00:07 · 1790 阅读 · 0 评论 -
android sensor framework
1. 简介 在了解Sensor工作流程以前,一直以为其事件是通过Event Hub来进行输送的,可是研究完Android4.0代码之后,才发现自己错了。 其主要框架如下图所示: 2.功能模块2.1 SensorManager.java与下层接口功能:1) 在SensorManager函数中 (1) 调用native sensors_module_转载 2013-10-31 15:47:46 · 3950 阅读 · 0 评论 -
Android 电源管理 -- wakelock机制
Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠, 可以被用户态程序和内核获得. 这个锁可以是有超时的 或者 是没有超时的, 超时的锁会在时间过去以后自动解锁。如果没有锁了或者超时了, 内核就会启动休眠的那套机制来进入休眠.PowerManager.WakeLock 有加锁和解锁两种状态,加锁的方式有两种: 第一种是永久的锁住,这样的锁除非显式的转载 2013-09-29 12:21:03 · 1562 阅读 · 0 评论 -
Android驱动之虚拟按键
1 背景nexus one工业设计简洁,类似于iphone只有一个按键的设计,只有中间的一个轨迹球。但是android标准键盘是有 HOME,MENU,BACK,SEARCH等,但是同时要保持工业设计。nexus one是这样解决问题的,显示屏是800X480,但是在电容触摸屏是8xx*480的就是比800要大的地方就变成了虚拟按键,模拟了android标准按键。 2 方案转载 2013-07-24 15:53:32 · 1555 阅读 · 0 评论 -
NFC学习——NFC Enable 过程分析(一)
拿到一台支持NFC手机或是平板设备时,在Settings->more可以看到NFC的enble,disnable的选项,还有android Beam这个东西。现在来分析NFC enable的过程 wireless_settings.xml 在Settings配置了NFC功能项:[html] view plaincopy转载 2013-07-25 13:14:05 · 2972 阅读 · 0 评论 -
Linux 固件子系统----如何更新固件
在一般的使用中,可能会需要使用到升级固件这个功能,在linux的系统中提供了固件子系统这个设备模型来帮助快速的升级固件。在这里先将linux中提供的常用的接口来说明下:内核的固件接口:[cpp] view plaincopy#include int request_firmware(const struct firmware **转载 2013-07-24 15:49:42 · 1907 阅读 · 0 评论 -
Android tp的虚拟按键(virtual key)处理
Android tp的虚拟按键处理现在在越来越多的Android的手机都是虚拟按键来操作,但是对于开发者来说可能会关心Android对虚拟按键如何处理的。对Linux熟悉的人可能会说,it's easy, 调用input_report_key()。OK,你说的没有错误,但是在android中,google让你对策略和驱动有了更加深入的了解。APP------->原创 2013-07-24 15:48:22 · 2372 阅读 · 0 评论 -
android系统硬件OpenGL 3D 移植
通过前面两篇文章: http://blog.csdn.net/andyhuabing/article/details/7176049http://blog.csdn.net/andyhuabing/article/details/7177757大家应该对于OpenGL的框架层有个完整的理解了,而这一篇文章将是基本总结android系统中对于OpenGL的处理流程,这也是转载 2012-08-15 14:52:02 · 1737 阅读 · 0 评论 -
Android Camera Framework Stream(一)
现在我们尝试从最开始的启动流程来熟悉android camera的整体framework流程:首先从上图的各个步骤来逐一分析流程,后续会根据具体的一些点进行内容的添加和扩充: ? Camera.javapackages/apps/camera/src/com/android/最上层的应用就是从这个文件开始。该文件集中了整个android上层应用的所有相关内容,当然更多的则为转载 2014-09-20 10:29:59 · 1922 阅读 · 0 评论 -
Android系统Camera录像过程分析
最近调试系统Camera,遇到如下问题:在录像过程中,拔掉Camera;会出现应用程序卡死现象。 先说说之前的设计架构: 当用户拔掉Camera时,会给应用程序发送广播;当应用程序收到广播后调用Activity类的finish方法(系统会自动调用onPause方法),而我们的onPause方法做了停止录制和关闭Camera的动作。 问题出在: 当调用系统MediaRecor转载 2014-09-20 15:20:29 · 2777 阅读 · 0 评论 -
android 集成第三方静态库的编译方法
最近为java层将一个静态库通过jni层封装成了一个动态库工他们调用,遇到了一些编译上的疑惑,所以索性将其彻底搞清楚算了,免得以后误事。 下面的图片列出了所有相关文件,可以看到引用静态库的文件是com_xxx.cpp文件,而.a文件是放在lib目录下的libHWRecog.a,而库提供出来的头文件在include下的两个.h文件。转载 2014-09-13 15:35:29 · 1482 阅读 · 0 评论 -
编译 链接和加载
1. 序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将>中部分内容略读了一遍,主要是关于编译,链接和加载这块的。于是顺便做个笔记,方便以后回顾。基本上知道了这些,对于编译,链接和加载过程中产生的各种问题,应该就能从根本上理解并解决了。其实以前上学时也看过那本经典的>,当时还写了篇>,不过此次会更细致深入地了解下整个编译链转载 2016-08-31 21:24:37 · 2088 阅读 · 0 评论 -
Android系统SVC命令教程
svc命令,位置在/system/bin目录下,用来管理电源控制,无线数据,WIFI[java] view plaincopy# svc svc Available commands: help Show information about the subcommands power Control the power manager dat转载 2014-12-02 15:35:03 · 3948 阅读 · 0 评论 -
Android4.2.2 SurfaceFlinger的相关事件和消息处理机制
在这篇博文将会和大家一起分享我所学到的一点SurfaceFlinger中的事件和消息处理机制。 在前面的博文中,可以发现在SurfaceFlinger中的OnFirstRef里面有如下函数:void SurfaceFlinger::onFirstRef(){ mEventQueue.init(this); run("SurfaceFlinger", PRIORITY转载 2014-11-04 14:49:37 · 1300 阅读 · 0 评论 -
详解Android SurfaceFinger服务
SurfaceFlinger是android平台的显示服务,为移动互联网时代的内容呈现和交互提供了平台级的基础。本文以Android4.2的源代码和架构为例,详细介绍SurfaceFlinger服务。相关类图启动SurfaceFlinger服务的源代码位于frameworks/native/cmds/surfaceflinger下:[cpp] view转载 2014-11-04 10:14:48 · 1923 阅读 · 0 评论 -
在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法。简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中。接着,在Ubuntu上为Android系统编写Linux内核驱动程序一文中举例子说明了如何在Linux内核编写驱动程序。在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一转载 2014-10-15 19:14:48 · 1076 阅读 · 0 评论 -
Linux设备节点创建》用户空间ueventd创建设备节点规则
说明:本文基于Android2.3和Linux2.6,其余版本仅供参考。一、devfs、udev和sysfs是什么关系?linux2.6之前使用devfs设备文件系统,它存在与内核空间;linux2.6之后使用udev设备文件系统,它存在与用户空间、但严重依赖与sysfs文件系统。二、Android(使用linux2.6以后的设备节点创建策略)设备节点的创建 在Android转载 2014-10-15 19:03:52 · 1522 阅读 · 0 评论 -
Android系统init.rc分析
在 Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。 init.rc是在init启动后被执行的启动脚本.(1)android启动文件系统后调用的第一个应用程序是/init,此文件的很重要的内容是解析了init.rc和init.xxx.rc两个配置文件,然后执转载 2014-10-29 11:08:26 · 989 阅读 · 0 评论 -
Java基础知识——JNI入门介绍
Java类型和本地类型对应 在如下情况下,需 要在本地方法中应用java对象的引用,就会用到类型之间的转换: 1)java方法里面将参数传入本地方法; 2)在本地方法里面创建java对象; 3)在本地方法里面return结果给java程序。 分为如下两种情况: Java原始类型 像 booleans、integers、floats等从Java程序中传到转载 2014-10-28 11:13:44 · 886 阅读 · 0 评论 -
android switch模块
前面我们已经提到过Android新增了一个switch处理模块,但是没有说明其具体用途,这里将对该模块进行详细的分析。switch是Android引进的一个新驱动,用于检测一些开关量。比如检测耳机插入和USB设备插入等。Switch的构架原理switch模块包含两部分内容:首先是switchclass,它在Android中是作为一个module来实现的,可以进行动态加载转载 2014-10-10 15:58:38 · 4876 阅读 · 0 评论 -
Android 之 Ashmem驱动原理
Android应用程序中使用匿名共享内存, 主要是通过应用程序框架层提供的MemoryFile接口来使用的, MemoryFile 接口是通过JNI方法调用到系统运行时库层中的匿名共享内存C接口, 最终通过这些C接口来使用内核空间中的匿名共享内存驱动模块。 c接口进入内核,分析Android系统的匿名共享内存Ashmem驱动程序的源代码,深入了解它是转载 2014-10-09 17:54:09 · 2814 阅读 · 0 评论 -
Android指针管理:RefBase,SP,WP
Android中通过引用计数来实现智能指针,并且实现有强指针与弱指针。由对象本身来提供引用计数器,但是对象不会去维护引用计数器的值,而是由智能指针来管理。要达到所有对象都可用引用计数器实现智能指针管理的目标,可以定义一个公共类,提供引用计数的方法,所有对象都去继承这个公共类,这样就可以实现所有对象都可以用引用计数来管理的目标,在Android中,这个公共类就是RefBase,同时还有一个简单版转载 2014-10-09 09:24:04 · 1279 阅读 · 0 评论 -
Android uevent架构
Android很多事件都是通过uevent跟kernel来异步通信的。其中类UEventObserver是核心。 UEventObserver接收kernel的uevent信息的抽象类。1、server层代码 1)battery server:frameworks/base/services/java/com/android/server/SystemServer.java framew转载 2014-10-22 10:08:01 · 1136 阅读 · 0 评论 -
Android智能指针使用方法介绍
Android手机操作系统既然是开源的操作系统。那么在具体的文件夹中就会存放着各种相关功能的开源代码。我们在使用的时候可以根据这些源代码进行相应的修改就能轻松的完成我们所需的功能。在这里大家就一起来看看Android智能指针的相关源码解读以及应用方法。在Android的源代码中,经常会看到形如:sp、wp这样的类型定义,这其实是Android中的智能指针。智能指针是C++中的一个概念,通过基于转载 2014-09-04 15:48:25 · 1293 阅读 · 0 评论 -
android makefile prebuild
如果把source code放到Android下编译,可以参照其它Andorid.mk写对应的Makefile。 如果在编译Android之前已经有编译好的库或者配置文件时,如何加入到Android中呢? Android提供了Prebuilt编译方法,两个文件prebuilt.mk和multi_prebuilt.mk,对应的方法宏是BUILD_PREBUILT和 BUILD_MUL转载 2014-09-13 15:31:37 · 1287 阅读 · 0 评论 -
SurfaceFlinger启动过程分析
转载时请注明出处和作者文章出处:http://danielwood.cublog.cn作者:Daniel Wood------------------------------------------------------------ 以下将讲讲surfaceflinger的启动过程,可以结合启动过程图来了解。当然最关键是代码(Google Android 2.2),转载 2012-08-15 15:30:42 · 1905 阅读 · 0 评论 -
Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt
简介------------ 为了发挥新近的多点触摸和多用户设备的强大功能,为多点触摸定义一种上报详细数据的方法(比如有多个物体直接接触到设备的表面),是非常有必要的。这篇文档描述了多点触摸协议(multi-touch,MT),是的内核驱动可以对多个随意数量的触控事件上报详细的数据信息。 基于硬件的能力,该协议被分为两种类型。对于只能处理匿名接触(type A)的设备,该协转载 2013-07-04 11:27:38 · 1367 阅读 · 0 评论 -
深入理解Android系统第一弹 - Android启动流程
1. init进程2. zygote进程2.1 AndroidRuntime2.2 ZygoteInit3. system_server进程3.1 init1阶段3.2 init2阶段接着Linux启动部分 http://blog.csdn.net/qianjin0703/article/details/68811071. init进程系统在转载 2013-01-12 10:50:01 · 3635 阅读 · 0 评论 -
Android底层开发工作小结
2010 - 微博元年,智能手机元年,2011 - 平板电脑元年,2012 - 智能电视元年。又到年末,是时候梳理下Android开发工作,展望下未来了。本文仅供我个人参考...开发产品 电子书 手机 平板电脑负责模块 Camera, Sound, SD, USB, G-sensor, TP软件平台 Android 1.6/2.2/2.3硬件平台 Mavell PX转载 2013-01-12 10:48:36 · 18639 阅读 · 3 评论 -
android 2.3 电量管理
1. 介绍.... 42. 电池管理.... 42.1. FrameWork.. 52.1.1. 监听... 52.1.1.1. UEventObserver的实现... 62.1.1.2. uevent 82.1.2. 状态读取... 92.1.3. 更新显示... 92.2.转载 2012-12-12 19:10:29 · 1099 阅读 · 0 评论 -
android 2.3 电源管理
1. 介绍.... 42. 前言.... 43. 应用程序开发相关.... 43.1. Api的使用... 43.2. 注意事项... 54. 驱动程序开发相关.... 55. FrameWork相关.... 65.1. Linux内核的电源管理... 65.2. Android对lin转载 2012-12-12 14:05:40 · 1402 阅读 · 0 评论 -
Android factory reset 流程
===== 应用流程 =========>frameworks/base/services/java/com/android/server/MasterClearReceiver.javaRecoverySystem.rebootWipeUserData(context);====>framesworks/base/core/java/android/os/RecoverySyst转载 2012-08-22 19:56:08 · 2300 阅读 · 0 评论 -
Android suspend/resume flow (上篇: User mode)
当用户按下Power button:0) android/frameworks/base/services/java/com/android/server/WindowManagerService.java boolean screenIsOff = !mPowerManager.isScreenOn(); b转载 2012-08-22 20:12:43 · 1958 阅读 · 0 评论