
Android开发
文章平均质量分 85
介绍 安卓开发中一些知识点
清霜辰
安卓架构师,精通安卓应用和系统开发、音视频编码、性能优化。
展开
-
详解 kotlin 相对 Java 特有的关键字及使用
Kotlin 在兼容Java的基础上,引入了许多特有的关键字,这些关键字为Kotlin带来了简洁、高效的编程体验。这些Kotlin特有的关键字为开发者提供了更丰富、灵活的编程方式,使得代码更加简洁、易读和高效。原创 2025-04-10 09:52:34 · 565 阅读 · 0 评论 -
2025年如何实现安卓、iOS、鸿蒙跨平台开发
优先 ArkUI-X:若项目需深度集成鸿蒙特性(如多设备协同),且希望长期投入鸿蒙生态。选 Flutter/React Native:若团队已有经验,且需快速覆盖主流平台。混合开发:核心功能用原生(如鸿蒙分布式模块),其他部分用跨平台框架,平衡效率与体验。更多技术细节可参考华为开发者文档、Flutter 鸿蒙社区适配指南。原创 2025-02-28 12:45:44 · 1763 阅读 · 0 评论 -
Android 中音频焦点的使用场景及示例
在 Android 系统中,音频焦点(Audio Focus)是一种机制,用于管理多个应用程序同时播放音频时的冲突。当一个应用程序请求音频焦点并获得它时,其他应用程序在播放音频时需要做出相应的调整,以避免多个音频同时播放造成混乱。原创 2024-09-18 22:47:35 · 1138 阅读 · 0 评论 -
Kotlin 的优势:现代编程语言的卓越选择
简洁与优雅的语法空安全特性函数式编程,支持高阶函数、lambdaKotlin 内联函数与 Java 的互操作性强大的类型推断协程支持`lazy` 委托object 单例模式区间表达式现代的开发工具支持原创 2024-07-29 22:22:01 · 541 阅读 · 0 评论 -
安卓14中Zygote初始化流程及源码分析
日志抓取结合日志与源码分析systemServer zygote创建时序图一般应用 zygote 创建时序图向 zygote socket 发送数据时序图原创 2024-07-12 23:17:16 · 1115 阅读 · 1 评论 -
安卓Framework开发快速分析日志及定位源码
如何区分源码中 main system events 日志查看 Activity 生命周期日志分析 events 日志在源码中位置应用进程ID助分析具体应用ProtoLog 动态开关日志如何快速定位相关流程的代码位置原创 2024-07-01 11:59:48 · 894 阅读 · 0 评论 -
adb常用命令详解--提升开发效率利器
文件管理截屏与录屏logcat 使用dumpsys 相关ps 相关am 相关pm 相关wm 相关setprop 设置属性input 相关adb connect 远程无线调试原创 2024-06-17 14:00:18 · 1259 阅读 · 0 评论 -
Android 性能优化--APK加固(2)加密
字符串加密图片加密如何避免应用被重新签名分发APK 加壳的方案简析DEX加密原理及实现原创 2024-03-07 09:21:59 · 1628 阅读 · 0 评论 -
安卓相机慢动作的软件实现要点
慢动作英文称呼SlowMotion,也就是高帧率录像,如果以正常30帧播放,就能看到慢动作效果,可以用来拍摄快速移动物体的瞬间,比如鱼儿的游动、终点冲刺结果等。本文主要介绍慢动作在安卓相机应用中如何实现原创 2024-02-25 16:21:41 · 1914 阅读 · 0 评论 -
[译]Android性能优化-Kotlin优化isBlank
最近在优化 Jetpack Compose 运行时的部分时,偶然发现了一个看似无害的 API isBlank() 。如果调用的字符串为空或仅由空格字符组成,则此 API 将返回 true 。但它真的无害吗?让我们看一下 JVM 实现,以更好地了解它的作用翻译 2024-02-23 10:55:53 · 215 阅读 · 0 评论 -
安卓SurfaceTexture中updateTexImage使用及源码分析
在Android系统中,SurfaceTexture 是一个特殊的类,它将来自硬件纹理缓冲区(如相机预览流或视频解码输出)的图像数据转换为 OpenGL ES 可以直接使用的纹理。updateTexImage() 方法是 SurfaceTexture 类的核心方法之一,此方法的主要作用是从 SurfaceTexture 内部持有的图像缓冲区中取出最新一帧,并将其内容复制到与 SurfaceTexture 关联的 OpenGL 纹理上。这对于实时图形渲染、视频播放以及从相机捕获并实时处理图像等场景至关重要。原创 2024-02-02 22:49:08 · 2150 阅读 · 2 评论 -
安卓MediaRecorder(4)视频采集编码写入详细源码分析
通过 文2 我们知道了 MediaRecorder 各个接口 Framework 中的实现。通过 文3 我们 知道了 MediaRecorder 底层音频的采集、编码、写入文件等详细流程。本文主要介绍 MediaRecorder 视频的采集、编码等相关流程。原创 2024-01-24 22:07:39 · 1584 阅读 · 0 评论 -
安卓MediaRecorder(3)音频采集编码写入详细源码分析
前言音频采集音频初始化AudioRecord 分析AudioSource 采集到音频音频编码音频编码后数据处理MPEG4Writer写入音频编码后数据到文件MPEG4Writer::Track 取编码后的音频编数据结语原创 2024-01-13 11:19:43 · 1693 阅读 · 1 评论 -
Intellij建议用String替换StringBuilder
String 和 StringBuilder 性能对比String 和 StringBuilder 使用的字节码对比原创 2024-01-01 13:24:40 · 649 阅读 · 0 评论 -
安卓MediaRecorder(2)录制源码分析
JAVA new MediaRecorder() 源码分析android_media_MediaRecorder.cpp native_init()MediaRecorder.java postEventFromNativeandroid_media_MediaRecorder.cpp native_setup()MediaRecorder 参数设置MediaRecorder.prepare 分析MediaRecorder.start 分析MediaRecorder.stop 分析原创 2023-12-09 16:29:42 · 1699 阅读 · 2 评论 -
Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊
使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比原创 2023-11-27 22:43:03 · 2823 阅读 · 0 评论 -
安卓使用MediaRecorder(1)录制音频的详细使用
引言使用 MediaRecorder 的步骤常见问题及解决思路无法访问存储卡目录录制的音频文件没有声音录制过程中出现异常MediaRecorder无法正常启动录制的音质或者画质很差录制的文件无法播放结语原创 2023-11-26 19:11:39 · 4439 阅读 · 0 评论 -
Android性能优化--Perfetto用SQL性能分析
Perfetto SQL 基础Perfetto SQL 性能分析原创 2023-11-04 21:02:39 · 2295 阅读 · 0 评论 -
Android 性能优化–Gradle 编译速度优化
编译速度优化1. 保持工具最新2. 使用 KSP 代替 kapt3. 避免编译不必要的资源4. 优化 repositories maven 排序5. 在调试构建中使用静态构建配置值6. 使用静态依赖版本7. 创建库模块8. 为自定义构建逻辑创建任务9. 将图像转换为 WebP10. 禁用 PNG 处理11. 挑选 JVM 垃圾收集器12. 增加 JVM 堆大小13. 使用非传递 R 类14. 使用非常量 R 类15. 禁用 Jetifier 标志16. 使用配置缓存原创 2023-08-16 07:00:00 · 1534 阅读 · 0 评论 -
Android 11 获取启动其他应用
如果应用以 Android 11(API 级别 30)或更高版本为目标平台,并查询与设备上已安装的其他应用相关的信息,则系统在默认情况下会过滤此信息。此过滤行为意味着您的应用无法检测设备上安装的所有应用,这有助于最大限度地减少您的应用可以访问但在执行其用例时不需要的潜在敏感信息。比如 queryIntentActivities()、getPackageInfo() 和 getInstalledApplications() 将无法获取到返回结果.NameNotFoundException原创 2023-08-08 21:50:40 · 662 阅读 · 0 评论 -
Android Compose Button defaultButtonColors
编译会出现异常 Unresolved reference: defaultButtonColors 新版本已经没有 ButtonConstants.defaultButtonColors 和 backgroundColor 可以使用 ButtonDefaults.buttonColors 替换原创 2023-07-01 16:09:46 · 686 阅读 · 0 评论 -
Android Studio Bot 下载使用
下载 Android Studio Hedgehog 找到Studio Bot: View->Tool Windows->Studio Bot 登录 Google 账号原创 2023-07-01 15:56:53 · 1090 阅读 · 3 评论 -
Android性能优化--Perfetto抓取trace
开启Android的trace跟踪服务;使用 adb 抓取;通过 perfetto 网页抓取;直接在手机上抓取;使用 record_android_trace 抓取;熟悉 perfetto 快捷键,会有事半功倍效果;原创 2023-04-17 13:00:15 · 3160 阅读 · 1 评论 -
安卓Camera2用ImageReader获取NV21源码分析
以前如何得到Camera预览流回调如何使用Camera2得到预览流的回调是否可以通过ImageReader直接得到NV21回调呢ImageReader数据流回调的流程源码分析原创 2023-02-12 16:22:57 · 2293 阅读 · 0 评论 -
Android性能优化--Perfetto分析native内存泄露
本文示例是windows,这里使用了python工具,在Linux和mac同样适用。这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机。抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS。可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。是解决问题后,抓取的tarce,可以看到问题已解决。这里我上传了一份自己抓的数据,下载地址。通过点击 方块,对比不用时刻的内存。下载 perfetto ,地址在。每执行一次,上一步会记录一次。连续抓取多次内存快照。原创 2022-12-21 20:38:16 · 4290 阅读 · 2 评论 -
Android 性能优化--APK加固(1)混淆
为什么要开启混淆如何开启代码混淆如何开启资源压缩代码混淆配置代码混淆后,Crash 问题定位原创 2024-02-29 13:25:57 · 1410 阅读 · 2 评论 -
Android ITelephony EndCall Remove 各版本挂断、拦截电话方法
在 Android 8.0 、Android 9.0 中存在 endCall() 接口从 Android 10 开始,已经没有 endCall() 接口在 Android 10 之前可以通过如下方式 挂断 电话Android 10 之后 挂断电话参考如下原创 2021-11-19 17:11:33 · 4466 阅读 · 0 评论 -
安卓基于SRS的Webrtc推拉流
Https必须需要域名httpx-static 配置 https 代理基于SRS 配置文件支持 httpsAndroid 推拉webrtc流到srs原创 2021-10-18 17:05:23 · 5209 阅读 · 3 评论 -
当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?
Platform:MT6572MT6589MT6582MT6571...MT6572MT6589MT6582MT6571MT6582/92+MT6290MT6588MT6592MT6595MT6732/52Branch:GB3JB2JB3JB5...GB3JB2JB3JB5GB5JB7JB9KK1KK1.MP1KK1.MP3KK1.MP5KK1.MP6KK1.MP7转载 2014-07-04 10:05:52 · 5412 阅读 · 0 评论 -
安卓mediasoup webrtc h264 编解码相关源码分析
mediasoup H264 支持安卓 webrtc 视频采集流程源码分析安卓选择软编码硬编码流程mediasoup openh264 软编码源码分析mediasoup 视频 H264 硬编码解码器初始化流程openh264 提供编解码相关函数原创 2021-09-10 13:47:40 · 1795 阅读 · 1 评论 -
安卓mediasoup输出H264流(支持H264编码)
默认视频编码是VP8源码分析修改支持H264编码原创 2021-09-10 13:26:22 · 1254 阅读 · 0 评论 -
安卓 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 · 4039 阅读 · 1 评论 -
安卓 Mediasoup V3 基于webrtc 分支m84 的编译
相关网址链接mediasoup-client-android m79 编译mediasoup-client-android 更新到 m84libmediasoupclient 编译使用原创 2021-09-07 17:32:09 · 2027 阅读 · 0 评论 -
Android 断点调试 webrtc、medieasoup
调试代码工程准备编译 Debug 包添加编译参数安卓应用中修改 `app/build.gradle`设置DEBUG TYPE设置源码映射原创 2021-09-07 14:17:08 · 1561 阅读 · 1 评论 -
安卓增加 mediasoup webrtc 日志输出
安卓增加 mediasoup webrtc 日志输出增加 webrtc 日志增加 libmediasoupclient 日志增加 mediasoup-client 日志原创 2021-09-07 14:04:32 · 759 阅读 · 0 评论 -
安卓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 · 2374 阅读 · 0 评论 -
安卓上传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 · 1086 阅读 · 0 评论 -
Android 第三方框架使用及原理解析
各种原理,经典第三方库源码系列自定义LayoutManager,RecyclerView中如何自定义LayoutManagerVLayout实现原理,即如何自定义LayoutManagerGlide加载原理,缓存方案,LRU算法Retrofit的实现与原理OKHttp3的使用,网络请求中的InterceptEventBus实现原理ButterKnife实现原理RxJava实现原理Dagger依赖注入热修复实现原理,解决方案组件化原理和解决方案Android WebView独立进原创 2021-04-02 13:30:49 · 749 阅读 · 0 评论 -
安卓 每日一题 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 · 2376 阅读 · 1 评论 -
Android 性能优化 --内存优化、电量优化
Android 性能优化 --内存优化原创 2020-11-13 10:58:54 · 354 阅读 · 0 评论