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

目录
相关文章
|
19天前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
55 3
|
19天前
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
110 8
|
3月前
|
Android开发
安卓虚拟摄像头替换摄像头, 微信虚拟相机替换拍照,安卓免root虚拟摄像头
虚拟摄像头系统包含多个组件:主摄像头类、预览面板、驱动接口、DirectShow实现和管理类
|
19天前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
77 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
3月前
|
Android开发 数据安全/隐私保护
手机微信虚拟视频聊天,安卓免root虚拟摄像头,免root虚拟hook相机
以上代码实现了一个完整的免root虚拟摄像头方案,通过Hook系统摄像头服务和微信视频通话接口
|
3月前
|
编解码 Java Android开发
安卓虚拟摄像头免root版,虚拟摄像头替换真实摄像头,jar代码开源分享
通过动态替换摄像头输入流的方式实现虚拟摄像头功能,代码经过简化展示核心逻辑。实际开发中还需要考虑视频编解码优化
|
3月前
|
Java Android开发
安卓虚拟摄像头过人脸,免root虚拟hook相机,虚拟相机hook版【jar】
两种Hook Android相机的方法:Xposed模块和Frida脚本。Xposed模块需要安装在已root的设备
|
3月前
|
API Android开发 数据安全/隐私保护
|
3月前
|
API 开发工具 Android开发
qq虚拟视频插件下载安装手机版, 安卓虚拟视频插件,替换摄像头工具
Xposed入口模块:拦截目标应用的相机调用‌23 Camera1 API处理:通过PreviewCallback替换视频流‌1 Camera2 API适
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。

热门文章

最新文章