`

Android Camera 和 frameword 的交互

阅读更多
app层和framework层交互:
./frameworks/base/core/java/android/hardware/Camera.java

拍照过程framework层和APP层的交互流程,在takePicture()方法的注释里做了详细解释:
总结一下:拍照过程中Camera service 会初始一些Callbacks,在应用中实现这些callback的接口方法,
         这个方法同样的可以触发播放声音的线程。

注册回调函数:
public final void takePicture(ShutterCallback shutter, PictureCallback raw,
            PictureCallback postview, PictureCallback jpeg) {
            ...
    }

处理回函数数据:
public void handleMessage(Message msg) {
switch(msg.what) {
   case CAMERA_MSG_SHUTTER: //有数据到达通知
   case CAMERA_MSG_RAW_IMAGE: //处理未压缩照片函数
   case CAMERA_MSG_COMPRESSED_IMAGE:  //处理压缩处理的照片函数
if (mJpegCallback != null) {
             mJpegCallback.onPictureTaken((byte[])msg.obj, mCamera);
      }
      return ;
    case CAMERA_MSG_PREVIEW_FRAME: //处理预览数据函数
    ...
}


应用实例化回调的接口:
   回到目录:packages/apps/Camera/src/com/android/camera/CameraManager.java
   private android.hardware.Camera mCamera;
   mCameraDevice.takePicture(mShutterCallback, mRawPictureCallback,
       mPostViewPictureCallback, new JpegPictureCallback(loc));

应用回调的接口,获取数据流程:
    目录:packages/apps/Camera/src/com/android/camera/Camera.java
private final class JpegPictureCallback implements PictureCallback {
public void onPictureTaken(
         final byte [] jpegData, final android.hardware.Camera camera) {
    ...
   mImageCapture.storeImage(jpegData, camera, mLocation);
   mImageSaver.addImage(jpegData, uri, title, mLocation,
                        width, height, mThumbnailViewWidth, orientation);
   ...
  }
}

packages/apps/Camera/src/com/android/camera/Camera.java  的内部类ImageSaver开启一个线程来存储图片
private class ImageSaver extends Thread {
       将数据存放入数据库
}

以上是App层也framework层的交互,主要使用回调,也就是接口。
分享到:
评论

相关推荐

    Android Camera Framework

    整个Android Camera Framework是一个高度模块化和层次化的系统,它允许开发者从应用程序层编写少量的代码来访问和控制底层复杂的相机硬件。通过清晰定义的接口和协议,Camera HAL允许制造商可以为自己的设备定制具体...

    Android Camera2 Framework层分析.docx

    承担着于用户直接进行交互的责任,承接来自用户直接或者间接的比如预览/拍照/录像等一系列具体需求,一旦接收到用户相关UI操作,便会通过Camera Api v2标准接口将需求发送至Camera Framework部分,并且等待Camera ...

    android framework camera分析

    ### Android Framework Camera模块详解 #### 一、Android Camera模块概述 Android系统中的Camera模块是一个重要的组成部分,主要用于处理视频输入功能。该模块被设计为一个框架层(framework),旨在支持多种不同...

    Android Camera框架

    在Android系统中,客户端应用程序可以通过调用Framework层提供的`android.hardware.camera`类来实现摄像头相关的功能。最终,这些Java应用程序会被打包成APK文件。在Framework层中,`android.hardware.camera`类提供...

    android_camera_framework_stream

    `android_camera_framework_stream`主要关注的是Android摄像头框架中的流处理部分,这部分内容对于理解如何在Android平台上高效地管理和使用摄像头资源至关重要。 #### 二、Android摄像头框架结构 Android摄像头...

    Android camera架构介绍

    这通常指的是位于 `/android/packages/apps/Camera` 下的代码,这些代码会调用 `android.hardware.Camera` 类,并实现特定的业务逻辑和 UI 显示。 **Camera.java**:这个类位于 `/frameworks/base/core/java/...

    学习 camera framework 总结

    综上所述,Camera Framework 在 Android 系统中扮演着至关重要的角色,它不仅为开发者提供了与摄像头硬件交互的接口,还确保了不同硬件之间的兼容性和一致性。通过本篇总结,希望能帮助读者更深入地理解 Camera ...

    第七章_Android_Camera架构.zip_andriod_android camera_camera

    本文将深入探讨Android Camera架构,包括其组件、工作流程以及如何通过编程接口进行交互。 Android Camera架构主要由以下几个核心部分组成: 1. **硬件层**:这是相机功能的基础,包含了实际的摄像头硬件设备,如...

    android_Camera.7z

    7. **Camera.pdf与Android_framework_camera分析.pdf**:这两个文档很可能是详细阐述Android相机框架和关键流程的资料。它们可能涵盖了相机服务的内部工作原理,HAL接口的使用,以及如何利用Camera2 API实现高级功能...

    Android_Camera架构

    在深入探讨Android Camera架构之前,我们首先需要理解其基本设计原则和工作流程。Android Camera架构遵循client/service模型,其中包含了两个关键的进程:client进程和service进程。这一架构的设计旨在优化资源利用...

    王家林的Android软硬整合设计与框架揭秘: HAL&Framework; &Native; Service &App;&Browser;架构设计与实战开发

    课程深入讲解Android如何通过HAL(硬件抽象层)实现与硬件的紧密交互,以及如何利用Native Service和Binder机制来高效管理和服务硬件。 2. HAL(硬件抽象层)揭秘:课程将详细剖析HAL的内部结构和实现机制,帮助...

    android camera 架构

    应用程序框架层包含`framework/base/include/ui`和`frameworks/base/libs/ui`目录下的头文件和实现文件,如`Camera.h`, `CameraParameters.h`, `ICamera.h`, 等。这些文件定义了相机的接口,如`ICameraClient`和`...

    android_camera架构介绍

    综上所述,Android Camera框架通过明确划分客户端和服务端的角色,结合高效的通信机制,为开发者提供了一个强大且灵活的摄像头控制接口。这种设计使得摄像头功能的实现更加简洁明了,同时也便于未来的扩展和维护。

    Android 4.0 Camera源码

    本文将深入探讨Android 4.0 Camera源码的主要组成部分和关键概念。 1. **相机服务(Camera Service)** Android 4.0中的相机服务是系统级服务,负责管理硬件相机设备。源码中的`CameraService.java`是其核心,它...

    android_framework.ppt

    总结来说,Android Framework的交互机制和Binder IPC是Android系统高效运行的关键。Binder机制允许服务和应用在不同进程中安全、高效地交换数据,保证了系统的稳定性和性能。理解这些知识点对于开发Android应用程序...

    安卓Android源码——camera,修改过可以在4.0系统上运行。.zip

    3. **Camera Provider Manager**:这是Android框架层与Camera Service交互的桥梁,通过`CameraProviderManager`类来管理相机服务的生命周期和访问权限。 4. **Camera 应用程序接口**:开发者通常通过`Camera`类来与...

    Android Framework 框架分析

    - **`/framework/base/awt`**:这部分涉及到Android窗口工具包(AWT),虽然名称沿用了Java AWT的概念,但在Android中,它主要处理图形界面相关的操作,如窗口管理和用户交互。 - **`/framework/base/camera`**:这...

    Android Framework 分析

    Android Framework 是 Android 操作系统的核心组件之一,负责提供基本的系统服务和功能。下面将对 Android Framework 进行深入分析,涵盖其目录树、camera HAL 接口库、cmds 命令、runtime 环境等多方面的知识点。 ...

    Android 最新Camera框架

    ### Android 最新Camera...综上所述,Android最新Camera框架不仅在技术层面提供了更加强大和灵活的功能,还通过采用HIDL等方式解决了长期以来困扰Android系统的碎片化问题,从而提高了整个生态系统的稳定性和用户体验。

    安卓Camera架构

    【安卓Camera架构】是Android系统中的一个重要组成部分,它负责设备的图像捕捉和处理,为开发者提供了与硬件相机交互的接口。在深入理解Android Camera架构之前,我们首先要了解其基本概念和工作流程。 Android ...

Global site tag (gtag.js) - Google Analytics