- 博客(16)
- 收藏
- 关注
原创 一种Android设备连接手机H5展示实时画面的方案(二)
但在某些情况下,这可能会导致数据传输的延迟,因为发送方需要等待一定数量的小数据包才能将它们组合成更大的数据包。经过多种方案调研,发现不论是推动兄弟团队开启自签名证书支持,还是推动兄弟团队提供 native 层的 websocket 连接绕过 H5 的 HTTPS 限制,还是通过服务端中转数据,从开发投入、用户体验等考虑,都不是很合适。后来实际测试时发现,这一条不是必须的,我猜想是由于我们搭建的是局域网内的本地 WebSocket 服务,不是公网环境,因此可以继续用 ip + port 的连接方式。
2023-11-02 17:00:32
456
原创 一种Android设备连接手机H5展示实时画面的方案
另经测试,如果以1s30帧的原始频率传输数据,由于频率太高,手机H5接收后再转回图像展示的处理速度跟不上,视觉上会有明显的延迟;目前设备系统本身以1s30帧的频率输出1080*720的Yuv图像,“主摄App”接收到系统输出图像后,15帧抽1帧,即以1s2帧的频率将Yuv图像压缩转化为1080*720的Jpeg图像,存入本地。经调研,如果将原始Yuv图像给手机H5,H5需要将Yuv图像转为Jpeg图像。另,在设备上,一张图片从Yuv转成Jpeg,再压缩,处理速度至少40多ms,也限制了传输频率不能太高。
2023-07-21 16:22:34
475
3
转载 Vue v-infinite-scroll无限触发问题
最近在学习vue做项目,用InfiniteScroll实现列表的时候,总是自动无限触发调用 load 方法,试了各种方法都不管用,最终在上文中找到了解决方法。v-infinite-scroll 配置的函数,不允许加“()”,也不能带参数。
2023-01-30 11:56:31
3151
原创 通过shell脚本创建代码分支,及本地打包
最近的有个项目是做硬件定制App开发,根据设计方案,不同功能拆分了多个App,每次新版本在代码仓库建分支时,还有本地打包时,有几个App就得重复操作几遍。后来写了两个脚本,简化操作。
2022-11-18 17:43:11
794
原创 通过FileProvider实现两个App的数据交互
由于 Android 系统尤其是高版本的权限限制,不同 App 间的本地存储数据无法做到直接访问,需要借助如 FileProvider 这样的跨进程通信机制实现交互。
2022-07-05 16:32:29
834
原创 Android5.0系统下代码格式化sd卡方法
近期在忙一个硬件设备项目,项目背景下需要持续高频写入外置sd卡,由于过于碎片化操作sd卡,长时间会导致sd卡开启自我保护,无法继续使用。按厂商建议,需要格式化sd卡才能继续使用。方案一android系统本身未提供通用格式化sd卡的能力,经调研,需要将应用升级为系统应用,加入权限后,可以调用系统服务,格式化sd卡。String path = "/storage/sdcard1";for (StorageVolume storageVolume : service.getVolumeList()
2022-04-24 16:46:21
3041
1
原创 HashMap
一、底层实现1.1 jdk 1.7之前底层结构是数组,每个数组元素是一个链表。同一个链表的 hash 值是一样的,称作哈希碰撞。1.2 jdk 1.8之后在 jdk 1.7 的结构基础上,如果某个链表长度超过8个之后,该链表会转为红黑树结构。而红黑树节点数小于6个,则转回链表结构。二、扩容HashMap数组默认长度是16,负载因子是0.75,如果添加数据后,数组内元素个数大于 16*0.75 = 12 个,则会触发扩容。每次扩容数组长度变为之前的2倍。扩容后会..
2021-12-12 13:14:34
1593
原创 Android Jetpack
目录LiveData一、LiveData官方文档:LiveDataLiveData 主要用于观察数据变动与更新1.1 优点数据变更时更新UI 没有内存泄露 无需手动处理生命周期 共享资源 不会因为停止 Activity 崩溃1.2 常用方法方法名 描述 observe 设置数据变更后处理的监听。 setValue 设置数据,只能在主线程调用,在其他线程调用会抛出异常。 getValue 获取数据。 postValue 向
2021-12-12 12:47:14
1825
原创 Kotlin 协程
什么是协程协程可理解为轻量级的线程,但其不是线程,而是基于线程的工具库。协程的目的是减轻繁琐的异步操作,按同步编码习惯编写异步任务。创建协程launch:创建协程;async:创建带返回值的协程,支持并发;withContext:不创建新的协程,在指定协程运行;runBlocking:类似 launch,但其 delay 方法会阻塞线程;协程上下文(调度器)Dispatchers.Main:当前协程在UI线程执行; 在主线程使用不一定立即执行,因为是用H...
2021-12-11 00:48:30
1796
原创 Handler及IdleHandler机制
组成Message:消息同步消息(个人创建)、异步消息(系统创建)。 参数 when 表示该消息被执行的时间,参数 target 记录处理 Message 的 Handler。MessageQueue:单链表队列,存储 Message,以 when 排序。Handler:发送和处理 Message。定义 Handler 的线程,即为其处理 Message 的线程。Looper:死循环,不断从 MessageQueue 里取出 Message,交由 Handler 处理。 主线程自带
2021-12-08 23:45:25
1014
原创 Kotlin 中使用 Parcelize 时遇到的坑
在 Kotlin 中使用 Parcelize 会提高开发效率,但使用不当可能会出现序列化数据丢失的坑
2021-12-01 19:03:36
4358
1
原创 使用 Charles 对 Android 设备进行 Https 抓包
背景在日常 Android 开发及测试过程中,经常需要查看或验证网络数据的内容,使用 Charles 可以很方便的对网络数据进行抓包。Android 手机抓包方法网上相关文章较多,这里不再赘述,如:使用Charles进行HTTPS抓包 - 简书背景: 在进行App测试或定位线上问题时,经常会遇到抓取HTTPS数据包的需求。一般在windows上会使用fiddler,Mac上使用Charles。对于https请求,抓...https://www.jianshu.com/p/7a88617ce8
2021-10-21 17:59:26
2424
原创 Android 日常问题记录(不定时更新)
ViewPager2 中 onBindViewHolder 的执行时机ViewPager2 的底层实现是 RecyclerView,其 onBindViewHolder 的执行是在 RecycleView 的 onLayout 中。因此,如果在 onBindViewHolder 中创建子 Fragment,创建的时机会依赖 ViewPager2 父容器的布局复杂度。...
2021-08-13 11:47:42
128
转载 Lua查找表元素过程(元表、__index方法是如何工作的)
原帖地址:http://blog.csdn.net/xocoder/article/details/9028347近日开始研究Lua,在元表的使用上照猫画虎地搞了两下,实现了“面向对象”,但究其本质却略有不解,后咨询牛哥得解,特此记录。Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Value对,如果尝试访问了一个表中并不存在的元素时,就会触发Lua的
2014-10-08 10:41:59
394
转载 Lua and LuaJava ported to Android
zuihttps://github.com/mkottman/AndroLua/
2014-08-04 09:18:50
683
原创 心得 ~ 使用 zlib库 解压缩 zip文件
最近在完成一个项目,需要用到C++语言读取一个zip文件内指定文件的内容。在网上查阅了不少资料,针对过程中遇到的问题,自己也研究了一下,现将方法心得记录下来。关于解压文件的方法,根据网上的资料,大概有以下三种方法:调用rar.exe等外部程序。使用第三方类库。自己写解压方法。第一种方法,个人感觉不太靠谱,舍去。第三种方法,本人对zip压缩算法一头雾水,加上暂时没必要做此类研究,舍去
2013-07-05 17:22:08
16358
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人