自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享Android应用和系统开发、音视频编码、性能优化相关知识

收藏+关注+点赞,是原创分享的动力。

  • 博客(102)
  • 收藏
  • 关注

原创 APP架构设计

注解处理器数据存储--MMKV使用及原理数据存储--room使用RxAndroid的使用方式自定义类加载器加载加密类文件Android动态化框架App BundlesMVC、MVP、MVVM混合开发及Android WebView应用Android屏幕适配全方位解析Android中的Apk的加固(加壳)原理解析和实现Android 中使用AOPAndroid Studio编译过程其它安卓APP架构设计对移动端架构的思考

2020-10-10 11:14:22 1906 1

转载 安卓 每日一题 2020年7-8月问题及答案

Android7月2日题: RxJava中的自定义操作符实现思路?参考答案: RxJava的整体结构使用观察者与装饰器模式的组合实现,如果我们需要设计一个自定操作符,主要有以下情况:如果自定义的操作符是作为第一个事件源头,可以通过继承Observable类进行下游对接。如果自定义的操作符是作为变换过程中间的部份,可以通过继承AbstractObservableWithUpstream来进行上游与下游的对接过程。如果自定义的操作符是作为最终观查者收到的结果的二次处理,可以通过继承Obser

2020-09-17 15:04:20 604

原创 安卓软件开发常用命令集合

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 1422

原创 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 957

原创 Android 性能优化--APP启动、UI优化

安卓系统启动流程Activity启动流程优化启动的ActivityActivity的Theme优化Activity的布局优化Button(View)的显示过程布局优化方案常用优化工具Activity的代码优化优化Application初始化Java代码性能分析方法logcat查看启动时间Profiler查看启动时间

2020-06-16 15:53:09 477

原创 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 367

转载 安卓 每日一题 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 361

转载 安卓 每日一题 2020年4月问题及答案

Android4月1日题: 什么是代理模式答:为其他对象提供一种代理以控制对这个对象的访问,它主要解决在直接访问对象时带来的问题, 比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象 创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或 者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层Android4月2日题: 当两个对象的hashcode相同会发生什么?答:如果是在存储阶段,两个对象如果作为key,他们的h

2020-06-08 10:47:13 447

转载 安卓 每日一题 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 453

转载 Android插件化原理解析及常见框架对比

常见android插件框架对比Dynamic-Load-ApkDroidPluginVirtualApkRePlugin总结

2020-06-04 10:36:55 1538

原创 直播视频分辨率码率参考设置

视频宽视频高帧率60帧率30帧率25(荐)帧率20帧率15帧率10分辨率比例72048016208106755404052703:2720405136068057045034023016:9102476836861843153612299226144:312807204320216018001440108072016:9128096057602880240019201440...

2020-06-02 11:23:52 16499 2

转载 安卓 每日一题 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 357

转载 安卓 每日一题 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 338

转载 安卓 每日一题 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-&gt

2020-05-27 15:38:13 11514

转载 Android 性能优化 -- MMKV使用与原理

一. 集成与测试依赖注入初始化获取实例CURDSP 的迁移数据测试二. 初始化目录的创建三. 实例化一) 文件映射到内存二) 数据的载入三) 回顾四. encode一) 数据的编码二) 键值对的更新数据的重整与扩容三) 回顾五. decode思考六. 进程读写的同步一) 文件共享锁二) 文件排它锁三) 读写效率表现总结参考文献

2020-05-25 22:53:52 2206

转载 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 935

原创 Git配置和常用命令

Git配置和常用命令初始配置创建commit模板建立配置ssh的配置文件创建新git仓库并push到远程:push已有项目到远程仓库git stash 的使用查看、添加、提交、删除、找回,重置修改文件查看文件diff查看提交记录Git 本地分支管理--查看、切换、创建和删除分支分支合并和rebaseGit暂存管理Git远程分支管理Git远程仓库管理创建远程仓库tag 使用reflog 使用

2020-04-22 09:56:13 966

原创 安卓OpenGL添加水印并录制---抖音录制原理

简单的音视频录制,我们可以使用 MediaRecorder ,具体示例可以参考 Gitee: Camera2Video。本文将介绍采集 Camera 的预览数据,然后通过 OpenGL 添加水印、贴纸、美颜滤镜等后渲染到 GLSurfaceView ,再用 MediaCodec 硬编码后通过 MediaMuxer 写入 MP4 文件。

2020-04-21 23:47:29 3166 3

原创 Android基于OpenCV通过JNI人脸识别并显示位置

