关闭
当前搜索:

Android 7.1 GUI系统-surfaceflinger(四)

surfaceflinger的启动: frameworks/native/services/surfaceflinger/surfaceflinger.rc service surfaceflinger /system/bin/surfaceflinger class core user system group graphics drmrpc readpro...
阅读(87) 评论(0)

Android 7.1 GUI系统-BufferQueue 的管理(三)

BufferQueue 的管理 1),对buffer的管理符合“生产者-消费者”模型,这里有以下几个相关的类: BufferQueueProducer.cpp是IGraphicBufferProducer对应服务端的实现,负责缓冲区的申请。 BufferQueueConsumer.cpp是IGraphicBufferProducer对应的服务端的实现,是buffer消费者。 ...
阅读(443) 评论(0)

Android7.1 GUI系统中的本地窗口(二)

先看下Android中本地窗口的定义: system/core/include/system/window.h struct AnativeWindow{ //所支持的最小和最大交换间隔时间。 const int minSwapInterval; const int maxSwapInterval; //水平方向和垂直方向的密度。 const float xdpi; cons...
阅读(499) 评论(0)

Android7.1 GUI系统-概述(一)

SurfaceFlinger介绍 Android的GUI系统(Graphic User Interface),是基于opengl/egl实现的。 一,opengles/egl的关系,借鉴网上的图。 1),hal层提供了gralloc,包括fb和gralloc两个设备,fb负责打开内核中的framebuffer,提供post,setwapInterval等操作,grallo...
阅读(119) 评论(0)

Android 音频子系统,音频系统跟应用层直接相关的部分(八)

音频系统跟应用层直接相关的部分 从上层看,跟音频相关的功能概括说就是音频、视频的的录制、回放。与之直接相关的类有MediaPlayer,MediaRecorder。他们具有同时处理音频、视频的能力。 1,  MediaPlayer主要处理音视频的回放,它是一个状态机,依赖于MediaPlayerService来完成具体功能,并项应用程序反馈当前的播放情况。 如下是MediaPlayer的状态...
阅读(239) 评论(0)

Android音频子系统,音量的调节控制(七)

音量的调节控制: 按下音量的加减键,对应的keyevent是:KEYCODE_VOLUME_DOWN,KEYCODE_VOLUME_UP。 主要看两个地方对这一事件的处理,一是:handleKeyDown()@AudioManager.java,一是: interceptKeyBeforeQueueing ()@PhoneWindowManager.java。   先看AudioMana...
阅读(112) 评论(0)

Android音频子系统,音频流(六)

音频数据流 音频正常的回放过程: 比如用MediaPlayer播放音频,先要把音频文件读取到内存中,然后执行对应的解码操作,mediaplayer是在mediaplayerservice的帮助下完成解码相关操作的,mediaplayerservice会使用audiotrack完成播放功能。 一个audiotrack代表一个播放实例,系统中可能同时运行多个audiotrack实例,同时系统中也...
阅读(195) 评论(0)

Android音频子系统,Audiopolicyservice音频策略的制定(五)

Audiopolicyservice的路由实现: Audiopolicyservice作为音频策略的制定者,功能的实现跟audiotrack(使用者)有较大关联,所以在紧接着audiotrack看下路由的过程。 路由,就要有发送方,接收方,这个场景中发送发就是Audiotrack,接收方就是audioflinger(策略的执行者),audiopolicyservice是这两者的桥梁,它内部拥有...
阅读(77) 评论(0)

Android音频子系统,音频流的回放(四)

Audiotrack被用于音频流的回放,用来传输数据。 AudioTrack支持两种数据模式: 一种是Static,静态就是指数据一次性交付给对方,简单高效,一次完成所有数据的传递。适用于铃声、系统提醒等对内存要求小的播放操作。 一种是streaming,流模式和基于网络的音频流回放类似,音频数据严格按照要求不断地传递给接收方,直到结束。通常适用于音频文件较大时;音频属相要求高,如采样率高、...
阅读(216) 评论(0)

Android音频子系统,AudioPolicyService(三)

AudioPolicyService AudioFlinger是音频策略的执行者,AudioPolicyService是策略的制定者。 Android系统中声音被换分为多个种类: AudioSystem.java public class AudioSystem{ public static final int STREAM_DEFAULT = -1; public static ...
阅读(206) 评论(0)

android 音频子系统-AudioFlinger(二)

音频系统的核心:AudioFlinger AudioFlinger为上层提供访问和管理音频的接口,同时通过hal来管理音频设备。 AudioFlinger服务的启动: Framework/av/media/audioserver/main_audioserver.cpp int main(int argc __unused, char **argv){ AudioFlinger::in...
阅读(2016) 评论(1)

android 音频子系统框架(一)

Android 音频框架:   1,与应用程序开发有直接关联的是MediaPlayer,MediaRecorder。 音频系统的核心由AudioFlinger、AudioPolicyService、AudioTrack/AudioRecorder三部分构成,其中AudioFlinger、AudioPolicyService属于system service,驻留在audioserver进程...
阅读(154) 评论(0)

多媒体文件管理,资源的扫描MediaScanner(二)

多媒体文件的扫描MediaScanner 主要由两部分组成,一是MediaScannerReceiver,一是MediaScannerService,扫描的执行由广播触发。MediaScannerReceiver接收4中类型的广播: AndroidManifest.xml ...
阅读(78) 评论(0)

多媒体文件管理-数据库external.db,internal.db (一)

多媒体数据库路径:data/data/com.android.providers.media/database/external.db||internal.db 多媒体文件管理主要组成部分: 1),MediaScannerService,扫描多媒体文件。       扫描的对象包括内部、外部存储设备,它继承自service,并实现了Runnable接口,在一个独立的线程中执行扫描操作。 ...
阅读(113) 评论(0)

Android中可以跨进程传递的数据类型

进程间的数据传递是Binder机制的重要环节,负责这一任务的parcel。 如在往binder驱动写入数据,或者读取binder驱动返回的数据,都是parcel类型的。 onTransact(Parcel&data, Parcel* reply,) parcel的原理是把进程A中的对象数据打包发到进程B,然后进程B在把这个数据拆包还原。 parcel支持的数据类型非常多,通过P...
阅读(87) 评论(0)
171条 共12页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:35862次
    • 积分:1724
    • 等级:
    • 排名:千里之外
    • 原创:133篇
    • 转载:38篇
    • 译文:0篇
    • 评论:9条
    最新评论