Vane's Blog

Android9/10返回错误VID/PID的问题分析

背景 Android9/10开发板插入绝大多数UVC设备,使用Android的API UsbDevice返回错误的VID/PID。针对该问题,下面深入Android9源码分析该问题。 涉及到的文件如下: frameworks/base/services/usb/java/com/ndroid/server/usb/UsbHostManager.java frameworks...

Android及Linux系统下UVC创建两个video节点的原因及解决方案

背景 在某些采用Linux内核的系统如Android和Ubuntu,插入一个UVC(usb video camera)设备会创建两个video设备节点,如/dev/video0和/dev/video1,但只有一个video设备节点是可以获取camera流数据,另外一个只能查询camera信息而已。针对该问题,手上有firefly RK3399的开发板和Android7.1的源码,下面深入源...

FireFly RK3399 Android8.1系统Camera HAL层内存泄漏问题分析

1. 问题背景 在FireFly RK3399 开发板搭载Android8.1系统,插入UVC设备做开关压力测试,发现压测1万多次后,UVC设备打开失败,log显示申请内存失败。dumpsys meminfo发现Camera HAL层已泄漏2Gb。 2. 问题分析 2.1 dumpsys meminfo初步分析 dumpsys meminfo信息如下: Total PSS by p...

libusb线程竞争导致的crash案例分析

背景 USB camera压测模式切换时导致libusb crash。 分析traces文件 08-04 16:49:43.081 29652 29652 I crash_dump32: performing dump of process 29543 (target tid = 29611) 08-04 16:49:43.100 29652 29652 F DEBUG : ***...

RK3399 Android系统插入UVC Camera导致系统开机失败

背景 某些板厂的RK3399 android7.1系统在插入我们的深度UVC Camera设备后,再次开机android系统启动失败,一直停留在开机动画界面。 分析开机logcat --------- beginning of crash 01-18 09:05:33.565 248 248 F libc : Fatal signal 6 (SIGABRT), code ...

ANR案例分析

背景 UVC camera压测冷启动时,在关闭camera时导致ANR。 分析traces文件 ----- pid 2821 at 1970-02-21 07:37:10 ----- Cmd line: com.angzv.camera ... "main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 obj=0x73...

Android 10无法申请UVC摄像头权限的问题分析

如果需要打开USB设备,如USB摄像头,需要在打开设备前先动态请求USB设备访问权限,如下是USB请求权限流程图 该流程图来自:https://www.cnblogs.com/xiaoxiaing/p/12213750.html 当调用申请权限的API:UsbManager.java的requestPermission()方法时,如果是首次访问该USB设备(插拔USB设备或Andro...

进程与线程

虽然每个进程都有自己的虚拟地址空间,但是为了进一步保障系统运行安全,虚拟地址空间被划分为用户空间和内核空间。操作系统运行在内核空间,用户程序运行在用户空间。内核空间有所有进程的地址空间共享,但是用户程序不能直接访问内核空间。 操作系统保存的进程控制信息自然是在内核空间。这里除了页目录以外还可以找到很多重要的内容,例如进程和父进程ID、状态和打开文件句柄表等等。 线程就是进程中的执行体...

Android Native内存泄漏案例

项目中遇到一个内存泄漏的情形:usb camera预览时出现了内存泄漏,但内存泄漏很小,测试一晚上泄漏20M内存左右。因此借此机会学习下当前市面上用于Android检测内存泄漏的工具。 以下内容是搬运字节旗下的西瓜团队的文章: 西瓜视频稳定性治理体系建设二:Raphael 原理及实践 背景 Android 平台上的内存问题一直是性能优化和稳定性治理的焦点和痛点,Java 堆内存因为有...

HTTP基础

1. HTTP到底是什么 两种最直观的印象 浏览器地址栏输入地址,打开网页 Android中发送网络请求,返回对于内容 HTTP定义:Hypertext Transfer Protocol,超文本传输协议,和 HTML (Hypertext Markup Language 超文本标记语言) 一起诞生,用于在网络上请求和传输 HTML 内容。 超文本,即「扩展型文本」,指的...