Android修行手册-多路USB外接摄像头

这篇具有很好参考价值的文章主要介绍了Android修行手册-多路USB外接摄像头。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 点击跳转=>Unity3D特效百例
  • 点击跳转=>案例项目实战源码
  • 点击跳转=>游戏脚本-辅助自动化
  • 点击跳转=>Android控件全解手册
  • 点击跳转=>Scratch编程案例
  • 点击跳转=>软考全系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,交流让学习不再孤单

android usb摄像头,熬夜再战Android系列,android,游戏引擎,摄像头,图像处理,usb

👉实践过程

公司最近有个Android产品是这样的:

  1. 需要多路摄像头摄像,且摄像头是USB外接的,并且需要支持扫码功能。
  2. 需要支持多显示器异屏显示或同屏显示。

本篇文章主要介绍USB摄像头的思路,显示器的可看另一篇文章。

😜简介

Android系统已经支持uvc设备,全称为USB Video Class。就如字面意思,USB视频类是专门为USB视频捕获设备定义的协议标准。由Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,已经成为USB org标准之一。

我们用到了开源库AndroidUSBCamera:https://github.com/jiangdongguo/AndroidUSBCamera
而AndroidUSBCamera开源库的底层用到了UVCCamera开源库。是基于UVCCamera的高度封装。

Android Studio 是2021系列,Android设备是基于3588开发板做的,普通的手机平板设备可没那么多接口。
开发板详情请看:http://www.rock-chips.com/a/cn/product/RK35xilie/2022/0926/1656.html

😜开始集成

如果你是在我发文后面开始集成的AndroidUSBCamera,那么恭喜你,这时候的框架已经整体打包好aar了,省略了很多步骤。
方式一:
项目的 build.gradle文件中添加

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

想要使用框架的module中在线引入即可。

dependencies {
    implementation 'com.github.jiangdongguo.AndroidUSBCamera:libausbc:改为版本号'
}

如果你写demo或者集成到超简单的项目里,上面一般都会成功,但如果你的实际项目复杂,集成了很多三方框架就会有其他问题。推荐方式二。

方式二:

从github上下载了项目后,首先你的项目集成 libausbc 包,接着你找到 libnative libuvc libuvccommon 下的三个aar,拷贝的libausbc的libs下,没有文件夹就创建一个,然后在 build.gradle 中添加 aar依赖。
android usb摄像头,熬夜再战Android系列,android,游戏引擎,摄像头,图像处理,usb

dependencies {
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation "androidx.constraintlayout:constraintlayout:2.0.4"
    implementation 'com.google.android.material:material:1.6.1'
    api 'com.elvishew:xlog:1.11.0'
    implementation files('libs/libnative-3.2.9.aar')
    implementation files('libs/libuvc-3.2.9.aar')
    implementation files('libs/libuvccommon-3.2.9.aar')
}

然后你自己的主项目依赖这个 libausbc 包即可。

这就可以了?并不一定,在部分架构的设备上运行没事,有的则不行,这是因为so不全以及so合并导致的问题。
你还需要找到开源项目中的 libuvc-3.2.9.aar 然后修改后缀为zip。
android usb摄像头,熬夜再战Android系列,android,游戏引擎,摄像头,图像处理,usb
然后复制下 armeabi-v7a 改为 你应该用的架构的即可。然后再将后缀名改为 aar。
再之后你的主项目app的如果集成了其他的so,需要jniLibs下有以下几个文件夹,至此,集成就完事了。基本市面上的设备都可以用。
android usb摄像头,熬夜再战Android系列,android,游戏引擎,摄像头,图像处理,usb

😜操作代码

要想使用,首先你得需要权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.usb.host" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

布局也很简单

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/viewfinderView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:inner_scan_speed="20" />
 </RelativeLayout>

可以继承CameraFragment也可以继承CameraActivity使用。继承后会有4个回调方法

class DemoFragment: CameraFragment() {
	override fun getRootView(inflater: LayoutInflater, container: ViewGroup?): View? {
    	//找到布局id,进行设置	
        return mViewBinding?.root
    }
    override fun getCameraView(): IAspectRatio? {
        return AspectRatioTextureView(requireContext())
    }
    override fun getCameraViewContainer(): ViewGroup? {
	    // 对应的布局里控件id即可
        return mViewBinding?.viewfinderView
    }
    override fun onCameraState(self:ICamera, code:ICameraStateCallBack.State, msg:String?) {
	    //返回的摄像头状态
        when (code) {
            ICameraStateCallBack.State.OPENED -> handleCameraOpened()
            ICameraStateCallBack.State.CLOSED -> handleCameraClosed()
            ICameraStateCallBack.State.ERROR -> handleCameraError()
        }
    }
    override fun getGravity(): Int = Gravity.TOP
}

上面是简单的一路摄像头,而多路摄像头就需要你继承MultiCameraActivity或者MultiCameraFragment
之后会实现6个方法

public class MyTest  extends MultiCameraActivity {
   @Nullable
   @Override
   protected View getRootView(@NonNull LayoutInflater layoutInflater) {
	  //返回设置根布局
      return null;
   }

   @NonNull
   @Override
   public MultiCameraClient.ICamera generateCamera(@NonNull Context ctx, @NonNull UsbDevice device) {
     return new CameraUVC(ctx, device); //一般固定这个即可
   }

   @Override
   protected void onCameraConnected(@NonNull MultiCameraClient.ICamera camera) {
	//摄像头连接后的回调,在这一旦连接上就需要绑定上adapter显示画面的view
   }

   @Override
   protected void onCameraDisConnected(@NonNull MultiCameraClient.ICamera camera) {
	//断开链接后的回调
   }