Android基于OpenCV通过JNI识别并显示人脸位置设计思路代码设计说明效果如下代码结构如下JNI识别人脸并画区域代码如下通过ANativeWindow显示RGBA数据到surface代码如下将RGA数据填充到ANativeWindow_Buffer代码如下注意问题说明

2020-04-14 17:47:12 943 2

原创 Android离线人脸识别方案对比

Android 离线人脸识别方案对比总结百度、腾讯、阿里、Face++、商汤等人脸识别虹软人脸识别OpenCV 人脸识别中科视拓(SeetaFaceEngine2)人脸识别Android FaceDetector总结

2020-04-13 18:31:29 2451 1

原创 Android 性能优化--进程保活(11种方案总结)

什么是LMKDService保活方案1. Activity提权2. Service机制(Sticky)拉活3. Native拉活4. “全家桶”拉活5. 广播拉活6. Service提权7. 推送拉活8. JobScheduler拉活9. 账户同步拉活10. 双进程守护11. 手机设置白名单、自启动等总结

2020-04-07 22:11:51 2297 1

原创 CameraX ImageAnalysis 输出帧大小设置

CameraX 是对 Jetpack 的补充,可让您更轻松地利用 Camera2 API 的功能//设置宽高比ImageAnalysis.Builder().setTargetAspectRatio//设置实际的尺寸ImageAnalysis.Builder().setTargetResolutionCamera2 录像并获取实时帧

2020-03-30 22:39:50 7073 8

原创 CSDN 转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 问题解决

近期使用CSDN 的Markdown发现插入连接图片,遇见提示"转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传",现在提供解决方案如下Markdown的最终都是转为html来显示,我们可以直接在其中插入html显示图片

2020-03-23 16:25:59 2860

原创 对刷机包的system.img修改,然后重新打包

HowToModifySystemImage 对刷机包的system.img修改,然后重新打包 资源链接:https://gitee.com/chenjimcom/HowToModifySystemImage1. 准备工作:2. 转换源文件为"*.img.ext4"格式3. 挂载镜像4. 修改镜像内容5. 重新打包

2017-10-23 17:23:49 12703

原创 Android应用的签名及签名文件转换

本文主要介绍安卓应用签名相关内容,包括签名文件的生成,如何对APK签名,如何查看签名结果,以及常见签名之间的相互转换。

2017-10-13 17:52:29 1335

转载 Android 编码规范

1. 前言1.1 术语说明1.2 示例代码仅作参考,并不作为规范。2. 源文件基础2.1 文件名2.2 文件编码2.3 特殊字符3. 源文件结构3.1 许可证或版权信息3.2 package语句3.3 import语句3.4 类声明4. 格式术语4.1 大括号4.2 块缩进:4个空格4.3 一行一个语句4.4 列限制:120(默认80)4.5 自动换行4.6 空白4.7 用小括号来限定组:推荐4.8 具体结构5. 命名约定6. 编程实践7. Javadoc

2017-09-28 17:52:04 511

原创 repo安装使用及项目配置

repo 安装repo 配置repo 使用首先确认电脑是否已经安装repo,执行which repo找不到repo时需要安装 repo 说明文档参见 repo help,repo管理git项目,对于任意一个被管理的git项目,可以使用git相关的命令进行版本控制

2017-09-28 17:03:47 9184

原创 Android使用MediaStore.ACTION_IMAGE_CAPTURE拍照

用 ACTION_IMAGE_CAPTURE 拍照加载拍摄照片用 ActivityResultContracts 拍摄视频常见问题及处理

2017-09-20 09:36:43 23256 4

原创 安卓应用,在存储卡中,增加windows下文件的隐藏属性

在windows中文件可以勾选隐藏属性,是否可以在安卓的存储卡中默认新建此属性的文件呢?1. windows中勾选隐藏属性,实际执行的是`attrib +h FilePath`,因此2. Linux中默认文件隐藏效果,只需要在文件名前加"."3. 在JAVA1.7的Api中增加了设置文件隐藏的操作,4. 安卓是JAVA的,但是没有以上java.nio.file中的包,所以5. 总结

2016-09-09 01:21:28 1384

原创 Ubuntu 安装Git Server Gogs,配置commit邮件通知

1. 安装mysql和git2. 创建Gogit需要的数据库3. 下载最新的release版本4. 配置数据库5. 提交代码后,用multimail自动发送邮件

2016-09-02 17:46:32 1188

原创 安卓获取状态栏(Status Bar)高度

