- 博客(82)
- 收藏
- 关注
原创 安卓Camera2用ImageReader获取NV21源码分析
以前如何得到Camera预览流回调如何使用Camera2得到预览流的回调是否可以通过ImageReader直接得到NV21回调呢ImageReader数据流回调的流程源码分析
2023-02-12 16:22:57
368
原创 Android基于perfetto分析native内存泄露
本文示例是windows,这里使用了python工具,在Linux和mac同样适用。这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机。抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS。可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。是解决问题后,抓取的tarce,可以看到问题已解决。这里我上传了一份自己抓的数据,下载地址。通过点击 方块,对比不用时刻的内存。下载 perfetto ,地址在。每执行一次,上一步会记录一次。连续抓取多次内存快照。
2022-12-21 20:38:16
859
原创 Windows WSL Ubuntu Android 编译
安装ubuntu;替换换ubuntu20.04为阿里云源;下载 LineageOS 源码;repo安装使用项目配置;扩充wsl磁盘空间;迁移虚拟磁盘;Android编译依赖工具链;源码编译;
2022-08-21 18:00:37
798
原创 WSL增加独立的虚拟磁盘VHDX
WSL安装;安装Hyper-V;挂载VHD磁盘,以管理员权限启动PowerShell;创建VHD磁盘;在WSL中(如Ubuntu)格式化VHD磁盘为ext4;
2022-08-21 17:56:09
521
原创 Android ITelephony EndCall Remove 各版本挂断、拦截电话方法
在 Android 8.0 、Android 9.0 中存在 endCall() 接口从 Android 10 开始,已经没有 endCall() 接口在 Android 10 之前可以通过如下方式 挂断 电话Android 10 之后 挂断电话参考如下
2021-11-19 17:11:33
3038
原创 安卓基于SRS的Webrtc推拉流
Https必须需要域名httpx-static 配置 https 代理基于SRS 配置文件支持 httpsAndroid 推拉webrtc流到srs
2021-10-18 17:05:23
2857
3
原创 安卓mediasoup webrtc h264 编解码相关源码分析
mediasoup H264 支持安卓 webrtc 视频采集流程源码分析安卓选择软编码硬编码流程mediasoup openh264 软编码源码分析mediasoup 视频 H264 硬编码解码器初始化流程openh264 提供编解码相关函数
2021-09-10 13:47:40
866
原创 安卓 webrtc 开启h264 软编解码
修改 use_linux_config增加 codec_list parser_list h264 支持增加文件 LibH264Decoder.java 增肌文件 LibH264Encoder.java 增加 h264_codec.cc 修改H264 Create()修改 sdk/android/BUILD.gn 修改 SoftwareVideoDecoderFacoty.java 和 SoftwareVideoEncoderFacoty.java编译使用吧,祝好运。。。
2021-09-09 14:01:11
2326
1
原创 安卓 Mediasoup V3 基于webrtc 分支m84 的编译
相关网址链接mediasoup-client-android m79 编译mediasoup-client-android 更新到 m84libmediasoupclient 编译使用
2021-09-07 17:32:09
914
原创 安卓webrtc在ubuntu 2004下编译使用
Http 全局代理配置编译boto 代理配置Unable to reach the snap store 问题解决ERROR: The installation of the Chrome OS default fonts failed.Android中使用的c++库是libstdc++Exception: Missing licenses for following third_party target编译静态库 libwebrtc.alibmediasoup 编译
2021-09-07 15:05:12
999
原创 Android 断点调试 webrtc、medieasoup
调试代码工程准备编译 Debug 包添加编译参数安卓应用中修改 `app/build.gradle`设置DEBUG TYPE设置源码映射
2021-09-07 14:17:08
664
1
原创 安卓增加 mediasoup webrtc 日志输出
安卓增加 mediasoup webrtc 日志输出增加 webrtc 日志增加 libmediasoupclient 日志增加 mediasoup-client 日志
2021-09-07 14:04:32
312
原创 安卓上传aar到 jitpack 仓库使用和示例
安卓上传aar到 jitpack 仓库使用和示例https://jitpack.io/ 仓库使用示例 https://github.com/chenjim/JitpackDemo本文首发地址 <>增加 ./jitpack.yml 使用jdk11./build.gradle 中增加 maven { url 'https://jitpack.io' }./settings.gradle 中增加 maven { url 'https://jitpack.io' }./j
2021-08-20 11:03:02
516
原创 Windows Terminal 配置
Windows Terminal 常用配置修改默认启动的命令添加 cmder 到 Windows Terminal添加git bash 到 Windows Terminal
2021-04-14 10:53:51
188
原创 Android 第三方框架使用及原理解析
各种原理,经典第三方库源码系列自定义LayoutManager,RecyclerView中如何自定义LayoutManagerVLayout实现原理,即如何自定义LayoutManagerGlide加载原理,缓存方案,LRU算法Retrofit的实现与原理OKHttp3的使用,网络请求中的InterceptEventBus实现原理ButterKnife实现原理RxJava实现原理Dagger依赖注入热修复实现原理,解决方案组件化原理和解决方案Android WebView独立进
2021-04-02 13:30:49
391
原创 基于LCM通讯的java版本使用
官方开源地址:https://github.com/lcm-proj/lcmlcm-gen编译安装LCM 使用发送消息源码:examples/java/example_t_demo/SendMessage.java订阅消息的源码:examples/java/example_t_demo/MySubscriber.java编译所有的java文件运行订阅者MySubscriber新建一个命令窗口,运行发布者 SendMessage
2021-02-22 15:58:32
479
转载 安卓 每日一题 2020年9-10月问题及答案
Android9月1日题: 请解释下 Android 程序运行时权限与文件系统权限的区别?参考答案:apk 程序是运行在虚拟机上的,对应的是 Android 独特的权限机制,只有体现到文件系统上时才使用 linux 的权限设置。(一)linux 文件系统上的权限-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关。比如上面的例子只能说明 syste
2020-11-18 15:48:06
2113
1
原创 从源码解析Android系统模块架构
深入理解PackageManagerService深入理解ActivityManagerServiceWindow 、WindowManager和WindowManagerServiceApplication生命周期应用进程启动流程Android Activity生命周期Activity布局加载流程Android 中的Activity、Window、View之间的关系ActivityThread的主要工作及实现机制应用进程Context创建流程Android Context 是什么?
2020-11-09 12:01:54
374
原创 APP架构设计
注解处理器数据存储--MMKV使用及原理数据存储--room使用RxAndroid的使用方式自定义类加载器加载加密类文件Android动态化框架App BundlesMVC、MVP、MVVM混合开发及Android WebView应用Android屏幕适配全方位解析Android中的Apk的加固(加壳)原理解析和实现Android 中使用AOPAndroid Studio编译过程其它安卓APP架构设计对移动端架构的思考
2020-10-10 11:14:22
1547
1
转载 安卓 每日一题 2020年7-8月问题及答案
Android7月2日题: RxJava中的自定义操作符实现思路?参考答案: RxJava的整体结构使用观察者与装饰器模式的组合实现,如果我们需要设计一个自定操作符,主要有以下情况:如果自定义的操作符是作为第一个事件源头,可以通过继承Observable类进行下游对接。如果自定义的操作符是作为变换过程中间的部份,可以通过继承AbstractObservableWithUpstream来进行上游与下游的对接过程。如果自定义的操作符是作为最终观查者收到的结果的二次处理,可以通过继承Obser
2020-09-17 15:04:20
527
原创 安卓软件开发常用命令集合
adb 常用命令adb 远程无线调试tar 常用命令Android NDK开发Crash错误定位OTA 升级,差分包制作odex去除的源码模块编译方法打开ipod debug模式一个windows的adb自动按键测试bat脚本M18编译MTK 按键映射dws修改jgrep cgrep mgrep resgrep mangrep
2020-08-24 09:20:06
1039
原创 Android 音视频流媒体相关知识导航
文章目录音视频相关知识导航相关博客专栏相关协议介绍RTP与RTCP协议介绍H264编码参数的设置Zookeeper相关ffmpeg 相关SRS(Simple RTMP Server)移动端推流/拉流RTMPSmarterStreamin音视频相关知识导航相关博客专栏雷霄骅(leixiaohua1020)的专栏,里面有非常多关于音视频编码/ffmpeg相关的学习资料,入门必备。yjy239 音视频系列专栏 相关协议介绍RTP与RTCP协议介绍https://blog.51cto.com/z
2020-07-15 18:01:05
740
原创 Android 性能优化--APP启动、UI优化
安卓系统启动流程Activity启动流程优化启动的ActivityActivity的Theme优化Activity的布局优化Button(View)的显示过程布局优化方案常用优化工具Activity的代码优化优化Application初始化Java代码性能分析方法logcat查看启动时间Profiler查看启动时间
2020-06-16 15:53:09
418
原创 Android 性能优化 -- 网络优化
避免频繁网络请求使用线程池图片必须缓存,最好一句机型做图片适配所有http请求必须添加http timeouthttp 开启gzip压缩选择合适的数据格式传输,比如json、protocol依据http头信息中cache-contrl及expires确定是否缓存请求结果确定请求的connection是否keep-alive减少请求次数,适当做请求合并减少重定向次数不是用域名,用IP直连服务器分布式部署连接复用,请求合并CDN缓存静态资源对post请求的body做gzip压缩,如.
2020-06-10 17:42:05
203
转载 安卓 每日一题 2020年5-6月问题及答案
**Android5月7日题:**在使用 HashMap 的时候,用 String 做 key 有什么好处?参考答案:HashMap 内部实现是通过 key 的 hashcode 来确定 value 的存储位置,因为字符串是不可变的,所以当创建字符串时,它的 hashcode 被缓存下来,不需要再次计算,所以相比于其他对象更快。**Android5月8日题:**请说一说OkHttp与Retrofit 的区别与联系是怎样的?**参考答案:**OkHttp和Retrofit都是目前流行网络开源框架封
2020-06-10 16:29:00
290
转载 安卓 每日一题 2020年4月问题及答案
Android4月1日题: 什么是代理模式答:为其他对象提供一种代理以控制对这个对象的访问,它主要解决在直接访问对象时带来的问题, 比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象 创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或 者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层Android4月2日题: 当两个对象的hashcode相同会发生什么?答:如果是在存储阶段,两个对象如果作为key,他们的h
2020-06-08 10:47:13
383
转载 安卓 每日一题 2020年3月问题及答案
Android 3月2日题:onMeasure是干什么的?答案:onMeasure方法主要是用于度量ViewGroup的子view的大小同时确定和保存自己ViewGroup的大小,将xml中的布局信息进行计算,计算出他们需要显示的布局数据。Android 3月3日题:手机的运行内存越来越大,为什么加载个大图片就可能导致OOM?答案:因为安卓对虚拟机的堆内存做了硬性限制,当进程申请的空间超过阈值时,就会抛出OOM异常(这个阈值可以是48M、24M、16M等,视机型而定)Android 3月4日
2020-06-04 15:24:35
360
转载 Android插件化原理解析及常见框架对比
常见android插件框架对比Dynamic-Load-ApkDroidPluginVirtualApkRePlugin总结
2020-06-04 10:36:55
1347
原创 直播视频分辨率码率参考设置
视频宽视频高帧率60帧率30帧率25(荐)帧率20帧率15帧率10分辨率比例72048016208106755404052703:2720405136068057045034023016:9102476836861843153612299226144:312807204320216018001440108072016:9128096057602880240019201440...
2020-06-02 11:23:52
13371
转载 安卓 每日一题 2020年2月问题及答案
Android 2月2日题:android图片占用的内存大小怎么计算?答案:分辨率像素点大小。但是分辨率不一定是原图分辨率,而像素点一般就ARGB_8888(4字节)与RGB_565(2字节)。android系统会根据图片不同来源决定加载图片的分辨率。图片来自res,则分辨率=原图横向分辨率(设备dpi/目录对于dpi)原图纵向分辨率(设备dpi/目录对于dpi);图片来自磁盘、文件等,按照原图分辨率加载。Android 2月3日题:android创建多线程方式答案:Handler+Thread、As
2020-05-29 11:29:21
300
转载 安卓 每日一题 2020年1月问题及答案
Android 1月2日题:SharedPrefrences的apply和commit有什么区别?答案:apply没有返回值而commit返回boolean表明修改是否提交成功。apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘.Android 1月3日题:SurfaceView和View的区别?答案:View需要在UI线程对画面进行刷新,而SurfaceView可在子线程进行页面的刷新SurfaceView在底层已实现双缓冲机制,因此Sur
2020-05-29 11:28:16
285
转载 安卓 每日一题 2019年9-12月问题及答案
文章目录安卓2019年09月每日一题安卓2019年10月每日一题安卓2019年11月每日一题安卓2019年12月每日一题安卓2019年09月每日一题Android 9月5日题:某学生信息表,设一组表示成绩的关键字序列(24,15,32,28,19,10,40)采用直接插入排序时,当插入记录19到有序表时,为找插入位置需比较次数为( )A、2B、3C、4D、5答案:C、4解析:插入排序是从后往前比的 所以 15 24 28 32的比较方向是 32->28->24->
2020-05-27 15:38:13
10807
转载 Android 性能优化 -- MMKV使用与原理
一. 集成与测试依赖注入初始化获取实例CURDSP 的迁移数据测试二. 初始化目录的创建三. 实例化一) 文件映射到内存二) 数据的载入三) 回顾四. encode一) 数据的编码二) 键值对的更新数据的重整与扩容三) 回顾五. decode思考六. 进程读写的同步一) 文件共享锁二) 文件排它锁三) 读写效率表现总结参考文献
2020-05-25 22:53:52
1818
转载 Android性能优化
Android优化I. 基础相关1. 老生常谈的数据结构2. 编码习惯II. 数据库相关1. 无法使用索引的情况2. 不推荐3. 推荐III. 网络调优策略层面优化数据结构层面其他层面优化IV. 多进程抉择V. UI层面VI. 内存1. 内存管理2. 避免内存泄漏相关3. 图片VII. 线程VIII. 编译与发布IX. 工具X. 其他
2020-05-20 13:38:48
845
原创 Git配置和常用命令
Git配置和常用命令初始配置创建commit模板建立配置ssh的配置文件创建新git仓库并push到远程:push已有项目到远程仓库git stash 的使用查看、添加、提交、删除、找回,重置修改文件查看文件diff查看提交记录Git 本地分支管理--查看、切换、创建和删除分支分支合并和rebaseGit暂存管理Git远程分支管理Git远程仓库管理创建远程仓库tag 使用reflog 使用
2020-04-22 09:56:13
713
原创 Android OpenGL添加水印并录制视频--抖音视频录制原理
采集Camera的预览数据,然后通过OpenGL添加水印、贴纸、美颜滤镜等后渲染到GLSurfaceView,再用MediaCodec硬编码后通过MediaMuxer写入MP4文件。
2020-04-21 23:47:29
2240
3
原创 Android基于OpenCV通过JNI人脸识别并显示位置
Android基于OpenCV通过JNI识别并显示人脸位置设计思路代码设计说明效果如下代码结构如下JNI识别人脸并画区域代码如下通过ANativeWindow显示RGBA数据到surface代码如下将RGA数据填充到ANativeWindow_Buffer代码如下注意问题说明
2020-04-14 17:47:12
696
2
原创 Android离线人脸识别方案对比
Android 离线人脸识别方案对比总结百度、腾讯、阿里、Face++、商汤等人脸识别虹软人脸识别OpenCV 人脸识别中科视拓(SeetaFaceEngine2)人脸识别Android FaceDetector总结
2020-04-13 18:31:29
1752
1
Android基于perfetto分析native内存泄露 Trace
2022-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人