
Android
文章平均质量分 73
zzobin
学习
展开
-
MTP in Android
经作者同意,转发我们公司MTP专家同事huirong的一篇文章。大家也可在程序员第5期看到。MTP in AndroidMTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。Android从3.0开始支持MTP。不过,在今天的智能手机领域内,Google和微软是一对冤家,为什么Android中会使用MTP呢?请看下文。转载 2014-01-22 10:44:29 · 961 阅读 · 0 评论 -
android usb audio
http://blog.youkuaiyun.com/adits/article/details/8242146#t6http://blog.youkuaiyun.com/sepnic/article/details/6764727原创 2013-01-30 17:40:17 · 574 阅读 · 0 评论 -
蓝牙耳机
最近在关注蓝牙耳机方面的问题,做下简单的流程分析。解码后,在AudioFlinger里把音频数据写到设备里。这里主要看看AudioFlinger,AudioPolicyManager和external/bluetooth/bluez/audio里面的android_audio_hw.c和liba2dp.c。在AudioPolicyManager里有设备连接判断。status_t原创 2012-12-13 11:38:30 · 2958 阅读 · 0 评论 -
Android源码分析:AudioFlinger中的线程
Track相关类概述下图是其继承关系图,继承在AudioBufferProvider之后,各种Track可以作为AudioBufferProvider的一种为AudioMixer提供音频数据缓冲。TrackBase是基类,Track作为普通的音轨类,用于音频播放;OutputTrack用于复制线程,相当于将声音同时输出到两个输出设备中。TrackBase在它的构造函数中,在ashm上为转载 2012-12-10 13:16:49 · 5069 阅读 · 0 评论 -
Android Service学习之AIDL, Parcelable和远程服务
AIDL的作用 由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象。在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。 通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作。转载 2012-11-13 16:28:19 · 653 阅读 · 0 评论 -
HAL层
HAL层被称为硬件抽象层,它位于操作系统内核和硬件电路之间的接口层,目的是将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟的硬件平台,使其具有硬件无关性,这样就可以在多种平台上移植。 在Android源码中,HAL层被保存下面的目录中 1.libhardware_legacy:过去的目录,采取了链接库模块观念 2.libhardware:新的目录,采用HAL s原创 2012-11-13 15:48:38 · 4868 阅读 · 0 评论 -
Zygote分析
一 目的zygote,是Android搞出来的一个东西。网上讲这个的也非常多。第一次看到这个名字我就挺郁闷,想干嘛这是?Linux下名字都取得挺通俗易懂,深得人心。zygote?不就想模仿Linux下的fork吗?个人觉得Google取名字挺怪,包括Google本身。不管怎样,Zygote依然是Android系统的核心,zygote是受精卵的意思,可以认为是Android framewor转载 2012-10-18 19:55:39 · 514 阅读 · 0 评论 -
Binder机制
一说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来分析Binder的使用:l ServiceManager,这是Android OS的整个服务的管理程序l转载 2012-10-18 19:47:32 · 598 阅读 · 0 评论 -
Android MediaScanner 详尽分析
MediaScanner分析一 MediaScannerService多媒体扫描是从MediaScannerService开始的。这是一个单独的package。位于packages/providers/MediaProvider:含以下java文件l MediaProvider.javal MediaScannerReceiver.javal转载 2012-10-18 19:58:22 · 644 阅读 · 0 评论 -
Surface分析
本节的目的就是为了讲清楚Android中的Surface系统,大家耳熟能详的SurfaceFlinger到底是个什么东西,它的工作流程又是怎样的。当然,鉴于SurfaceFlinger的复杂性,我们依然将采用情景分析的办法,找到合适的切入点。一个Activity是怎么在屏幕上显示出来的呢?我将首先把这个说清楚。接着我们把其中的关键调用抽象在Native层,以这些函数调用为切入点来研究Sur转载 2012-10-18 19:53:53 · 641 阅读 · 0 评论 -
Audio Policy分析
一目的上回我们说了AudioFlinger(AF),总感觉代码里边有好多东西没说清楚,心里发毛。就看了看AF的流程,我们敢说自己深入了解了Android系统吗?AudioPolicyService(APS)是个什么东西?为什么要有它的存在?下层的Audio HAL层又是怎么结合到Android中来的?更有甚者,问个实在问题:插入耳机后,声音又怎么从最开始的外放变成从耳机输出了?调节音量的时候到转载 2012-10-18 19:51:11 · 860 阅读 · 0 评论 -
AudioTrack分析
Android深入浅出之Audio第一部分 AudioTrack分析一目的本文的目的是通过从Audio系统来分析Android的代码,包括Android自定义的那套机制和一些常见类的使用,比如Thread,MemoryBase等。分析的流程是:l 先从API层对应的某个类开始,用户层先要有一个简单的使用流程。l 根据这个流程,一步步进入到JNI,转载 2012-10-18 19:45:27 · 620 阅读 · 0 评论 -
AudioFlinger分析
本文承接Audio第一部分的AudioTrack,通过AudioTrack作为AF(AudioFlinger)的客户端,来看看AF是如何完成工作的。在AT(AudioTrack)中,我们涉及到的都是流程方面的事务,而不是系统Audio策略上的内容。WHY?因为AT是AF的客户端,而AF是Android系统中Audio管理的中枢。AT我们分析的是按流程方法,那么以AT为切入点的话,AF的分析也应转载 2012-10-18 19:42:58 · 836 阅读 · 0 评论 -
详解Android Surface系统
一 目的本篇文章的目的就是为了讲清楚Android中的Surface系统,大家耳熟能详的SurfaceFlinger到底是个什么东西,它的工作流程又是怎样的。当然,鉴于SurfaceFlinger的复杂性,我们依然将采用情景分析的办法,找到合适的切入点。一个Activity是怎么在屏幕上显示出来的呢?我将首先把这个说清楚。接着我们把其中的关键调用抽象在Native层,以这些转载 2013-02-28 17:16:08 · 669 阅读 · 0 评论 -
logcat的调试 比较有用的几个命令
http://blog.youkuaiyun.com/tiantianshangcha/article/details/6288537网上很多的logcat调试命令,但是太多的命令只会令人盐杂。(主要是adt工具带的调试功能容易死掉 每次都要重启太烦)个人认为有一下几个常用命令:adb logcat -c 清除所有以前的日志adb logcat -d 这个命令是转载 2013-04-26 10:36:57 · 1025 阅读 · 0 评论 -
Step Detector and Step Counter
Step Detector and Step CounterAndroid 4.4 also adds platform support for two new composite sensors — step detector and step counter — that let your app track steps when the user is walking,原创 2013-11-29 11:36:10 · 3748 阅读 · 0 评论 -
windows下载android源码
在网上有已经有很多这样的文章了,自己对这一块也不是太熟悉,主要是按照以前的方法,会出现以下错误:还是从头开始吧,先下载window的git工具msysgit:http://code.google.com/p/msysgit/,如下图:下载以后,点击安装,一直点击next,直到完成。安装好以后,在你想存放源码的地方新建个文件夹,比如:转载 2013-07-15 09:29:44 · 769 阅读 · 1 评论 -
wifi移植(下)
接上节,写下porting流程,这次导入是的atheros6302。 一、配置Android支持WIFI 在BoardConfig.mk中: WPA_SUPPLICANT_VERSION := VER_0_6_ATHEROS BOARD_WPA_SUPPLICANT_DRIVER := WEXT BOARD_WL原创 2012-05-21 23:44:18 · 3056 阅读 · 0 评论 -
Android量产软件客制化
转载http://blog.youkuaiyun.com/xubin341719/article/details/8449352关键词:android 4.0默认语言蓝牙名称 MTP名称默认时区关于平板电脑 内核版本号平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsungexynos4210)作者:转载 2013-10-10 11:17:28 · 2619 阅读 · 0 评论 -
ANDROID中的VOLD分析
现在可能很少有人会用mknod这个命令了,也很少有使用它的机会,但就在几年前,这还是一项linux工程师的必备技能,在制作文件系统前或加载新的驱动前,我们必须小心翼翼的创建设备节点。不需要使用mknod并不是他消失了,而是我们有了更好更智能的方法。linux对于热插拔的支持并不是生来就有的,而是经历了一个复杂而有戏剧性的过程,全球linux爱好者用脚投出了他们保贵的一票,udev最转载 2013-08-23 16:47:13 · 923 阅读 · 0 评论 -
android preference介绍
android preference 向用户提供一些参数设置的接口,可以使用preferences相关的一些类,就可以很方便的呈现参数设置界面及对参数的设置进行处理。 参数的配置可以通过xml文件配置也可以在代码种编码配置。本文先介绍参数配置的元素,然后介绍在xml文件种配置参数的方法,最后介绍代码种的配置方转载 2013-08-20 17:17:07 · 4726 阅读 · 0 评论 -
android library projects cannot be launched
今天在编译一android代码时报错:Android library projects cannot be launched解决办法如下:右键工程根目录->properties左侧选择->android原创 2013-07-03 10:13:38 · 1776 阅读 · 1 评论 -
android单独编译
编译模块Android中的一个应用程序可以单独编译,编译后需要重新生成system.img。在Android目录下运行$ . build/envsetup.sh 或者$ source build/envsetup.sh ,然后就会多出几个可用的命令:- croot: Changes directory to the top of the tree.- m:原创 2013-06-20 14:36:59 · 964 阅读 · 0 评论 -
The disk drive for /media/boot is not ready yet or not prese
碰到这个问题,每次开机都要做这个动作--按S键。甚是郁闷,干脆想点办法,不要每次手动进系统。于是查了下,还是与/etc/fstab这个文件有关:原来的是:UUID=e139ce78-9841-40fe-8823-96a304a09859 / ext4 errors=remount-ro,noatime 0 1/dev/mmcblk0p1 /media/boot vfat defaul原创 2013-05-14 15:11:52 · 1494 阅读 · 0 评论 -
Android4.1 compile problem
编译 Android 4.1 出现以下问题:make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] Killed 在网上找到有人遇到这个问题,原因是系统没有swap分区:解决办法如下: 原因分析:主要是Linux原创 2013-05-14 13:52:35 · 736 阅读 · 0 评论 -
trouble writing output: Too many methods: 65641; max is 65536. By package:
https://github.com/CyanogenMod/android_frameworks_base/commit/854f6f736b90d33b59b5a85bcecf72a416c43b7dframework: Split off some packages to a new fileframeworks.jar is now hitting the maximum转载 2013-03-13 11:45:05 · 3292 阅读 · 0 评论 -
有关hdmi
下列博客:http://blog.youkuaiyun.com/bonderwu/article/details/5947532http://blog.youkuaiyun.com/xubin341719/article/details/7713450原创 2013-04-19 17:02:39 · 692 阅读 · 0 评论 -
android2.x内存需求分析
Android内存分析(主要针对android2.x)译文来自TIwiki官网:http://processors.wiki.ti.com/index.php/Android_Memory_Analysis1 简介1.1 Android移植到非移动领域以下android特征已经使这种操作系统可以移植到非移动领域对投资者与公司提供有吸引力的许可转载 2012-09-12 18:08:08 · 2406 阅读 · 0 评论 -
关于Wake Lock
Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过去以后自动解锁. 如果没有锁了或者超时了, 内核就会启动休眠的那套机制来进入休眠.(一).内核维护了:1).两个链表,active_wake_locks[WAKE_LOCK_TYPE_COUNT] active_wake_转载 2012-09-26 09:05:01 · 656 阅读 · 0 评论 -
2.4G无线遥控器调试问题
在kernel里enable HID和OHCI,将设备当作HID设备来处理。在kermel里打印信息: [ 57.002651] input: 2.4G Wireless Receiver as /devices/platform/s5p-ohci/us1[ 57.007848] generic-usb 0003:1915:AF11.0001: input: USB HID原创 2012-04-20 17:28:56 · 5447 阅读 · 0 评论 -
ubuntu下安装source insight
1. 安装wine详看:http://wiki.ubuntu.org.cn/WineJava代码 sudo apt-get install wine 因为版本比较旧,所以通常不用,改用PPA中的wine。安装最新版 wineubuntu 官方自带了 wine ,但是推荐用 winehq 官方提供的最新版本 wine ,新版本解决了很多以前显得麻烦的问题转载 2012-03-21 09:44:18 · 13399 阅读 · 0 评论 -
Android Binary Images
u-boot,zImage,ramdisk.img,system.img,userdata.img的关系1. u-boot loads zImage into memory;2. u-boot loads ramdisk into memory;3. Linux kernel (zImage) runs and mounts ramdisk as root;4. init (r原创 2012-03-30 09:14:55 · 671 阅读 · 0 评论 -
android调用平台功能
下面的一些例子是从网上找的,他有点像J2ME的platformRequest,能调用手机平台的一些如SMS,浏览器,MMS,TEL等功能 显示网页 Java代码 Uri uri = Uri.parse("http://google.com"); Intent it = new Intent(Intent.ACTION_VIEW, uri);转载 2012-03-28 11:29:18 · 517 阅读 · 0 评论 -
uri访问网站的应用
上节提到用uri访问网 Uri uri = Uri.parse("http://google.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); 先看布局:在main.xml文件里,原创 2012-03-28 14:05:33 · 652 阅读 · 0 评论 -
按后退键退出Android程序
主要的目的是按后退键的时候,让程序能够退出。 实现起来的思路: 1.捕获后退键被按了这个事件。 Java代码 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == K转载 2012-02-25 11:50:11 · 660 阅读 · 0 评论 -
android.intent.category以及android.intent.action.MAIN
一. android.intent.category.LAUNCHER与android.intent.category.HOME的区别android.intent.category.LAUNCHER:android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里,就是android开机后的主程序列表。android.intent.category.转载 2012-02-17 11:34:07 · 1510 阅读 · 0 评论 -
Android系统init分析
init是一个守护进程,是linux系统中用户空间的第一个进程,即1号进程。由于android是基于linux内核的,所以也是android系统中用户空间的第一个进程。Init进程需要完成极其重要的任务。下面分析init进程。它的位置在system\core\init\init.c,下面是入口程序:int main(int argc, char **argv){ int fd原创 2012-01-05 23:40:52 · 2786 阅读 · 0 评论 -
Android系统的reboot之我见
近段时间关注Android系统的reboot部分,在应用程序调用reboot函数可以实现重启。顺着流程看看reboot如何运作。在Watchdog.java文件里,有一例: void rebootSystem(String reason) { Slog.i(TAG, "Rebooting system because: " + reason); /原创 2012-01-11 22:58:26 · 9975 阅读 · 1 评论 -
结合一程序分析Handler,Looper,HandlerThread类
首先看一个有关Handler, Looper, HandlerThread的应用程序:package envi.handler; import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;import and原创 2011-12-27 01:57:56 · 2133 阅读 · 0 评论 -
由坑爹的编译想起的
最近编一套代码,支持32位ubuntu系统编译。开始编译出错,停在build/core/main.mk文件的75行,应该不支持我装的64位ubuntu系统,找到出问题的点: ifneq (i686,$(findstring i686,$(build_arch))) #停在这里 $(warning ****************************************原创 2011-12-23 23:40:00 · 2980 阅读 · 0 评论