代码改变世界

Android CameraHal NativeWindow相关(一):从CameraHal::setPreviewWindow(struct preview_stream_ops *window)开始

2013-09-17 20:24 by 白居不易, 3121 阅读, 0 推荐, 收藏, 编辑
摘要:使用Android框架做Camera,NativeWindow是绕不过去的,但这块对于我来说是个空白。今天的内容是将此部分弄清楚。从CamerHal_Module开始,/******************************************************************* * implementation of camera_device_ops functions *******************************************************************/int camera_set_preview_window(s 阅读全文

Android Camera 调用流程及调试

2013-08-29 09:14 by 白居不易, 2518 阅读, 0 推荐, 收藏, 编辑
摘要:1、应用.java中 camera = Camera.open(0);java框架base/core/java/android/hardware/Camera.java public static Camera open(int cameraId) { return new Camera(cameraId); } Camera(int cameraId)... 阅读全文

Android MediaPlayer的核心原理

2013-06-28 09:58 by 白居不易, 1230 阅读, 0 推荐, 收藏, 编辑
摘要:本文是韩超所做,可直接看他撰写的《Android系统原理及开发要点详解》本 文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构。对于Android这样一个完整又相对复杂的系统, 一个MediaPlayer功能的实现不在其具体的功能,而是具体功能如何适应Android系统Android MediaPlayer的主要具体实现在OpenCore的Player中,这部分不是本文的关注点。本文关注的是MediaPlayer系统的架构,其 他的一些Android的应用程序也使用类似的架构。对于开源事业在中国的发展,hanchao3c认为应该共享的不仅仅是代码,文 阅读全文

Android MediaPlayer状态图明晰注释

2013-06-28 09:47 by 白居不易, 423 阅读, 0 推荐, 收藏, 编辑
摘要:田海立2012-03-20看Android ReferenceManual中MediaPlayer描述的状态机,那个状态图,看起来很复杂。笔者在初看到时也感觉一团乱麻,便试着按照状态转化的理解,先忽略一些不是特别重要的分支,自己绘制了一幅MediaPlayer的状态图。发现,跟AndroidSDK中的图呈现的内容是一致的,但是看起来却无比明晰,分享一下。关于MediaPlayer状态的转换,Android SDK手册中已经有了明确的表述,这里笔者只是强调一些,SDK手册中明确表述的实际工作中遇到的问题点:1.异步PrepareMediaPlayer可以播放网络资源的Media,所以在prepa 阅读全文

Android MediaPlayer状态机

2013-06-28 09:46 by 白居不易, 412 阅读, 0 推荐, 收藏, 编辑
摘要:翻译Android Reference Manual的MediaPlayer的状态机对播放音频/视频文件和流的控制是通过一个状态机来管理的。下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态。椭圆代表MediaPlayer对象可能驻留的状态。弧线表示驱动MediaPlayer在各个状态之间迁移的播放控制操作。这里有两种类型的弧线。由一个箭头开始的弧代表同步的方法调用,而以双箭头开头的代表的弧线代表异步方法调用。通过这张图,我们可以知道一个MediaPlayer对象有以下的状态:1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后 阅读全文

Android MediaPlayer stream实现

2013-06-28 09:45 by 白居不易, 2526 阅读, 0 推荐, 收藏, 编辑
摘要:对于Ait类的Camera,使用已编码数据(H264)进行Preview.若使用原始的SurfaceTexture实现,需要扩展ANativeWindow支持的视频格式,也会涉及到OpenGL相关的内容,工作量巨大。另一种方式是使用MediaPlayer实现,MediaPlayer支持三种源,我们应该要使用Stream方式,但也不确定,看一下service的底层实现,也就是与Hardcodec的对接。另外关注一下Buffer的传递过程。Java Framework frameworks/base/media/java/android/media/MediaPlayer.javaJNI fr.. 阅读全文

Android Camera Preview ANativeWindow的处理

2013-06-26 18:44 by 白居不易, 7011 阅读, 0 推荐, 收藏, 编辑
摘要:从JNI的调用看,Java通过surfacetexture来显示preview。CameraService通过surfacetexture获取ANativeWindow,向OpenGL传递数据。ANativeWindow的函数实现是在CameraHardwareInterface.h中, struct camera_preview_window { struct preview_stream_ops nw; void *user; }; struct camera_preview_window mHalPreviewWindow;preview_s... 阅读全文

Android Bander设计与实现 - 设计篇

2013-06-25 09:31 by 白居不易, 355 阅读, 0 推荐, 收藏, 编辑
摘要:关键词Binder Android IPC Linux内核驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面的阐述,首先通过介绍Binder通信模型和Binder通信协议了解Binder的设计需求;然后分别阐述Binder在系统不同部分的表述方式和起的作用;最后还会解释Binder在数据接收端的设 阅读全文

Android进程间通信(IPC)机制Binder简要介绍和学习计划(转)

2013-06-25 09:27 by 白居不易, 290 阅读, 0 推荐, 收藏, 编辑
摘要:http://blog.csdn.net/luoshengyang/article/details/6618363 在Android系统中,每一个应用程序都是由一些Activity和Service组成的,一般Service运行在独立的进程中,而Activity有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。 我们知道,Android系统是基于Linux内核的,而Linux内核继承和兼容了丰富的Unix系统进程间通信(IPC)机制。有传统的管道(Pipe)、信... 阅读全文

Android Camera Client&Service 函数调用关系

2013-06-24 18:36 by 白居不易, 1986 阅读, 0 推荐, 收藏, 编辑
摘要:1. JNI@frameworks/base/core/jni/android_hardware_Camera.cppstatic void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobject weak_this, jint cameraId){ sp camera = Camera::connect(cameraId); if (camera == NULL) { jniThrowRuntimeException(env, "Fail to connect to cam... 阅读全文
上一页 1 2 3 4 5 6 ··· 9 下一页