2016-06-15 1332 views

回答

1

我正在研究这个话题好几天,并将在这里贡献我的部分发现。

  1. 有一个本地库,可用于访问外部UVC相机https://github.com/ktossell/libuvc。我发现这个项目使用了它,当我编译和测试它时,我发现这些示例只是部分稳定的,并且它的源代码压倒一切。
  2. 2年前的Camera2 API似乎包含外部摄像头支持。我在Android project documentation - Camera device找到下面的语句:

    “外部相机(例如USB热插拔相机)支持的API更新指定相机静态信息只有当相机连接可用,准备用于外部热。当摄像头状态不是CAMERA_DEVICE_STATUS_PRESENT时,调用获取静态信息的调用将是无效的。框架仅计算设备状态改变回调以管理可用的外部摄像头列表。

我还无法使用Camera2 API访问我的摄像头编写代码。

最后,我甚至发现,在Android source code下面的代码

(144)// TODO:更新CAMERA_FACING_EXTERNAL一旦HAL API更改将被合并。

虽然CAMERA_FACING_EXTERNAL是外部摄像头的新值CameraInfo class显然不是FRONT而不是返回。

我希望这会帮助你朝着完整的答案前进。

1

不幸的是,尽管camera2 API具有支持外部摄像头(如USB网络摄像头)所需的API接口,但对于外部摄像头还没有标准的低级别支持。

一些独立设备制造商确实有这样的支持,但是这是目前非常少的设备。

在此之前,Android应用程序可以使用USB摄像头的唯一方法是直接使用原始USB API,而不是使用相机API。您可以尝试查找现有的UVC库以供使用,或者编写自己的UVC库。

2

屡试不爽:https://github.com/saki4510t/UVCCamera

上述链接带有8级不同的应用程序中主应用程序,执行在每个不同的特征。浏览应用程序。

使用libuvc库访问外部摄像头。

0

这个功能已经在一些平台上通过硬件camera_device_ops_t搬迁每个功能的函数USB_CAMERA实现,象下面这样:

camera_device_ops_t usb_camera_camera_ops = { 
    set_preview_window:   usb_camera_set_preview_window, 
    set_callbacks:    usb_camera_set_CallBacks, 
    enable_msg_type:   usb_camera_enable_msg_type, 
    disable_msg_type:   usb_camera_disable_msg_type, 
    msg_type_enabled:   usb_camera_msg_type_enabled, 

    start_preview:    usb_camera_start_preview, 
    stop_preview:    usb_camera_stop_preview, 
    preview_enabled:   usb_camera_preview_enabled, 
    store_meta_data_in_buffers: usb_camera_store_meta_data_in_buffers, 

    start_recording:   usb_camera_start_recording, 
    stop_recording:    usb_camera_stop_recording, 
    recording_enabled:   usb_camera_recording_enabled, 
    release_recording_frame: usb_camera_release_recording_frame, 

    auto_focus:     usb_camera_auto_focus, 
    cancel_auto_focus:   usb_camera_cancel_auto_focus, 

    take_picture:    usb_camera_take_picture, 
    cancel_picture:    usb_camera_cancel_picture, 

    set_parameters:    usb_camera_set_parameters, 
    get_parameters:    usb_camera_get_parameters, 
    put_parameters:    usb_camera_put_parameters, 
    send_command:    usb_camera_send_command, 

    release:     usb_camera_release, 
    dump:      usb_camera_dump, 
};