Пример #1
0
static void bb10camera_detect(MSWebCamManager *obj) {
    camera_error_t error;
    camera_handle_t handle;

    error = camera_open(CAMERA_UNIT_FRONT, CAMERA_MODE_RW, &handle);
    if (error == CAMERA_EOK) {
        if (camera_has_feature(handle, CAMERA_FEATURE_VIDEO)) {
            if (camera_can_feature(handle, CAMERA_FEATURE_VIDEO)) {
                MSWebCam *cam = ms_web_cam_new(&ms_bb10_camera_desc);
                cam->name = ms_strdup("BB10 Front Camera");
                ms_message("[bb10_capture] camera added: %s", cam->name);
                ms_web_cam_manager_add_cam(obj, cam);
                camera_close(handle);
            } else {
                ms_warning("[bb10_capture] front camera has video feature but can't do it...");
            }
        } else {
            ms_warning("[bb10_capture] front camera doesn't have video feature");
        }
    } else {
        ms_warning("[bb10_capture] Can't open front camera: %s", error_to_string(error));
    }

    error = camera_open(CAMERA_UNIT_REAR, CAMERA_MODE_RW, &handle);
    if (error == CAMERA_EOK) {
        if (camera_has_feature(handle, CAMERA_FEATURE_VIDEO)) {
            if (camera_can_feature(handle, CAMERA_FEATURE_VIDEO)) {
                MSWebCam *cam = ms_web_cam_new(&ms_bb10_camera_desc);
                cam->name = ms_strdup("BB10 Rear Camera");
                ms_message("[bb10_capture] camera added: %s", cam->name);
                ms_web_cam_manager_add_cam(obj, cam);
                camera_close(handle);
            } else {
                ms_warning("[bb10_capture] rear camera has video feature but can't do it...");
            }
        } else {
            ms_warning("[bb10_capture] rear camera doesn't have video feature");
        }
    } else {
        ms_warning("[bb10_capture] Can't open rear camera: %s", error_to_string(error));
    }
}
Пример #2
0
FlashlightPrivate::FlashlightPrivate()
  : camHandle { CAMERA_HANDLE_INVALID },
    lightOn { false }
{
    auto error = camera_open(CAMERA_UNIT_REAR, CAMERA_MODE_PREAD | CAMERA_MODE_PWRITE, &camHandle);

     if (error == CAMERA_EOK) {
         auto hasLight = camera_can_feature(camHandle, CAMERA_FEATURE_VIDEOLIGHT);

         if (!hasLight) {
             qDebug("Flashlight error: video light not available.");
             error = camera_close(camHandle);
             if (error != CAMERA_EOK) {
                 qDebug("Flashlight error: failed to close camera: %s.", errorStr(error).c_str());
             }
             camHandle = CAMERA_HANDLE_INVALID;
         }
     } else {
         qDebug("Flashlight error: failed to open camera: %s.", errorStr(error).c_str());
     }
}