萝卜和青菜--Android camera框架与使用
来源:互联网 发布:淘宝 天衣无缝 墙布 编辑:程序博客网 时间:2024/04/27 14:51
Android camera主要结构如图所示。
我们可以从三个层次去使用它:JAVA层,service层和hardwareinterface。
流程都大同小异,不同编程语言具体实现上接口略有不同, 流程框架如下:
open,
getParameters,
parameters。set
setParameters,
addcallback,
startpreview(takepicture)
Java层具体例子:
android.hardware.Camera提供了一个接口对象: Camera,用户在程序内调用这个对象的各个功能就可以了. 值得注意的是它的callback, 是可以通过setPreviewCallbackWithBuffer来设置外部缓冲区接受Camera 帧数据的,接口名为PreviewCallback, 需要你在程序中设置实现。每当camera一帧数据采集到时,这个接口会被自动调用。用户可以从你自己所属的缓冲取出数据操作了。
service层:
接口:ICamera。
调用方法:
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder = sm->getService(String16("camera"));
sp<ICameraService> service = interface_cast<ICameraService>(binder);
sp<ICamera>camera= service->connect(const sp<ICameraClient>& cameraClient);
其中参数ICameraClient可以设定callback函数:
notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2)
dataCallback(int32_t msgType, const sp<IMemory>& data)
dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& data)
其他使用方法不再赘述。
HardwareInterface层:
接口:CameraHardwareInterface,
调用方法:
CameraHardwareInterface= openCameraHardware();
流程例子:
camera_hw = openCameraHardware();
if(camera_hw == NULL){
LOGE("openCameraHardware() failed/n");
return -1;
}
camera_hw->setCallbacks(notify_cb,
data_cb,
data_cb_timestamp,
(void *)NULL);
CameraParameters parameters = camera_hw->getParameters();
parameters.setPreviewSize(1024, 600);
camera_hw->setParameters(parameters);
camera_hw->startPreview();
- 萝卜和青菜--Android camera框架与使用
- 萝卜已美,何须青菜
- 搭建Linux 编程工具-萝卜青菜各有所爱
- 142. Every man has his hobbyhorse. 萝卜青菜,各有所爱
- Android Camera框架
- Android之 Camera 框架
- Android Camera框架
- Android Camera框架分析
- 一 Android Camera框架
- Android Camera框架
- Android Camera使用总结与那些坑
- Android Camera使用总结与那些坑
- 单片机小白学步系列(七) 准备实验板——萝卜青菜,各有所爱
- android使用camera和matrix,canvas小结
- android使用mediarecorder和camera录制视频
- Android Camera使用和人脸检测
- Android Camera 框架分析与移植
- 毛驴和萝卜问题
- IBM Lotus Symphony V3 成功发布
- 分布式事务简介
- 信令分析工具,Abis,A口,GB口数据解码,信令流程关联
- CONNECT BY PRIOR... START WITH
- 面向程序员的数据库访问性能优化法则
- 萝卜和青菜--Android camera框架与使用
- 支持软件正版化,选择Lotus Symphony V3
- 记事的价值
- perl 文本处理
- SELinux
- declare和random
- [postgresql]安装时忘记密码
- Exception Processing ErrorPage[errorCode=404 ClientAbortException: java.net.SocketException: Connection reset by peer: socket w
- 很有感觉的几句话,与君共勉