`
daojin
  • 浏览: 690333 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Camera框架初探

阅读更多

先解释一些概念,然后带着思考去解读

1.CameraService。

2.Camera

3.BnCameraClient

4.BnCamera

5.Client

 

不得不说的是android对于binder的使用,真是出神入化。废话不说,明白了以上对象后,对于camera框架的理解就会上一个档次。网上很多人,都是抄来抄去,真正去看代码的时候,发现纸上得来终觉浅,觉知此事要躬行。

下面依次解释:

 

1.CameraService

Camera的服务端,是一个BnCameraService,同时还是一个BinderService。代码就不贴了,自行看吧。看到Bn两个字母,大家的第一印象肯定是onTransact接口。而事实也是如此:

 

class BnCameraService: public BnInterface<ICameraService>
{
public:
    virtual status_t    onTransact( uint32_t code,
                                    const Parcel& data,
                                    Parcel* reply,
                                    uint32_t flags = 0);
};

2.Camera

继承于BnCameraClient.大家又看到一个Bn。很是纳闷,那么是不是也是个服务端呢。答案也是肯定的。

 

class Camera : public BnCameraClient, public IBinder::DeathRecipient

 

 

class BnCameraClient: public BnInterface<ICameraClient>
{
public:
    virtual status_t    onTransact( uint32_t code,
                                    const Parcel& data,
                                    Parcel* reply,
                                    uint32_t flags = 0);
};

 

既然都是服务端,那么客户端在哪里呢。下面继续。

 

3. BnCameraClient

这个不说了,上面已经讲了,是个服务端

4.BnCamera

同样是服务端:

 

 

class BnCamera: public BnInterface<ICamera>
{
public:
    virtual status_t    onTransact( uint32_t code,
                                    const Parcel& data,
                                    Parcel* reply,
                                    uint32_t flags = 0);
};

 

5.Client

 

同样是服务端:

 

    class Client : public BnCamera

那么客户端在哪里?为什么全是服务端?

 

其实这些都是服务端,同时又是客户端。Binder是一个单向通信的东西,要想实现双向通信,那么自己也必须是一个服务端。这就是为什么全是服务端了。网上介绍说CameraService是一个sevice,Camera这个就是一个client,这是不对的。

这两个都是service,又是client。这样才能支持双向通信。

 

 

使用流程如下:首先要new一个Camera对象,这个对象实际上是个Manager,负责对camera进行一些管理。

然后通过connect方法,获得到一个ICamera的对象,这个对象在服务端就是Client。于此同时,由于自己是一个BnCameraClient,注意是Bn,可以通过binder传过去,那么传过去之后是什么呢。是ICameraClient.这样服务端和客户端都得到了一个对方的句柄,从而建立了双向通信的渠道。下面这个图说明了这个思想:

 


  • 大小: 12.7 KB
1
5
分享到:
评论

相关推荐

    高通平台camera框架分析

    ### 高通平台Camera框架分析 #### 一、Camera子系统的层次结构与系统结构 **Camera子系统**作为Android系统中的关键组成部分,不仅负责视频数据的获取与存储,还涉及图像处理、视频编解码等多项任务。从整体上看,...

    Camera框架的简介

    Camera 框架的简介 Camera 框架是 Android 系统中的一个重要组件,它提供了拍照和录制视频的功能。下面是 Camera 框架的详细介绍: Camera 概述 Android 的 Camera 包含取景器(viewfinder)和拍照的功能。目前 ...

    Android_Camera框架

    ### Android_Camera框架详解 #### 一、框架概览 Android_Camera框架是Android系统中负责处理摄像头功能的核心组件,它不仅支持预览(viewfinder),还能够实现拍照等基本操作。框架设计精巧,分为客户端与服务器两...

    android_Camera框架分析

    android_Camera框架分析

    camera框架流程.drawio

    camera框架流程.drawio

    高通camera代码框架

    高通平台camera层代码初始化的框架流程图,对于ISP工程师等了解camera的运行流程有帮助

    Android多媒体开发08-Camera框架.ppt

    Android 多媒体开发 Camera 框架 Android 多媒体开发中的 Camera 框架是一种 client/service 架构,主要包括两个进程:client 进程和 service 进程。client 进程主要包括 Java 代码和 native c/c++ 代码,而 ...

    android Camera框架分析.pdf

    Android Camera 框架分析 Android 的 Camera 系统是一个复杂的系统,包括取景(preview)和拍摄照片(take picture)的功能。 Camera 框架分析可以分为两个部分:Camera 构架分析和 Camera 工作流程概述。 一、...

    androidCamera框架分析.pdf

    Android Camera框架是Android系统中用于处理相机功能的核心组件。它的设计基于客户端-服务器模型,利用Android的Binder机制实现进程间通信。以下是对Android Camera框架的详细分析: 一、Camera构架分析 1. **...

    androidCamera框架分析分享.pdf

    Android Camera框架是一个复杂而关键的组件,它负责设备的摄影和预览功能。该框架基于Android的进程间通信(IPC)机制Binder构建,将Camera服务和客户端应用分隔在两个不同的进程中,确保了系统的稳定性和安全性。...

    Android Camera框架

    ### Android Camera框架详解 #### 一、总体架构与工作原理 Android Camera框架作为一个重要的多媒体组件,在Android设备上扮演着至关重要的角色。它不仅为开发者提供了一套完整的API用于摄像头功能的开发,还确保...

    Android 最新Camera框架

    ### Android 最新Camera框架 #### 一、Android最新Camera整体框架概述 在深入探讨之前,我们需要明确Android相机系统的核心组成部分及其交互方式。Android相机系统主要包括三个关键进程:应用(App)进程、摄像头...

    androidCamera框架分析定义.pdf

    Android Camera框架是Android系统中用于处理相机功能的核心组件,其设计包括客户端和服务器两大部分,基于Android的Binder机制实现进程间通信。下面是关于Android Camera框架的详细分析: 一、Camera架构 1. **库...

    Camera框架分析 - 副本.docx

    Android Camera框架分析 Android相机框架是一个复杂而精细的系统,它允许应用层的Java App与硬件驱动进行交互,实现拍照、录像等相机功能。整个框架分为多个层次,从上至下依次是: 1. **应用层 (Java App)**:这...

    高通camera chi-cdk feature2框架介绍

    高通camera chi-cdk feature2框架介绍 高通Camera Chi-CDK Feature2框架是一个专门为高通camera设计的框架,旨在提高camera应用程序的性能和效率。在本文中,我们将详细介绍Feature2框架的架构、组件、工作流程和...

    Android框架下Camera的设计与实现

    理解Android框架下Camera的设计与实现,对于开发高效且用户体验良好的拍照应用至关重要。 首先,Android Camera API分为两个主要版本:Camera1(旧版API)和Camera2(新版API)。Camera1是早期Android版本中的接口...

    Window-Server-Frame.rar_js camera _框架 服务

    "js camera _框架 服务"这部分描述可能意味着该框架包含JavaScript(js)实现的摄像头功能,并且它与服务相关,可能是为了在Windows服务环境下处理图像或者视频流。 描述中提到的"windows 服务框架 设计 代码",...

    Android Camera开发入门代码,包含Camera1、Camera2、cameraX和UVC Camera

    专栏主要记录Camera开发相关内容,包含Camera、Camera2、CameraX以及USB(UVC)摄像头。 和大家一起快速入门Camera开发工作,为后期的视频编解码、拍照、录像、推流等打好基础工作。

    Android Camera系统的结构简析及移植初探.pdf

    【Android Camera系统移植初探】 在Android系统移植过程中,Camera模块的移植是一项关键任务,因为每个设备的摄像头硬件可能都有所不同。以下是在进行Camera系统移植时需要关注的主要工作内容: 1. **硬件驱动适配...

Global site tag (gtag.js) - Google Analytics