一直想做个控制闪光灯的程序,却苦于没有头文件
最近研究了一下limo的API文档和开发文档,自己重建了一个mm_camcorder.h,并在此基础上弄了一个手电筒程序,这下半夜的不列颠空战就能派上用场了:)
首先当然是
#include <mmf/mm_camcorder.h>
然后声明三个变量:
MMHandleType handler=0,attr=0;
MMCamPreset cp;
使用cp创建相机handler:
cp.videodev_type = MM_VIDEO_DEVICE_CAMERA0;
MMCamcorderCreate(&handler,&cp);
获取相机handler的曝光属性,并赋值给attr:
MMCamcorderGetAttrs(handler,MM_CAMCORDER_ATTR_STROBE,&attr);
初始化相机handler:
MMCamcorderRealize(handler);
把曝光属性设置为MM_CAMCORDER_FLASH_MOVIE_ON(MOVIE_ON为长亮,ON只是闪一下)
MMAttrsSetInt(attr,MM_CAMCORDER_STROBE_CONTROL,MM_CAMCORDER_FLASH_MOVIE_ON);
MMCamcorderSetAttrs(handler,MM_CAMCORDER_ATTR_STROBE,attr);
开启相机handler:
MMCamcorderStart(handler);
这个时候,你就可以看到背后的闪光灯亮起来了,当然这个时候相机的状态也是开启的,只不过没有输出到屏幕(输出的方法以后再讲)
使用完闪光灯(相机)之后就要关闭了
关闭前先把闪光灯关闭(当然这是正常步骤,貌似直接关相机,闪光灯也会跟着关):
MMAttrsSetInt(attr,MM_CAMCORDER_STROBE_CONTROL,MM_CAMCORDER_FLASH_OFF);
MMCamcorderSetAttrs(handler,MM_CAMCORDER_ATTR_STROBE,attr);
关闭相机handler
MMCamcorderStop(handler);
这时候相机虽然关闭了还是可以再次用start开启的
想要完全注销相机handler还要:
MMCamcorderUnrealize(handler);
MMCamcorderDestroy(handler);
这个时候硬件就完全关闭了,想要再次开启就要重新create和realize,而且需要一定的延时,不然会create失败
还等什么,赶快定制自己的闪光灯吧
(收到短信,闪光灯提示,很邪恶吧)