自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (16)
  • 收藏
  • 关注

原创 java 抽象类 接口

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意。其实,两者

2011-10-31 18:39:56 620

原创 C++ Vector

标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的一个副本Vector v3(n,i);//v3包含n个值为i的元素Vector v4(n); //v4含有n个值

2011-10-31 14:41:26 724

原创 Android 开发常见问题

1、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。2、sim卡的EF 文件有何作用sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自

2011-10-30 09:35:58 696

原创 Content Providers

内容提供器用来存放和获取数据并使这些数据可以被所有的应用程序访问。它们是应用程序之间共享数据的唯一方法;不存在所有Android软件包都能访问的公共储存区域。Android为常见数据类型(音频,视频,图像,个人联系人信息,等等)装载了很多内容提供器。你可以看到在android.provider包里列举了一些。你还能查询这些提供器包含了什么数据(尽管,对某些提供器,你必须获取合适的权限来读取数据

2011-10-28 08:55:42 760

原创 Linux 音频编程接口

(1)、OSS (Open Sound System)是 Unix 平台上一个统一的音频接口, 比较老的,提供下面等几个设备        /dev/sndstat         /dev/audio         /dev/dsp         /dev/mixer用户可以直接使用Unix的命令来放音和录音,命令cat /dev/dsp >filename可用来录音

2011-10-26 13:43:13 1953

原创 Android LOG机制的实现

Android提供了用户级轻量的LOG机制,它的实现贯穿了Java,JNI,本地c/c++实现以及LINUX内核驱动等Android的各个层次,而且足够简单清晰,是一个相当不错的解读案例。本系列文章针对LOG机制的内部实现机理进行解读,解读LOG机制的实现架构。LOG的运行环境    下图是Android官方网站上给出的Android的Debug环境。 Android的LOG机制当

2011-10-25 17:59:19 7418

原创 pthread_cond_timedwait pthread_cond_wait

1 pthread_cond_timedwait行为和pthread_cond_wait一样,在返回的时候都要再次lock mutex.2 pthread_cond_timedwait所谓的如果没有等到条件变量,超时就返回,并不确切。如果pthread_cond_timedwait超时到了,但是这个时候不能lock临界区,pthread_cond_timedwait并不会立即返回,但是在p

2011-10-25 09:36:19 4645

原创 Android 自动升级

1.检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName。2.从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。3.当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。获取

2011-10-22 16:45:27 834

原创 SurfaceFlinger中的Layer,LayerDim,LayerBlur,LayerBuffer

应用程序中不同类型的Surface,在FrameWorks本地层的SurfaceFlinger中,分别对应着不同的Layer类,本文主要是讨论这几种Layer的实现和差异。创建Layer默认地,创建普通的窗口Surface,在SurfaceFlinger中会创建Layer类,如果想创建LayerDim或LayerBlur,应用程序需要在绑定View之前设置一下窗口的标志位:创建

2011-10-19 17:34:37 1285

原创 SurfaceFlinger工作线程

SurfaceFlinger继承了Thread类,自然也继承了Thread类的threadLoop方法,SurfaceFlinger工作线程的主代码都在threadLoop()方法中。工作线程启动后,基类Thread会循环地调用threadLoop方法,SurfaceFlinger的threadLoop()主要是要完成系统中各个Layer(Surface)进行混合(compose),然后不停地把一

2011-10-19 17:30:00 993

原创 SurfaceFlinger中的SharedClient

SurfaceFlinger在系统启动阶段作为系统服务被加载。应用程序中的每个窗口,对应本地代码中的Surface,而Surface又对应于SurfaceFlinger中的各个Layer,SurfaceFlinger的主要作用是为这些Layer申请内存,根据应用程序的请求管理这些Layer显示、隐藏、重画等操作,最终由SurfaceFlinger把所有的Layer组合到一起,显示到显示器上。当一个

2011-10-19 17:26:00 1203

原创 Android AudioFlinger

AudioFlinger是Android音频系统的两大服务之一,另一个服务是AudioPolicyService,这两大服务都在系统启动时有MediaSever加载,加载的代码位于:frameworks/base/media/mediaserver/main_mediaserver.cpp。本文主要介绍AudioFlinger,AudioFlinger向下访问AudioHardware,实现输

2011-10-19 17:19:21 12395 1

原创 AudioPolicyService 和 AudioPolicyManager

AudioPolicyService是Android音频系统的两大服务之一,另一个服务是AudioFlinger,这两大服务都在系统启动时有MediaSever加载,加载的代码位于:frameworks/base/media/mediaserver/main_mediaserver.cpp。AudioFlinger主要负责管理音频数据处理以及和硬件抽象层相关的工作。本文主要介绍AudioPolic

2011-10-19 17:11:42 2201 1

原创 AudioTrack如何与AudioFlinger交换音频数据

引子Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中进行播放,目前Android的Froyo版本设定了同时最多可以创建32个音频流,也就是说,Mixer最

2011-10-19 17:07:10 1806

原创 Android SkBitmap的内存管理分析

Android使用的2D图形引擎skia,是一个高效的2D矢量图形库,google已经把skia开源:http://code.google.com/p/skia/。SkBitmap是skia中很重要的一个类,很多画图动作涉及到SkBitmap,它封装了与位图相关的一系列操作,了解它的内存管理策略有助于我们更好的使用它,了解它的初衷是要想实现对skia中的blitter进行硬件加速。1.

2011-10-19 16:58:35 1838

原创 Android GraphicBuffer

1.  Android中的应用层每申请一个Surface,最终会通过jni和binder调用到surfaceflinger中,最终会创建一个Layerxxx(Layer,LayerBuffer,LayerBlur,LayerDim)类,最通常的是Layer类,在Layer类中有一个成员变量:            sp mBuffers[NUM_BUFFERS];Layer的成员函数Set

2011-10-19 16:55:34 3676

原创 Android sp和wp指针

经常会在android的framework代码中发现sp和wp这样的指针,平时看的时候都把他当成一个普通的指针封装过掉了,这几天终于忍不住了,想深入了解一下。相关的代码:frameworks/base/include/utils/RefBase.hframeworks/base/libs/utils/RefBase.cppsp和wp都是一个模板类,看一下sp类的定义:templ

2011-10-19 16:50:19 916

原创 Zygote 分析

一 目的zygote,是Android搞出来的一个东西。网上讲这个的也非常多。第一次看到这个名字我就挺郁闷,想干嘛这是?Linux下名字都取得挺通俗易懂,深得人心。zygote?不就想模仿Linux下的fork吗?个人觉得Google取名字挺怪,包括Google本身。不管

2011-10-19 14:32:17 621

原创 Surface 分析

一 目的本节的目的就是为了讲清楚Android中的Surface系统,大家耳熟能详的SurfaceFlinger到底是个什么东西,它的工作流程又是怎样的。当然,鉴于SurfaceFlinger的复杂性,我们依然将采用情景分析的办法,找到合适的切入点。一个Activity是

2011-10-19 14:31:38 1019

原创 Audio Policy 分析

一 目的上回我们说了AudioFlinger(AF),总感觉代码里边有好多东西没说清楚,心里发毛。就看了看AF的流程,我们敢说自己深入了解了Android系统吗?AudioPolicyService(APS)是个什么东西?为什么要有它的存在?下层的Audio HAL层又是怎么

2011-10-19 14:29:40 5861 1

原创 AudioFlinger分析

一 目的本文承接Audio第一部分的AudioTrack,通过AudioTrack作为AF(AudioFlinger)的客户端,来看看AF是如何完成工作的。在AT(AudioTrack)中,我们涉及到的都是流程方面的事务,而不是系统Audio策略上的内容。WHY?因为AT

2011-10-19 14:28:39 1933 2

原创 Binder机制

Android深入浅出之Binder机制一说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以Medi

2011-10-19 14:26:56 795

原创 AudioTrack分析

第一部分 AudioTrack分析一目的本文的目的是通过从Audio系统来分析Android的代码,包括Android自定义的那套机制和一些常见类的使用,比如Thread,MemoryBase等。分析的流程是:l        先从API层对应的某

2011-10-19 14:21:48 936

原创 JNI基本数据类型转换

/******************************************************************* *char*----->jstring ***********************************************

2011-10-19 09:59:19 1433

原创 关于try catch(...)

try{} catch(…){}以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常,这种方法在VC中其实是靠不住的。例如下面的代码:try{BYTE* pch ;pch = (BYTE*)00001234 ;  //给予一个非法地址

2011-10-18 13:08:10 901 1

原创 Android Binder设计

摘要       Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统 IPC

2011-10-17 17:43:18 778

原创 Java与C之间传递数据

介绍Java如何将数据传递给C和C回调Java的方法。  java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java。C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需要调用java的方法。Android中使用JNI七个步骤:1.创建一个a

2011-10-14 19:54:47 4608

原创 AndroidJNI 函数介绍

1、AndroidJNI.AllocObject 分配对象static function AllocObject (clazz : IntPtr) : IntPtrDescription描述Allocates a new Java object without inv

2011-10-14 16:47:50 10509

原创 Android Audio AudioStreamOutALSA::write函数

在看音频数据是怎么写的时候,在MixerThread的threadloop函数中,有以下代码完成了往硬件写数据:int bytesWritten = (int)mOutput->write(mMixBuffer, mixBufferSize);mOutput来历:

2011-10-14 07:27:10 2781

原创 Android Audio audio_track_cblk_t::framesReady函数

在看AudioTrack的write函数的时候,了解到,音频数据最终都写到了audio_track_cblk_t的结构体中。这个结构体是在AudioFlinger中创建的。AudioFlinger是如何来使用这些数据的呢?今天就来学习学习。我们写数据的时候

2011-10-14 07:26:30 3071 1

原创 Android Audio AudioTrack::write函数

在最初的代码testWriteByte中,创建完AudioTrack对象后,调用了AudioTrack对象的write函数实现播放。今天就来看看write函数的实现。*****************************************源码******

2011-10-14 07:25:51 5163

原创 Android Audio AudioHardwareALSA::openOutputStream函数

发现以前写的东西,对调用函数的展开放在了函数的前面,导致不方便找到原来代码及设置的函数参数。以后打算稍作改动,把对被调函数的展开放在原代码的后面,这样看起来应该方便些。闲言少叙,跳入代码。前两天看AudioTrack创建的时候,我们看到了AudioHa

2011-10-14 07:25:14 4057

原创 Android Audio stream type

在看AudioTrack代码的时候,我们看到,要创建一个AudioTrack对象,需要指定一个StreamType。今天我们只把stream type相关的代码抽取出来,详细看看stream type相关的东东。java层的代码就不看了。从函数android_medi

2011-10-14 07:24:31 11978 1

原创 Android Audio AudioEffect

在看AudioSessionId相关代码的时候了解到,共用一个AudioSessionId的AudioTrack和MediaPlayer会共用一个AudioEffect。今天就来看看AudioEffect是个什么东东。看这个类的目的,主要是为了搞清楚AudioEffect

2011-10-14 07:23:48 6853 2

原创 Android Audio getAudioSessionId

在我们学习AudioTrack对象的创建过程时,了解到,创建一个AudioTrack对象,必须指定一个SessionId,并与其他使用该SessionId的AudioTrack和MediaPlayer共享AudioEffect。如果不指定SessionId,将会自动生成一个S

2011-10-14 07:22:59 3950

原创 Android Audio AudioSystem::getOutputSamplingRate

前面看过的代码中,经常会调用到AudioSystem类中的getOutputSamplingRate函数,getOutputFrameCount函数,getOutputLatency函数等。这些函数的实现基本类似,今天就细细品味下AudioSystem::getOutputS

2011-10-14 07:22:21 1962

原创 Android Audio 创建AudioTrack对象

今天来看看类AudioTrack的构造函数。出发点是Java中的AudioTrack类。从前面的使用实例中可知,应用程序中要实现播放,首先要创建一个AudioTrack对象,然后调用其函数来实现播放。**********************************

2011-10-14 07:21:30 6409

原创 Android Audio getMinBufferSize

AudioTrack的使用示例中,用到了函数getMinBufferSize,今天把它倒出来,再嚼嚼。*****************************************源码****************************************

2011-10-14 07:20:12 2943

原创 Android+Audio+相关类

AudioSystem类定义了一堆枚举,包括stream类型,音频格式,音频channel等。函数get_audio_flinger中,会获取AudioFlinger,然后创建一个AudioFlingerClient对象,并调用AudioFlinger的函数regis

2011-10-14 07:19:25 2041

原创 AudioTrack使用示例

计划从接口的使用,开始分析Audio相关源码。此处的代码为Android中自带的测试代码。由于本人惰性,不打算将所有函数全部细说。主要函数,会拿来细细品味;本人认为非主要的函数,将一笔带过。主要非主要,是从本人当前项目的需要来看的。************

2011-10-14 07:17:15 4617 1

VirualGDB5.1

vs 2013 开发android插件,vs2015 也可以使用

2016-12-06

Android C++ with the NDK 代码

Android C++ with the NDK 代码

2016-10-13

facebook 网站源码

facebook 网站源码

2013-02-20

GLES官方文档

GLES官方文档

2012-08-17

CrackVS2008ForWindows7

CrackVS2008ForWindows7,出现点击bug微软,出现序列号输入框,输入序列号即可

2012-05-10

Android 面试题和答案

Android 面试题和答案,Android 面试题和答案

2012-02-26

OpenGL编程指南(第七版)

学习OpenGL的不二选择……本书对OpenGL以及OpenGL实用函数库进行了全面而又权威的介绍,素有“OpenGL红宝书”之誉。本书的上一个版本覆盖了OpenGL 2.1版的所有内容。本版涵盖了OpenGL 3.0和3.1的最新特性。本书以清晰的语言描述了OpenGL的功能以及许多基本的计算机图形技巧

2012-01-04

OpenGL ES 2.0 编程指南

OpenGL ES 2.0 编程指南[pdf及源代码] 学习open ES的好书,含有书中源代码

2011-11-15

Android 3D游戏开发技术详解与典型案例

Android 3D游戏开发技术详解与典型案例,前三章内容

2011-11-15

使用android push notification service 实现即时通知

使用android push notification service 实现即时通知

2011-11-10

testmusic.pcm AudioTrack使用测试文件

http://blog.csdn.net/hgl868/article/details/6766917#comments中使用的测试文件

2011-10-20

ffmpeg 视频解析 for andorid

ffmpeg 视频解析 for andorid,能够正常使用

2011-09-28

icon字符串转换

icon字符串转换, 移植到android版本,在android2.1和2.2版本测试通过,能够正常使用

2011-09-09

c++编程思想第二版源码,包括卷1和卷2源码

c++编程思想第二版源码,包括卷1和卷2源码

2011-08-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除