0. 前提
USB camera功能可以使用专门的APK,或者集成到骁龙里面,本文介绍的是使用专门APK遇到的问题。
1. 测试报了一个BUG
我慌的一比,先根据经验用U盘试了下,发现U盘连OTG是可以识别的,然后插入USB Camera。
喵喵喵? 这看起来没问题啊。
(胖虎眉毛一皱,发现问题并不简单.jpg)
结果发现并不出图-_-++;
console:/ # ls -l /dev/v*
……
crw-rw---- 1 system camera 81, 137 1970-01-01 00:17 /dev/v4l-subdev9
crw------- 1 root root 10, 95 1970-01-01 00:17 /dev/vga_arbiter
crw-rw---- 1 system camera 81, 0 1970-01-01 00:17 /dev/video0
crw-rw---- 1 system camera 81, 1 1970-01-01 00:17 /dev/video1
crw-rw---- 1 system camera 81, 2 1970-01-01 00:17 /dev/video2
crw-rw---- 1 system camera 81, 3 2020-08-13 17:33 /dev/video3
crw-rw---- 1 system camera 81, 32 1970-01-01 00:17 /dev/video32
crw-rw---- 1 system camera 81, 33 1970-01-01 00:17 /dev/video33
crw-rw-rw- 1 root root 10, 48 1970-01-01 00:17 /dev/vndbinder
Video 的节点是有的。
cat /sys/kernel/debug/usb/devices
T: Bus=03 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2bc5 ProdID=050e Rev= 1.00
S: Manufacturer=Sonix Technology Co., Ltd.
S: Product=USB 2.0 Camera
S: SerialNumber=SN0001
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
…
…
我在串口里面cat那个结点,发现USB camera识别到了;卧槽,这咋就是不出图呢。
2. 检查config配置
先看看用的是哪个config,
android10\LA.UM.8.2\device\qcom\sdm660_64\ AndroidBoard.mk
Kernel是msm-4.4,那就走下面的。然后debug 版本是用的sdm660_defconfig。
android10\LA.UM.8.2\kernel\msm-4.4\arch\arm64\configs\sdm660_defconfig
打开发现下面的宏都开了,没发现啥问题啊…
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_VIDEO_ADV_DEBUG=y
CONFIG_VIDEO_FIXED_MINOR_RANGES=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
3. 继续分析
然后我用串口线, 抓了插入USB camera时的getevent对比log,发现USB camera也是识别的。(和android 9的作了对比,android 9的没问题)
add device 6: /dev/input/event5
name: "USB 2.0 Camera"
上报的log都特么和android 9一样。
然后我向一位不愿意透露姓名的大佬,问了下这个问题。大佬说他很忙,还批评我不够收敛,然后他建议我找找别的APK,可能是APK有问题,驱动不可能有问题的,人家都搞好了…
(做一个收敛的人.jpg)
这个我百度了一下:
USB摄像头UVC兼容(如今大部分兼容),UVC,全称:USB video class,是Microsoft与另外几家设备厂商联合退出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。主流操作系统 (如Windows XP SP2 and later, Linux 2.4.6 and later, MacOS 10.5 and later) 都已提供UVC设备驱动,符合UVC规格的硬件设备在不需要安装任何驱动程序下即可在主机中正常使用。
(参考链接:https://www.cnblogs.com/alanfang/p/6726755.html)
android10\LA.UM.8.2\kernel\msm-4.4\drivers\media\usb\uvc
这个也是有的,我百度下了几个APK装了都不行-_-++ ,
后来在小米商店下了这个,果然是APK问题,用这个可以出图。
http://app.mi.com/details?id=com.shenyaocn.android.usbcamera
又水了一篇文章,我很羞愧…本文到此结束,感谢您的阅读。