直接使用24dp;getDimensionPixelSize;利用反射。方法一在android6.0系统源码中,可以查到status_bar_height只有一个定值24dp, 因为可以直接使用24dp 源码参见文件./frameworks/base/core/res/res/values/dimens.xml方法二获取系统中”status_bar_height”的值,方法如下private int g...

2016-08-22 20:44:22 13110 1

原创 checkstyle安装、配置、使用

良好的代码格式方便阅读,利于多人维护,避免格式化代码后差异太多,目前android studio默认配置格式化后,基本满足我们的格式要求。下面是如何安装,配置checkstyle。android studio中安装eclipse中安装命令行中使用

2016-07-13 12:00:24 3335

原创 男人来自火星,女人来自金星(摘要)

第一章 男人和女人来自不同的星球第二章 修理先主与改善家庭委员会第三章 男人需要去他们的洞穴里,女人需要谈话第四章 如何鼓舞异性第五章 说不同的语言第六章 男人像橡皮筋第七章 女人像波浪第八章 男女不同的感情需求第九章 如何避免争论第十章 异性的记分第十一章 如何沟通困难的感觉第十二章 如何要求与获得支持第十三章 永浴爱河

2016-06-05 13:49:30 3547

原创 Ndk(jni)调用第三方的so库

本文主要讲述如何在jni中调用第三方共享so 源码地址:https://github.com/chenjim/thirdPartyJniSo 1. 生成第三方共享.so库 ,需要用 ndk-build 2. Eclipse中的使用3. Android studio中的使用

2016-06-02 18:49:01 6769 1

原创 android图形系统详解

本文只是一个传送门android图形系统详解一:Canvasandroid图形系统详解二:Drawablesandroid图形系统详解三:形状Drawable和九宫格android图形系统详解四:控制硬加速android图形系统详解五:Android绘制模式android图形系统详解六:View layer

2016-06-02 14:31:04 707

原创 ubuntu使用meld/beyond compare 做git的diff工具

使用meld作为比较工具1. 安装meld 2. 新建文件,并写入参数 3. 添加可执行权限 4. 配置git 使用Beyondcompare作为比较工具

2016-06-02 14:19:24 5010

转载 Linux下gcc生成和使用静态库和动态库详解

Linux下gcc生成和使用静态库和动态库详解(原文链接) 本文在原文的基础上做一些详细验证,部分稍有改动,一、基本概念1.1什么是库1.2库的种类1.3库存在的意义1.4库文件是如何产生的在linux下1.5库文件是如何命名的,有没有什么规范1.6如何知道一个可执行程序依赖哪些库...二、用gcc生成静态和动态链接库的示例

2016-05-31 17:54:25 18496 4

原创 程序员必备技能之约会倍增术

第一章 女人不是理性的动物第二章 我是如何发现把妹要诀的第三章 如何培养令女人无法抗拒的个人魅力第四章 如何用交流和幽默来吸引女人第五章 外表和肢体语言第六章 一些需要掌握的基本知识及更多关于如何吸引女人第七章 去何处及如何结识女人第八章 一次成功约会的 10 个步骤第九章 约到家里,再怎么做第十章 保持她对你的吸引力,如何维持长期关系

2016-05-29 18:05:05 5552

原创 “rm -rf /“删服务器的过程

有朋友说”rm -rf /”可以直接删除服务器所有资料,我好奇,然后尝试了下,下面开始直播.当然不能直接去删公司服务器,我还想混口饭吃, 我们用个虚拟机吧,Ubuntu 16.04 的VirtualBox,直接上图: 看来直接“rm -rf /”不行啊 开始删除了…. 左边的快捷启动很快就没了,在过一会就下面这样了…. 终端已经不接受输入了,什么都没了,一片灰,只有强制重启

2016-05-18 23:23:43 8255

转载 研发人员跳槽的最佳时机选择

程序员跳槽的最佳时机1.认为自己是公司最好的程序员,在公司里已经没有可学习的对象了。2.如果你没有学习新的技能,还是用那么老掉牙的技术,你将会被淘汰。3.如果在这个公司里一直没有做出成绩。4.比起同行,你的薪水少很多又没有什么晋升空间。5.如果公司总是把你当空气,没有让你表现和晋升的机会。6.发现自己在公司待了很长时间,无论技能还是物资都没有太大变化。7.现在的你已经没有了当初的工作激情。

2016-05-04 20:51:00 2658

Android基于perfetto分析native内存泄露 Trace

Android基于perfetto分析native内存泄露 的trace文件及traceconv.exe 原文地址 https://blog.csdn.net/CSqingchen/article/details/128382445

2022-12-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除