Android10.0(Q) 6765 USB 摄像头调试记录

简介: Android10.0(Q) 6765 USB 摄像头调试记录

过程


开整之前,按习惯去 FAQ 上一顿搜索,都是些低版本的改动记录,后来得知高版本对 USB Camera这块的支持太少了。

sxUQAK.png


FAQ 上淘到一个6.0的改动方法,照着试了试发现不行呃。后来经过一番搜索后,找到 MTK USB CMAERA 调试记录,按照这哥们的修改可行。编译后重新烧写,插入USB摄像头执行ls -l /dev/v*,

发现了 /dev/video0 设备,那么第一步算是走通了。


alps\kernel-4.9\arch\arm64\configs\k62v1_64_bsp_debug_defconfig

alps\kernel-4.9\arch\arm64\configs\k62v1_64_bsp_defconfig

# CONFIG_RD_LZ4 is not set
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEOBUF2_CORE=y
CONFIG_VIDEOBUF2_MEMOPS=y
CONFIG_VIDEOBUF2_VMALLOC=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_MTK_OTG=y
CONFIG_USB_MTK_HDRC=y 
CONFIG_USB_MTK_HDRC_HCD=y

打开 MTK UVC_SUPPORT 相关宏控制后,将编译对应的usb驱动文件


alps\kernel-4.9\drivers\media\usb\Makefile


能成功发现设备节点后,下载 https://github.com/jiangdongguo/AndroidUSBCamera 工程源码在 AS 中搞起来,


github 上的由于依赖库地址变动不能成功编译,后来经过排错后成功运行了。也可以下载我修改好后的。


AndroidUSBCamera-master.zip


成功运行起来后,我就遇到了USB权限问题

 11:42:25.572 5580-5620/com.jiangdg.usbcamera D/Debug: onConnectDev: 
 11:42:25.573 5580-5622/com.jiangdg.usbcamera V/UVCCameraTextureView: RenderThread#setEncoder:encoder=null
 11:42:25.586 5580-5621/com.jiangdg.usbcamera E/UsbManager: exception in UsbManager.openDevice
    java.lang.SecurityException: User has not given 1000/com.jiangdg.usbcamera permission to access device /dev/bus/usb/001/004
        at android.os.Parcel.createException(Parcel.java:2071)
        at android.os.Parcel.readException(Parcel.java:2039)
        at android.os.Parcel.readException(Parcel.java:1987)
        at android.hardware.usb.IUsbManager$Stub$Proxy.openDevice(IUsbManager.java:739)
        at android.hardware.usb.UsbManager.openDevice(UsbManager.java:445)
        at com.serenegiant.usb.USBMonitor$UsbControlBlock.<init>(USBMonitor.java:1088)
        at com.serenegiant.usb.USBMonitor$UsbControlBlock.clone(USBMonitor.java:1111)

按理来说应该要弹框提示是否允许USB权限的,但我这里没弹出而且报了上面的错,后来直接把 framwork 下的权限检查给屏蔽了。


frameworks/base/services/usb/java/com/android/server/usb/UsbUserSettingsManager.java


public void checkPermission(UsbDevice device, String packageName, int uid) {
        if (!hasPermission(device, packageName, uid)) {
            //throw new SecurityException("User has not given " + uid + "/" + packageName
                    //+ " permission to access device " + device.getDeviceName());
        }
    }
    public void checkPermission(UsbAccessory accessory, int uid) {
        if (!hasPermission(accessory, uid)) {
           //throw new SecurityException("User has not given " + uid + " permission to accessory "
                   // + accessory);
        }
    }

这样用 demo 代码就能正常打开 USB 摄像头预览了。


这里只是简单记录了修改过程,如果要集成到系统本身的相机中打开 USB 摄像头,应该有不小的工作量。


默认的 Camera API 中据说可以兼容,感兴趣的可以看下这两篇


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

Android适配多摄像头


参考文章


MTK USB CMAERA 调试记录

终于搞定android驱动USB摄像头了!

Android USBCamera,UVCCamera开发通用库,我试用了普通的USB摄像头没问题

Android支持USB摄像头

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

目录
相关文章
|
1月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
51 0
|
1月前
|
Ubuntu Android开发
安卓系统调试与优化:(一)bootchart 的配置和使用
本文介绍了如何在安卓系统中配置和使用bootchart工具来分析系统启动时间,包括安装工具、设备端启用bootchart、PC端解析数据及分析结果的详细步骤。
71 0
安卓系统调试与优化:(一)bootchart 的配置和使用
|
1月前
|
编解码 网络协议 前端开发
如何实现Android平台GB28181设备接入模块按需打开摄像头并回传数据
后台采集摄像头,如果想再进一步扩展,可以把android平台gb28181的camera2 demo,都移植过来,实现功能更强大的国标设备侧,这里主要是展示,收到国标平台侧的回传请求后,才打开摄像头,才开始编码打包,最大限度的减少资源的占用
|
1月前
|
编解码 网络协议 Android开发
Android平台GB28181设备接入模块实现后台service按需回传摄像头数据到国标平台侧
我们在做Android平台GB28181设备对接模块的时候,遇到这样的技术需求,开发者希望能以后台服务的形式运行程序,国标平台侧没有视频回传请求的时候,仅保持信令链接,有发起视频回传请求或语音广播时,打开摄像头,并实时回传音视频数据或接收处理国标平台侧发过来的语音广播数据。
|
3月前
|
安全 API Android开发
Android打开USB调试命令
【6月更文挑战第20天】
126 1
|
4月前
|
Android开发
Android监听USB设备插拔
Android监听USB设备插拔
689 7
|
4月前
|
Android开发
Android 获取 USB设备列表
Android 获取 USB设备列表 【5月更文挑战第6天】
149 4
|
3月前
|
Java API Android开发
安卓开发app 调用usb 摄像头 需要用到哪个库
在安卓开发中,调用USB摄像头常常使用libuvc库,这是一个跨平台处理USB视频设备的库。有多个基于libuvc的开源项目简化了在安卓上的使用,如UVCCamera和Android EasyCap UVC。例如,UVCCamera提供了一个更简单的接口来访问USB摄像头,并且可以在Jetpack Compose中显示预览。开发者可以参考官方文档、开源项目以及相关教程和资源来学习和实现这一功能。
|
4月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
4月前
|
算法 架构师 程序员
android开发板调试,Android程序员的春天
android开发板调试,Android程序员的春天