资源简介

Android摄像头预览功能的实现,主要是通过JNI实现相关功能

资源截图

代码片段和文件信息


#include “Camera.h“
#include “com_CES_usbcamera_Camera.h“

int camera_fd = -1;
int camera_base = 0;
int flag_init = 0;
int flag_preview = 0;
int Y[256] VR[256] VG[256] UG[256] UB[256];

struct Buffer *buffers = NULL;
int n_buffers = 0;


int initCamera()
{
if(flag_init)
return SUCCESS_LOCAL;

DIR *d;
struct dirent *de;
char *path = DEVICE_PATH;
char name[255];

int fd;
struct v4l2_capability cap;

d = opendir(path);
if(d == 0) {
PRINT_ERROR(“opendir failed“);
return ERROR_LOCAL;
}

while((de = readdir(d)) != 0){
if (!memcmp(de->d_name DEVICE_PREFIX_NAME 5)) {
if(de->d_name[5] == ‘\0‘ || de->d_name[5] < ‘0‘ + camera_base)
continue;

memset(name 0 sizeof(name));
strcpy(name path);
strcat(name de->d_name);
LOGI(“Get device: %s“ name);

fd = open (name O_RDWR);
if(fd < 0) {
PRINT_ERROR(“open failed“);
continue;
}

memset(&cap 0 sizeof(cap));
if (ioctl(fd VIDIOC_QUERYCAP &cap) < 0) {
PRINT_ERROR(“VIDIOC_QUERYCAP“);
close(fd);
continue;
}
if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
LOGE(“%s is no V4L2 device“ name);
close(fd);
continue;
}
if (!(cap.capabilities & V4L2_CAP_STREAMING)) {
LOGE(“%s does not support streaming i/o“ name);
close(fd);
continue;
}

initYUV();
camera_fd = fd;
// setCamera(V4L2_CID_BRIGHTNESS -20);
// setCamera(V4L2_CID_CONTRAST 20);
// setCamera(V4L2_CID_SATURATION 50);

flag_init = 1;
return SUCCESS_LOCAL;
}
}

closedir(d);
flag_init = 0;
return ERROR_LOCAL;
}

void deinitCamera()
{
if(!flag_init)
return;

if(flag_init)
close(camera_fd);
flag_init = 0;
}

int setCamera(int id int value)
{
// struct v4l2_cropcap cropcap;
// struct v4l2_crop crop;
struct v4l2_queryctrl qctrl;
struct v4l2_control ctrl;
/*
memset(&cropcap 0 sizeof(cropcap));
cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (0 == ioctl (camera_fd VIDIOC_CROPCAP &cropcap)) {
crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
crop.c = cropcap.defrect;
ioctl (camera_fd VIDIOC_S_CROP &crop);
LOGI(“VIDIOC_CROPCAP“);
}
*/
qctrl.id = id;
if (ioctl(camera_fd VIDIOC_QUERYCTRL &qctrl) == 0) {
ctrl.id = qctrl.id;
ctrl.value = value;
ioctl(camera_fd VIDIOC_S_CTRL &ctrl);

ctrl.id = qctrl.id;
if (ioctl(camera_fd VIDIOC_G_CTRL &ctrl) < 0) {
PRINT_ERROR(“VIDIOC_G_CTRL“);
return -1;
}
LOGI(“%-14s : id=%08x type=%d minimum=%d maximum=%d\n“
“\t\t value = %d step=%d default_value=%d\n“
qctrl.name qctrl.id qctrl.type qctrl.minimum qctrl.maximum
ctrl.value qctrl.step qctrl.default_value);
return 0;
}
return -1;
}

int startPreview()
{
if(flag_preview)
return SUCCESS_LOCAL;

struct v4l2_format fmt;
struct v4l2_fmtdesc fmtdesc;
struct v4l2_requestbuffers req;
enum v4l2_buf_type type;
int i found = 0;

memset

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-04-20 08:57  USBCamera\
     文件         356  2013-05-17 15:11  USBCamera\.classpath
     文件        1185  2013-09-18 11:31  USBCamera\.project
     文件        1613  2013-11-28 14:56  USBCamera\AndroidManifest.xml
     目录           0  2016-12-14 15:37  USBCamera\assets\
     目录           0  2014-05-07 18:16  USBCamera\bin\
     文件      218968  2013-11-28 11:39  USBCamera\bin\USBCamera.apk
     文件       51394  2013-05-17 11:29  USBCamera\ic_launcher-web.png
     目录           0  2016-04-20 08:57  USBCamera\jni\
     文件         784  2013-07-29 17:03  USBCamera\jni\Android.mk
     文件       10429  2013-09-23 11:28  USBCamera\jni\Camera.c
     文件        2144  2013-09-21 10:28  USBCamera\jni\Camera.h
     文件         913  2013-07-31 15:53  USBCamera\jni\com_CES_usbcamera_Camera.h
     目录           0  2014-05-07 17:28  USBCamera\libs\
     文件      393154  2013-05-17 11:29  USBCamera\libs\android-support-v4.jar
     目录           0  2016-04-20 08:57  USBCamera\libs\armeabi\
     文件       17532  2013-11-28 10:02  USBCamera\libs\armeabi\libCameraJni.so
     文件         781  2013-05-17 11:29  USBCamera\proguard-project.txt
     文件         563  2013-07-29 13:53  USBCamera\project.properties
     目录           0  2014-05-07 17:28  USBCamera\res\
     目录           0  2014-05-07 17:28  USBCamera\res\drawable-hdpi\
     文件         928  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_charge_1.png
     文件        1077  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_charge_2.png
     文件        1130  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_charge_3.png
     文件        1177  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_charge_4.png
     文件        1176  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_charge_5.png
     文件        1378  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_charge_6.png
     文件        1281  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_full.png
     文件        3928  2013-11-27 18:17  USBCamera\res\drawable-hdpi\battery_low.png
     文件         516  2013-11-27 13:55  USBCamera\res\drawable-hdpi\battery_unknown.png
     文件        4270  2013-07-27 10:18  USBCamera\res\drawable-hdpi\ic_launcher.png
............此处省略32个文件信息

评论

共有 条评论