51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

开源工具

Android UVCCamera 介绍以及遇到问题的解决方案

Android UVCCamera 介绍以及遇到问题的解决方案

厉飞雨 阅读(26) 评论(0) 赞(1)

引言 {#引言} ======== 设备外接usb摄像头,进行基本的预览、拍照、录像。相信有些同学在工作中有遇到类似的需求。 usb摄像头在Android设备上,应用的确很广泛。众所周知,现在汽车上是安装了越来越多的摄像头,通过摄像头采集的实时信息,能协助我们进行更加安全的驾驶。而这些摄像头,除了比较常见的mipi摄像头,很多也开始用的usb摄像头。 除了车载产品,类似安...

Android中多USB摄像头解决方案 —— UVCCamera

Android中多USB摄像头解决方案 —— UVCCamera

厉飞雨 阅读(31) 评论(0) 赞(4)

前言 {#前言} ======== 先贴上采用的开源库链接:<https://github.com/saki4510t/UVCCamera> 业余时间捣鼓了下Android 板子连接多个usb摄像头的方案,一开始使用系统的CameraV1的api,但是取到的摄像头数量一直不对(api: Camera.getNumberOfCameras()),然后又去网上查了方...

Android UVCCamera 源码分析(一)

Android UVCCamera 源码分析(一)

厉飞雨 阅读(32) 评论(0) 赞(5)

前言 {#前言} ======== 前段时间捣鼓多USB摄像头的方案,一阵手忙脚乱算是勉强跑起来了。整个流程主要还是依赖于网上大神们封装好的库。之前想仔细分析一下整套底层实现,然而一直拖到现在......也没有完全看完,于是想着干脆分阶段总结吧。未来打算用几篇文章的篇幅来分析启动、拍照、视频录制等几个环节。 本篇就从相机的初始化、启动预览说起吧。废话少说,进入正题。 先贴...

Android UVCCamera 源码分析(二)

Android UVCCamera 源码分析(二)

厉飞雨 阅读(28) 评论(0) 赞(4)

Java层 {#Java层} ============== 接着上一篇文章(<https://zsyyblog.com/b8a3cdfd.html>)的分析。 在成功调用UVCCamera的一系列open操作之后,我们就可以进入startPreview阶段。这个阶段的上层调用逻辑相对比较简单,我们先看一下一个大概的时序图: ![Java层时序图](data:...

Android UVCCamera 源码分析(三)

Android UVCCamera 源码分析(三)

厉飞雨 阅读(32) 评论(0) 赞(4)

前面几章我们分析了UVCCamera的初始化、预览相关的准备工作,本章我们则来看看`startPreview`的整个流程。按照惯例我们先大概看下调用的时序图: ![startPreview](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) 接着之前开启预览过程最终...

Android UVCCamera 源码分析(四)

Android UVCCamera 源码分析(四)

厉飞雨 阅读(21) 评论(0) 赞(4)

经过前几章的学习,我们大概了解了整个UVCCamera初始化、开始预览的过程。那么接着我们将来看看UVCCamera是如何实现拍照功能的。本章内容相对比较简单,均是Java层的实现。我们直接来看代码: |-----------------|---------------------------------------------------------------------...

Android UVCCamera 源码分析(五)

Android UVCCamera 源码分析(五)

厉飞雨 阅读(34) 评论(0) 赞(5)

本章我们来分析一下之前我们提过的相机采集的数据究竟是如何绘制到屏幕上的,这里需要几个必要的知识点:OpenGL、Android的SurfaceTexture、TextureView。网上可以搜到比较全面的有关于这些知识的文章,因此本文将不会花大篇幅介绍这些知识。 既然要将相机的采集,那么我们还是得从开启预览说起,之前文章(<https://zsyyblog.com/88...

Android解决JNA调用C++动态库返回字符串乱码的问题

Android解决JNA调用C++动态库返回字符串乱码的问题

厉飞雨 阅读(41) 评论(0) 赞(5)

前言 {#前言} ======== JNA就是针对java调用C++动态库开发的jar包程序,使java调用c++动态库变得非常简单 JNA主要负责: * 接口调用 - 将C++接口转化成java方法 * 参数转化 - 将C++类型参数转化成java数据类型 JNA乱码出现原因 {#JNA乱码出现原因} ====================== JNA在对c++的...