   @Override
   protected void onCameraAttached(@NonNull MultiCameraClient.ICamera camera) {
	//进行摄像头连接时
   }

   @Override
   protected void onCameraDetached(@NonNull MultiCameraClient.ICamera camera) {
	//分离摄像头时
   }
}

更多详情直接看大佬项目的demo即可。也可以留言或下方卡片加好友一起探讨。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
android usb摄像头,熬夜再战Android系列,android,游戏引擎,摄像头,图像处理,usb文章来源地址https://www.toymoban.com/news/detail-725774.html

到了这里,关于Android修行手册-多路USB外接摄像头的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于android的 rk3399 同时支持多个USB摄像头

    一、前文 在这里插入图片描述 二、CameraHal_Module.h 三、CameraHal_Module.cpp 四、编译烧录Image 该部分的修改要生效的话,需要进行全编译 五、App验证 AndroidManifest.xml MainActivity.java activity_main.xml

    2024年02月08日
    浏览(37)
  • 探索Android USBCamera:一款开源的USB摄像头应用

    项目地址:https://gitcode.com/jiangdongguo/AndroidUSBCamera 本文将带您走进Android USBCamera项目,这是一个强大的开源库,允许Android设备通过USB连接物理相机并作为系统默认摄像头使用。无论您是开发者、摄影师还是对移动设备摄影有独特需求的用户,这个项目都值得您的关注。 Android

    2024年04月27日
    浏览(22)
  • ubuntu调用外接摄像头

    一、ubuntu20.04调用外接摄像头(如果是Ubuntu18.04用melodic放在第二行) 1.检查是否连接摄像头 输出/dev/video0  /dev/video1  /dev/video2  /dev/video3 ...表示可以 2.命令行下载软件调用USB摄像头 2.1使用应用程序camorama 输入命令: 安装完成后,在终端中输入命令: 即可显示出视频信息;

    2024年02月07日
    浏览(25)
  • 使用opencv调用外接摄像头

    当我们使用opencv调用摄像头的命令 cv2.VideoCapture(0),可能会出现下面这个错误。 [ERROR:0@0.433] global obsensor_uvc_stream_channel.cpp:156 cv::obsensor::getStreamChannelGroup Camera index out of range 表明在尝试获取摄像机流通道组时,使用的摄像机索引超出了有效范围。这通常意味着你尝试访问的摄

    2024年02月03日
    浏览(34)
  • 【干货】Android系统定制基础篇:第十五部分(Android支持鼠标右键返回、GPIO 控制方案、属性标识USB摄像头的VID与PID)

    1、修改 frameworks/native/services/inputflinger/InputReader.cpp 如下: 二、Android GPIO 控制方案 GPIO 功能在 Android Framework 中增加 GPIO 相关 API,让 APP 可以直接通过 JAVA API 操控 GPIO。支持 输入、输出、模拟按键 三种模式。做为输入时可以用于app获取外部设备的电平状态。做为输出时可以输

    2024年02月11日
    浏览(28)
  • ffmpeg 拉取多路摄像头并按照时间参数截图

    1、拉取2路摄像头并存成图片: ffmpeg -r 1 -ss 00:00:05 -t 00:00:06   -i rtsp://admin:hisense2021@192.168.1.64:554/live0.264  -i rtsp://192.168.31.23/live_stream -map 0:v    image20.jpg -map 1:v   image21.jpg ffmpeg -r 1 -ss 00:00:05 -t 00:00:06   -i rtsp://admin:hisense2021@192.168.1.64:554/live0.264  -i rtsp://192.168.31.23/live_stream -m

    2024年02月03日
    浏览(26)
  • DroidCam---将手机转为电脑外接摄像头的软件(提供下载链接)

    在做计算机视觉的项目时,由于电脑自带的摄像头无法活动,会造成识别的相对困难。同时手上也无摄像头设备,那么人手一部的手机就可以尝试成为一个摄像头。 链接:https://pan.baidu.com/s/1_liaLq6zk5YTFq3j_j4ldw  提取码:w1z7 我使用的是window系统,手机是安卓机。电脑和手机都

    2024年02月10日
    浏览(53)
  • ubuntu打开usb摄像头

    记录一下解决在 Linux 下打开 usb 摄像头界面黑屏的问题。 1、保持在 ubuntu 界面,插上 usb 摄像头,将 usb 摄像头连接到虚拟机上。 2、使用 dmesg 命令可以看到设备接入时的打印信息 可以看到我们刚接入的摄像头它的 VID:PID 是 1e4e:0110,这里的 ID 号可以在 UVC 官方的文档中进一步

    2024年02月16日
    浏览(28)
  • 树莓派调用usb摄像头(三)

    因为我的摄像头是usb 的所以使用一下命令查看摄像头 输入以下命令,开启摄像头 sudo apt-get install cmake libjpeg8-dev 提示:Package \\\'libjpeg8-dev\\\' has no installation candidate sudo apt-get install libjpeg62-turbo=1:1.5.2-2+deb10u1 (2) 打开motion daemon守护进程,使得motion可以一直在后台运行。  sudo nano /e

    2024年01月17日
    浏览(35)
  • usb摄像头驱动-core层usb设备的注册

    在ubuntu中接入罗技c920摄像头打印的信息如下: 在内核中,/driver/usb/core/driver.c 文件扮演了 USB 核心驱动程序管理的重要角色。该文件包含了 USB 核心驱动程序的实现,负责管理和调度 USB 设备的注册、匹配、连接和断开等操作。 具体而言,driver.c 文件的功能和作用包括: USB

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包