一、Camera2 操作android.hardware.Camera 分析
来源:互联网 发布:匡恩网络太有钱了 编辑:程序博客网 时间:2024/05/20 03:46
android.hardware.Camera 路径:frameworks/base/core/java/android/hardware/Camera.java
作为承上启下的作用。一些底层接口释放给上层应用。
1、 CameraHolder
这个类是为了保持“android.hardware.Camera”的实例。
这是用于不同模块之间的切换。
这个类在Camera应用里,是典型的单例模式。
方法:
(1) public static synchronized CameraHolder instance() {
if (sHolder == null) {
sHolder = new CameraHolder();
}
return sHolder;
}
说明:创建单实例,如果实例sHolder 已经存在。那么就直接返回。否则就重新创建一个。
(2) 构造函数里面的语句
{
HandlerThread ht = new HandlerThread("CameraHolder");
ht.start();
mHandler = new MyHandler(ht.getLooper());
//获取Camera数量
mNumberOfCameras = android.hardware.Camera.getNumberOfCameras();
mInfo = new CameraInfo[mNumberOfCameras];
for (int i = 0; i < mNumberOfCameras; i++) {
mInfo[i] = new CameraInfo();
android.hardware.Camera.getCameraInfo(i, mInfo[i]);
}
// get the first (smallest) back and first front camera id
for (int i = 0; i < mNumberOfCameras; i++) {
if (mBackCameraId == -1 && mInfo[i].facing == CameraInfo.CAMERA_FACING_BACK) {
mBackCameraId = i;
} else if (mFrontCameraId == -1 && mInfo[i].facing == CameraInfo.CAMERA_FACING_FRONT) {
mFrontCameraId = i;
}
}
(3) Open 方法
通过语句:
mCameraDevice = CameraManagerFactory
.getAndroidCameraManager().cameraOpen(handler, cameraId, cb);
来调用android.hardware.Camera 打开Camera 设备。
(4) release()
关闭Camera的时候,调用release
2、 CameraManager 接口和AndroidCameraManagerImpl类
接口,为Camera设备提供操作的方法。这个接口的实现类是AndroidCameraManagerImpl
在这个接口里,只声明了一个方法。
public CameraProxy cameraOpen(
Handler handler, int cameraId, CameraOpenErrorCallback callback);
目的就是打开Camera设备。
在这个接口里面还声明多个内部的接口下面详细介绍。
3、 CameraProxy 接口 和AndroidCameraProxyImpl类
这个接口就是将对Camera 接受和发送的操作,送达到Camera设备。除了一些特殊的方法外,其他方法都是默认为异步操作。
这个接口的实现类是AndroidCameraProxyImpl,这个类属于AndroidCameraManagerImpl的内部类。在AndroidCameraManagerImpl.java 里面还有一个内部类CameraHandler,这个类属于Handler。在CameraHandler的handleMessage方法里,就是根据不同的消息参数来对android.hardware.Camera 进行控制。比如打开,释放,对焦,变焦等等
4、 CameraAFCallback 接口和AutoFocusCallback类
自动对焦回调的接口。此接口实现在PhotoModule类里面的内部类AutoFocusCallback实现。并且传给AndroidCameraProxyImpl的实例的autoFocus方法。然后调用CameraHandler 类里面的handleMessage方法,传给android.hardware.Camera 。
5、 CameraShutterCallback 接口 和 ShutterCallback 类
拍照的接口。
6、 CameraPictureCallback 接口和 PostViewPictureCallback,RawPictureCallback,JpegPictureCallback类
拍照后,将相片图片保存。
- 一、Camera2 操作android.hardware.Camera 分析
- android.hardware.camera2使用指南
- android.hardware.camera2使用指南
- android.hardware.camera2使用指南
- android.hardware.camera2使用指南
- android.hardware.camera2使用指南
- Android Camera、Camera2详解
- android-android.hardware.Camera
- android.hardware.Camera
- android.hardware.Camera
- A Tutorial on android.hardware.camera2.*
- Android实战技巧之三十三:android.hardware.camera2使用指南
- Android实战技巧之三十三:android.hardware.camera2使用指南
- 使用android.hardware.camera2打造新的自定义相机
- cts android.hardware.camera2.cts.RecordingTest --testBasicRecording fail
- android.hardware.camera2详解(实时更新,未完待续...)
- android camera2 API流程分析
- android hardware 分析
- 1.认识服务器推送技术
- 屏蔽Home按键
- java正则表达式
- tableView下拉刷新,上拉加载简单应用
- 汉诺塔(递归)
- 一、Camera2 操作android.hardware.Camera 分析
- Spring的控制反转(IoC)和依赖注入(DI)
- Jsoup 日记
- linux物理内存和虚拟内存的理解
- win7下载cmd中设置字符集位UTF-8
- 绝对URL的解析规则
- DSP和通用处理器在结构上有什么不同?
- PAT Advanced Level 1030. Travel Plan (30)(Java and C++)
- 网页自动转发提交表单功能