Android
文章平均质量分 72
hp0773
这个作者很懒,什么都没留下…
展开
-
Android6.0 Bluetooth学习
蓝牙 bluetooth-之一http://blog.csdn.net/shichaog/article/details/51931898蓝牙bluetooth之二-源码分布http://blog.csdn.net/shichaog/article/details/52066906蓝牙之三-StateMachinehttp://blog.cs转载 2016-11-30 10:33:15 · 654 阅读 · 0 评论 -
唤醒锁: 检测 Android* 应用中的 No-Sleep(无法进入睡眠)问题
摘要如果 Android* 应用使用唤醒锁不当,将会显著增加电池耗电量。 在本文中,我们将介绍一些提示和技巧,帮助您了解如何确认与误用唤醒锁有关的 No Sleep 漏洞。1. 介绍2. 唤醒锁2.1. 唤醒锁简介2.2. Android 用户唤醒锁2.3. Android 内核唤醒锁2.4. No-Sleep 漏洞3. 找出 No Sleep 漏洞3.1. 使转载 2014-07-04 19:05:24 · 833 阅读 · 0 评论 -
Android Sensor传感器系统架构初探
1. 体系结构2. 数据结构3. 四大函数本文以重力感应器装置G-sensor为例探索Android的各层次结构。1. 体系结构 Android的体系结构可分为4个层次。第一层次 底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此第二层次 Android标准C/C++库,包括硬件抽转载 2014-05-08 19:42:16 · 801 阅读 · 0 评论 -
Android系统Gps分析(一)
1 GPS架构2 GPS分析2.1头文件头文件定义在:hardware/libhardware/include/hardware/gps.h,定义了GPS底层相关的结构体和接口GpsLocationGPS位置信息结构体,包含经纬度,高度,速度,方位角等。[cpp] view plaincopy/** F转载 2014-04-19 22:17:51 · 984 阅读 · 0 评论 -
Android 如何修改Sim卡语言自适应
一、 系统设定默认语言规则系统预置语言,即在 makefile 文件中定义的语言;– 位置:mediatek/config/${Project}/ProjectConfig.mk,默认第一个是系统默认语言 刷机过后,开机重启,如果未插卡,系统语言为预置的语言;插入SIM卡过后,系统语言根据 SIM 卡来改变, 默认会把刷机过后第一次插的 SIM 卡的语言设置为默认语言;(如转载 2014-01-16 18:43:31 · 1007 阅读 · 0 评论 -
某Android 设备的物理存储(Nand)分区分析
只是记录自己的理解,难免有些错误,有时间会补充和更正。以某具体 android 设备为例(Cortex A9双核 + 4GB iNand + 1GB DDR3),记录获取该设备存储分区信息的方法,获取驱动设备信息,主要让大家有一个形象的认识,不涉及驱动具体实现(据说4层);本文是从iNand存储的角度出发理解分区信息(YAFFS2),涉及到基于RAM的文件系统(EXT4,VFS),仅限转载 2013-12-13 19:50:33 · 1812 阅读 · 0 评论 -
Android背光系统分析
转载两篇文章文章一1,总论背光模块属于HAL层开发,HAL层开发,用一句话来概括就是定义一个hardware.h中定义的名称为宏HAL_MODULE_INFO_SYM的hw_module_t结构体,然后实现结构体的相关内容2,驱动方面的准备简单的嵌入式linux驱动,编写LCD背光驱动,并提供接口给上层修改,我所用的是直接修改接口文件,接口如下:/sys/cla转载 2013-11-14 17:15:17 · 1807 阅读 · 0 评论 -
Android 4.0 Launcher2源码分析——导入eclipse进行调试
由于需要研究Android 4.0Launcher2的源码,必要的时候我们需要对代码进行调试,所以我们需要能够运行自己修改后的Launcher。由于Launcher是Android内置的应用,因此,可以通过搭建Android源码开发环境来进行调试和开发,这些工作只能在Linux和MacOS上进行,对于大多数习惯了windows和eclipse开发环境的程序员来说,能够在eclipse下进行转载 2013-11-22 19:34:32 · 772 阅读 · 0 评论 -
Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
作为一个完成的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和File。由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider。 SQLite: SQLit转载 2013-10-28 17:18:53 · 614 阅读 · 0 评论 -
Android中Proguard和JNI的相关问题
在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了。所以,在JNI应用中该慎用progurad啊。解决办法: 1、在Android.mk中加入一行: LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags 2、创建proguard原创 2013-10-26 10:37:29 · 715 阅读 · 0 评论 -
repo和git使用小结
1. 配置git环境变量 git config –global user.name yourname git config –global user.email yourname@gmail.com git config –gloval core.editor vim可以用cat ~/.gitconfig来看看是否配置正确。2. 创建git分支如创建ori原创 2013-05-31 19:04:24 · 1739 阅读 · 0 评论 -
android平台打印函数调用栈的方法
打印调用栈是android平台问题定位的基本方法,如果需要知道谁在调用某个函数,可以在此函数中添加打印调用栈函数,弄清楚函数之间的调用关系。 1. Java层打印调用栈方法RuntimeException here = newRuntimeException("here");here.fillInStackTrace();Log.w(TAG, "Called: " + this转载 2013-09-11 15:49:33 · 3800 阅读 · 0 评论 -
android4.2代码目录结构说明
|-- abi:abi相关代码|-- bionic:C 库,比如libc, libm, libdl, dynamic linker 等等|-- bootable:基础库的源代码|-- build:系统编译和配置所需要的脚本和工具|-- cts:Android兼容性测试用例|-- dalvik:Java虚拟机|-- development:开发应用程序所需的模板和工具|-原创 2013-09-24 14:48:57 · 1156 阅读 · 0 评论 -
Android四大基本组件介绍与生命周期
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。一:了解四大基本组件Activity :应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Intent 的描述结转载 2014-11-28 18:27:11 · 438 阅读 · 0 评论 -
Android平台代号、版本和API级别
1. 如何查看代码工程对应的版本号Android版本号:查看android/build/core/version_defaults.mk文件,包括Android版本和SDK版本等。编译时终端一开始也会打印版本信息,如:PLATFORM_VERSION:2.3.1Linux版本号:在kernel所在的目录的Makefile文件开头有如下定义:V原创 2012-08-26 14:41:20 · 1742 阅读 · 0 评论 -
开机提示“Android正在升级...”
有时候我们对手机重新刷ROM后或者升级了某些程序开机时会显示"Android正在升级..."的提示,这个过程实际上是DalvikVM对程序进行优化的过程。Android启动时,Dalvik VM扫描所有的app,并为它们创建了一个依存关系库,DalvikVM通过这个依存关系树来为每个程序优化代码并存储在Dalvik缓存中(dalvik-cache),程序运行会使用优化过的代码。正常情况下手原创 2014-12-25 14:00:12 · 6302 阅读 · 2 评论 -
Android --- Setting up a Linux build environment
Setting up a Linux build environmentThese instructions apply to all branches, including master.The Android build is routinely tested in house on recent versions ofUbuntu LTS (14.04), but most di转载 2016-09-18 10:48:31 · 550 阅读 · 0 评论 -
ARM Linux 3.x的设备树(Device Tree)
1. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach转载 2016-06-02 16:18:32 · 587 阅读 · 0 评论 -
android之MTP框架和流程分析
概要本文的目的是介绍Android系统中MTP的一些相关知识。主要的内容包括:第1部分 MTP简介 对Mtp协议进行简单的介绍。第2部分 MTP框架 介绍Android系统下MTP的框架。第3部分 MTP启动流程 详细分析MTP服务的启动流程,包括Java层, JNI层, kernel相关知识的介绍。转载 2016-05-01 14:42:45 · 742 阅读 · 0 评论 -
MTP in Android详解
MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。Android从3.0开始支持MTP。不过,在今天的智能手机领域内,Google和微软是一对冤家,为什么Android中会使用MTP呢?请看下文。一 背景知识介绍笔者相信《程序员》杂志的绝大多数读者或多或少都使用过MTP。因为早在智能手机普及前,数码相机和MP3播转载 2016-05-01 10:15:09 · 934 阅读 · 1 评论 -
V4L2 soc camera 分析 - 系统架构图
V4L2 soc camera 分析 - 系统架构图图1 soc camera 子系统 系统架构图Soc camera sub-system对应着drivers/media/video/下的soc_camera.c soc_camera_platform.cSoc camera host 是host端实现,是由平台厂商实现的,向上实现soc_camera_hos转载 2015-11-21 21:34:18 · 3836 阅读 · 0 评论 -
android之ION内存管理器(1)-- 简介
为什么需要ION回顾2011年末[2],LWN审查了android kernel patch[3],以期望将这些patch合并到kernel主线中。但是PMEM(android实现的 一个内存分配器)使这个愿望破灭了。为什么PMEM不被linux 社区接受的原因在[3]中有讲到。从那开始,PMEM很明确会被完全抛弃,取而代之的是ION内存管理器。ION是google在Android4.0 IC转载 2015-09-21 18:05:30 · 747 阅读 · 0 评论 -
最全的Android源码目录结构详解
Android 2.1|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及generic等基础开发包配置)|-- cts转载 2015-09-21 18:08:34 · 500 阅读 · 0 评论 -
android之ION内存管理器(2)-- cache
ION如何实现buffer共享的思路倒是很清晰的,但是深入代码研究,发现ION是依赖于DMA Mapping的,而DMA mapping模块对我而言还是挺复杂的,看这个模块遇到的第一个问题就是cache。既然是DMA mapping,直接将申请的buffer设置为non-cacheable不就行了?这样就可以保证CPU通过DMA读写缓冲区的一致性了。为什么还有Consistent DMA mapp转载 2015-09-21 18:06:43 · 578 阅读 · 0 评论 -
Android 系统默认参数的修改
Android 系统默认参数的修改一般在新项目开始之初,我们需要针对客户需求进行各种系统默认属性的配置,通常这些属性都是通过build.prop、settings.db 、default.xml、一些功能package下的 config.xml 等来进行初始化配置的。那么,要满足客户的定制需求,对于我们开发者来说,修改SettingsProvider默认值,而第一次开机时,用来填充sett转载 2015-06-29 16:47:25 · 6250 阅读 · 0 评论 -
关于build.prop原始Dalvik虚拟机设定与调整
1.dalvik.vm.heapstartsize=8m(表示应用程序启动后为其分配的初始大小为8m)这里分配的内存容量会影响到整个系统对RAM的使用程度,和第一次使用应用程序时的流畅程序。这个值越大,系统消耗RAM则越快,但是应用程序打开后的反应也越快。值越小,系统的RAM剩余则越多,但是程序在启动后会比较慢。2.dalvik.vm.heapgrowthlimit=64m(每转载 2015-04-29 16:07:58 · 1832 阅读 · 0 评论 -
Bitmap的生成流程之BitmapFactory.decodeResource VS BitmapFactory.decodeStream
BitmapFactory.decodeResource和BitmapFactory.decodeStream,相信对于有过android app开发经验的人来说都是很熟悉了。关于Bitmap的OOM问题,网上也有很多文章进行了分析,不少文章都说为避免OOM,最好使用BitmapFactory.decodeStream,但是具体说明原因的我至今没有找到,所以趁着10.1期间有空,就调查了一番,希望转载 2015-04-29 16:09:56 · 742 阅读 · 0 评论 -
解决Android加载图片时内存溢出的问题
尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的so转载 2015-04-29 16:10:33 · 489 阅读 · 0 评论 -
android 动态库死机调试方法
简要说明:android系统中调试Java非常容易,一般遇到错误都在logcat中打印出错时函数的调用关系,而C库中出错时只看到一些二进制信息,使用gdbserver调试环境搭建又比较复杂。方法一:下在介绍一个简单的调试库的方法,当然需要有so库的源代码举例a) 错误信息如下,它表示了出错时的函数调用关系(下面调上面的)I/DEBUG转载 2015-04-29 16:05:13 · 488 阅读 · 0 评论 -
安卓开发之常见死机问题--log分析
一般在平时工作中,基本上很多代码可以在eclipse+ndk进行调试,但如果需要用到具体的硬件设备,如媒体播放设备无法模拟的情况下,只能上硬件(盒子或手机)上进行调试。此时唯一的调试手段就是logcat产生log信息进行分析问题了。 什么时候会有Log文件的产生 ?一般在如下几种情况会产生log文件 。 1、程序异常退出 uncaused exception 2、程序强制关闭 F转载 2015-04-29 15:48:45 · 470 阅读 · 0 评论 -
android ndk stack trace and crash log analyzer
一、How to read Android crash log and stack traceAndroid系统崩溃时常常会产生如下的crash log信息,这些信息可以通过"adb logcat"或者从/data/tombstones目录下找到对应的tombstones文件,这里简单描述了如何读懂这些信息以及如何通过工具将对应的地址翻译成symbol信息。crash log最开始是bui原创 2013-09-19 13:24:48 · 4197 阅读 · 1 评论 -
/proc/meminfo详解
cat/proc/meminfo 读出的内核信息进行解释,下篇文章会简单对读出该信息的代码进行简单的分析。 MemTotal: 507480 kB MemFree: 10800 kBBuffers: 34728 kBCached: 98852 kBSwapCached: 128 kBAc转载 2013-03-04 10:48:20 · 424 阅读 · 0 评论 -
Android中的延时函数
Android中延时函数分为用户空间和内核空间两部分:内核空间#include udelay(int n); mdelay(int n)); ndelay(int n)); 这几个函数会让cpu死循环,导致cpu忙等待.usleep(int n);msleep(int n));nsleep(int n));第一组和第二组延时函数的区别原创 2012-12-04 19:45:12 · 11328 阅读 · 0 评论 -
Android系统框架和几种调用流程
(摘录一本书中的部分章节,对理解整个Android系统的架构有帮助,转载如下。) 1.1.1 Android 的系统构架 要深入学习 Android,首先需要学习 Android的系统构架。Android的系统构架和其操作系统一样,采用了分层的构架,层次非常清晰,因此要掌握它的构架并不难。下图为为Android 的系统构架图,如果你对该图已经不陌生,并且理解图转载 2012-12-05 10:14:48 · 6801 阅读 · 1 评论 -
Android.mk的用法|静态库|动态库
Linux函数库介绍函数库可以看做是事先编写的函数集合,它可以与主函数分离,从而增加程序开发的复用性。Linux中函数库可以有3种使用的形式:静态、共享和动态。1) 静态库的代码在编译时就已连接到开发人员开发的应用程序中;2) 而共享库只是在程序开始运行时才载入;3) 动态库也是在程序运行时载入,但与共享库不同的是,动态库使用的库函数不是在程序运行使开始载入,而是在程序中的语句需要转载 2012-12-04 19:28:18 · 2296 阅读 · 0 评论 -
Linux Kernel and Android 休眠与唤醒(中文版)
Linux Kernel and Android 休眠与唤醒(中文版)Table of Contents简介国际化版本信息对于休眠(suspend)的简单介绍Linux Suspend 的流程相关的文件:准备, 冻结进程让外设进入休眠ResumeAndroid 休眠(suspend)涉及到的文件:特性介绍Early SuspendLate Res转载 2012-09-14 17:36:37 · 714 阅读 · 0 评论 -
Android平台移植应该做两步工作
Android系统的移植的主要目的是为了能在特定的硬件上运行Android系统。而在移植的过程中,一个重要的方面就是把握关键要点,减少工作量。从工作的角度,首先要熟悉硬件抽象层的 接口 ,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。 移植方面主要的工作有两个部分: Linux驱动 Andr转载 2012-10-04 22:05:22 · 674 阅读 · 0 评论 -
Linux/Android工作队列(workqueues)
基本概念 工作队列(work queue)是Linux内核中将操作延期执行的一种机制。因为它们是通过守护进程在用户上下文执行,函数可以睡眠的时间,与内核是无关的。在内核版本2.5开发期间,设计了工作队列,用以替换此前的keventd机制。 这种机制和BH或Tasklets不同之处在于工作队列是把延期的工作交由一个内核线程去执行,因此工作队列的优势就在于它允转载 2012-09-27 11:26:44 · 1188 阅读 · 0 评论 -
Android4.0.3 显示系统深入理解
1. 简介 网上已经有很多兄弟对Android的显示系统做了深入解剖,很是佩服。可最近小弟在研究Android4.0时发现出入比较大,也许是Android4.0的修改比较多吧!因为小弟没有看Android4.0以前的代码。 面对这么复杂一个Android显示系统,如何入手呢? 根据以前的经验,不管它有多么复杂,其功能不就是以下三步曲吗?转载 2013-03-13 14:50:28 · 828 阅读 · 0 评论 -
Android Display架构分析(上)
参考:Android display架构分析二-SW架构分析Android display架构分析三-Kernel Space Display架构介绍Android display架构分析四-msm_fb.c 函数和数据结构介绍。。。。。高通Android平台下关于display部分的几个关键问题高通Qc FB驱动 以及 LCD调试过程And转载 2013-03-14 14:49:04 · 2021 阅读 · 0 评论