
Android开发
文章平均质量分 87
介绍 安卓开发中一些知识点
清霜辰
安卓架构师,精通安卓应用和Framework开发、音视频编码、性能优化。提供技术支持,项目合作。
展开
-
安卓开发用到的设计模式(3)行为型模式
1. 命令模式(Command Pattern)2. 策略模式(Strategy Pattern)3. 观察者模式(Observer Pattern)4. 模板方法模式(Template Method Pattern)5. 责任链模式(Chain of Responsibility Pattern)6. 状态模式(State Pattern)7. 访问者模式(Visitor Pattern)8. 中介者模式(Mediator Pattern)9. 迭代器模式(Iterator Pattern原创 2025-05-27 22:57:22 · 1032 阅读 · 0 评论 -
安卓开发用到的设计模式(2)结构型模式
本文介绍了安卓开发中常用的五种结构型设计模式:适配器模式(用于RecyclerView和网络请求适配)、装饰器模式(扩展Context功能与View装饰)、代理模式(管理图片加载和权限检查)、桥接模式(实现主题切换和数据存储分离)以及组合模式(构建View树结构和菜单层级)。这些模式通过解耦接口与实现、复用对象结构等方式,有效提升了代码的可维护性和扩展性,是安卓开发中的核心架构思想。原创 2025-05-24 22:01:12 · 907 阅读 · 0 评论 -
安卓开发用到的设计模式(1)创建型模式
本文介绍了在Android开发中常用的创建型设计模式及其应用场景。单例模式用于确保类只有一个实例,如系统服务和数据管理器;工厂模式通过隐藏创建逻辑来简化对象创建,如Fragment和IntentService的实例化;抽象工厂模式用于创建一系列相关对象,如主题系统和数据访问层;建造者模式通过分离构建过程与表示来创建复杂对象,如Dialog和Retrofit的配置;原型模式通过复制原型实例来创建新对象,如Intent的克隆和配置对象的复制。原创 2025-05-21 22:12:52 · 1101 阅读 · 0 评论 -
Android Compose 中 Side Effects 和 State 相关的 API 使用
理解 Side Effects 和 State 是构建复杂且响应迅速的 Android Compose 应用的关键。允许你在 Composable 的生命周期内安全地执行 Composable 范围之外的操作,并提供了各种 API 来处理不同类型的副作用,例如一次性操作 ()、生命周期绑定的协程 ()、引用最新状态 ()、资源清理 () 和异步状态生产 ().State是驱动 UI 更新的数据,Compose 提供了多种 API 来管理不同生命周期和复杂度的状态,包括简单的内部状态 (remember和。原创 2025-05-03 11:37:55 · 894 阅读 · 0 评论 -
安卓 Compose 相对传统 View 的优势
Jetpack Compose凭借声明式编程、Kotlin语法、智能重组、高效状态管理等核心优势,在开发效率、性能表现、可维护性、可测试性等方面全面超越传统View系统。尽管对于习惯传统开发模式的开发者而言,Compose存在一定学习曲线,但随着移动应用开发需求的不断升级,Compose所带来的长期价值和显著优势使其成为安卓UI开发的必然趋势,将引领安卓应用开发迈向新的高度。原创 2025-04-25 10:59:41 · 742 阅读 · 0 评论 -
音乐播放对接状态栏MediaSession控制
本文介绍了在 Android 应用中对接音视频播放与系统状态栏 MediaSession 控制的两种主要方式:使用和使用ExoPlayer。虽然可以实现基本的音频播放,但要对接系统通知栏和状态栏的播放控制,需要开发者手动创建和管理以及自定义通知栏,处理各种播放控制事件,实现较为复杂。ExoPlayer是 Google 官方推荐的更强大、更灵活的媒体播放库,并且与库中的和集成得更好。使用ExoPlayer和可以更简洁地实现状态栏和通知栏的播放控制,ExoPlayer会自动处理大部分与系统媒体控制的交互。原创 2025-04-18 11:03:49 · 937 阅读 · 0 评论 -
System 应用访问 Vendor 库的详细方案
SELinux 是 Android 的强制访问控制 (MAC) 系统,它通过安全策略规则来限制进程对系统资源的访问。每个进程和文件都有一个安全上下文(Security Context),SELinux 策略定义了不同安全上下文之间的交互规则。默认情况下,system应用的上下文和vendor库的上下文可能不允许直接访问。通过自定义 SELinux 策略,可以显式地允许特定的system应用访问特定的vendor库。详细配置方法:使用查找你的system应用进程的 SELinux 上下文。原创 2025-04-12 17:41:44 · 713 阅读 · 0 评论 -
详解 kotlin 相对 Java 特有的关键字及使用
Kotlin 在兼容Java的基础上,引入了许多特有的关键字,这些关键字为Kotlin带来了简洁、高效的编程体验。这些Kotlin特有的关键字为开发者提供了更丰富、灵活的编程方式,使得代码更加简洁、易读和高效。原创 2025-04-10 09:52:34 · 772 阅读 · 0 评论 -
2025年如何实现安卓、iOS、鸿蒙跨平台开发
优先 ArkUI-X:若项目需深度集成鸿蒙特性(如多设备协同),且希望长期投入鸿蒙生态。选 Flutter/React Native:若团队已有经验,且需快速覆盖主流平台。混合开发:核心功能用原生(如鸿蒙分布式模块),其他部分用跨平台框架,平衡效率与体验。更多技术细节可参考华为开发者文档、Flutter 鸿蒙社区适配指南。原创 2025-02-28 12:45:44 · 2664 阅读 · 0 评论 -
Android 中音频焦点的使用场景及示例
通过以上示例,我们可以看到音频焦点在 Android 应用中的重要性及其实现方式。合理使用音频焦点可以让应用提供更好的用户体验,与其他应用和谐共存。在实际开发中,建议根据具体场景选择合适的实现方式,并注意版本兼容性处理。原创 2024-09-18 22:47:35 · 1237 阅读 · 0 评论 -
Kotlin 的优势:现代编程语言的卓越选择
简洁与优雅的语法空安全特性函数式编程,支持高阶函数、lambdaKotlin 内联函数与 Java 的互操作性强大的类型推断协程支持`lazy` 委托object 单例模式区间表达式现代的开发工具支持原创 2024-07-29 22:22:01 · 573 阅读 · 0 评论 -
安卓14中Zygote初始化流程及源码分析
日志抓取结合日志与源码分析systemServer zygote创建时序图一般应用 zygote 创建时序图向 zygote socket 发送数据时序图原创 2024-07-12 23:17:16 · 1149 阅读 · 1 评论 -
安卓Framework开发快速分析日志及定位源码
如何区分源码中 main system events 日志查看 Activity 生命周期日志分析 events 日志在源码中位置应用进程ID助分析具体应用ProtoLog 动态开关日志如何快速定位相关流程的代码位置原创 2024-07-01 11:59:48 · 930 阅读 · 0 评论 -
adb常用命令详解--提升开发效率利器
文件管理截屏与录屏logcat 使用dumpsys 相关ps 相关am 相关pm 相关wm 相关setprop 设置属性input 相关adb connect 远程无线调试原创 2024-06-17 14:00:18 · 1312 阅读 · 0 评论 -
Android 性能优化--APK加固(2)加密
字符串加密图片加密如何避免应用被重新签名分发APK 加壳的方案简析DEX加密原理及实现原创 2024-03-07 09:21:59 · 1685 阅读 · 0 评论 -
安卓相机慢动作的软件实现要点
慢动作英文称呼SlowMotion,也就是高帧率录像,如果以正常30帧播放,就能看到慢动作效果,可以用来拍摄快速移动物体的瞬间,比如鱼儿的游动、终点冲刺结果等。本文主要介绍慢动作在安卓相机应用中如何实现原创 2024-02-25 16:21:41 · 1994 阅读 · 0 评论 -
[译]Android性能优化-Kotlin优化isBlank
最近在优化 Jetpack Compose 运行时的部分时,偶然发现了一个看似无害的 API isBlank() 。如果调用的字符串为空或仅由空格字符组成,则此 API 将返回 true 。但它真的无害吗?让我们看一下 JVM 实现,以更好地了解它的作用翻译 2024-02-23 10:55:53 · 227 阅读 · 0 评论 -
安卓SurfaceTexture中updateTexImage使用及源码分析
在Android系统中,SurfaceTexture 是一个特殊的类,它将来自硬件纹理缓冲区(如相机预览流或视频解码输出)的图像数据转换为 OpenGL ES 可以直接使用的纹理。updateTexImage() 方法是 SurfaceTexture 类的核心方法之一,此方法的主要作用是从 SurfaceTexture 内部持有的图像缓冲区中取出最新一帧,并将其内容复制到与 SurfaceTexture 关联的 OpenGL 纹理上。这对于实时图形渲染、视频播放以及从相机捕获并实时处理图像等场景至关重要。原创 2024-02-02 22:49:08 · 2195 阅读 · 2 评论 -
安卓MediaRecorder(4)视频采集编码写入详细源码分析
通过 文2 我们知道了 MediaRecorder 各个接口 Framework 中的实现。通过 文3 我们 知道了 MediaRecorder 底层音频的采集、编码、写入文件等详细流程。本文主要介绍 MediaRecorder 视频的采集、编码等相关流程。原创 2024-01-24 22:07:39 · 1641 阅读 · 0 评论 -
安卓MediaRecorder(3)音频采集编码写入详细源码分析
前言音频采集音频初始化AudioRecord 分析AudioSource 采集到音频音频编码音频编码后数据处理MPEG4Writer写入音频编码后数据到文件MPEG4Writer::Track 取编码后的音频编数据结语原创 2024-01-13 11:19:43 · 1747 阅读 · 1 评论 -
Intellij建议用String替换StringBuilder
本文探讨了在Java开发中字符串拼接的性能问题,特别是String与StringBuilder的使用场景。通过性能测试和字节码分析,文章指出在简单拼接场景下,String的+操作符由于JDK的底层优化,性能与StringBuilder相当,且代码更简洁。然而,在循环累加等复杂场景中,StringBuilder仍具有明显性能优势。文章建议根据具体场景选择合适的方式:简单拼接使用String,循环拼接使用StringBuilder,并提供了最佳实践建议。原创 2024-01-01 13:24:40 · 684 阅读 · 1 评论 -
安卓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 · 1754 阅读 · 2 评论 -
Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊
使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比原创 2023-11-27 22:43:03 · 2945 阅读 · 0 评论 -
安卓使用MediaRecorder(1)录制音频的详细使用
引言使用 MediaRecorder 的步骤常见问题及解决思路无法访问存储卡目录录制的音频文件没有声音录制过程中出现异常MediaRecorder无法正常启动录制的音质或者画质很差录制的文件无法播放结语原创 2023-11-26 19:11:39 · 4628 阅读 · 0 评论 -
Android性能优化--Perfetto用SQL性能分析
Perfetto SQL 基础Perfetto SQL 性能分析原创 2023-11-04 21:02:39 · 2464 阅读 · 1 评论 -
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 · 1620 阅读 · 0 评论 -
Android 11 获取启动其他应用
如果应用以 Android 11(API 级别 30)或更高版本为目标平台,并查询与设备上已安装的其他应用相关的信息,则系统在默认情况下会过滤此信息。此过滤行为意味着您的应用无法检测设备上安装的所有应用,这有助于最大限度地减少您的应用可以访问但在执行其用例时不需要的潜在敏感信息。比如 queryIntentActivities()、getPackageInfo() 和 getInstalledApplications() 将无法获取到返回结果.NameNotFoundException原创 2023-08-08 21:50:40 · 670 阅读 · 0 评论 -
Android Compose Button defaultButtonColors
编译会出现异常 Unresolved reference: defaultButtonColors 新版本已经没有 ButtonConstants.defaultButtonColors 和 backgroundColor 可以使用 ButtonDefaults.buttonColors 替换原创 2023-07-01 16:09:46 · 697 阅读 · 0 评论 -
Android Studio Bot 下载使用
下载 Android Studio Hedgehog 找到Studio Bot: View->Tool Windows->Studio Bot 登录 Google 账号原创 2023-07-01 15:56:53 · 1107 阅读 · 3 评论 -
Android性能优化--Perfetto抓取trace
开启Android的trace跟踪服务;使用 adb 抓取;通过 perfetto 网页抓取;直接在手机上抓取;使用 record_android_trace 抓取;熟悉 perfetto 快捷键,会有事半功倍效果;原创 2023-04-17 13:00:15 · 3260 阅读 · 1 评论 -
安卓Camera2用ImageReader获取NV21源码分析
以前如何得到Camera预览流回调如何使用Camera2得到预览流的回调是否可以通过ImageReader直接得到NV21回调呢ImageReader数据流回调的流程源码分析原创 2023-02-12 16:22:57 · 2333 阅读 · 0 评论 -
Android性能优化--Perfetto分析native内存泄露
本文示例是windows,这里使用了python工具,在Linux和mac同样适用。这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机。抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS。可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。是解决问题后,抓取的tarce,可以看到问题已解决。这里我上传了一份自己抓的数据,下载地址。通过点击 方块,对比不用时刻的内存。下载 perfetto ,地址在。每执行一次,上一步会记录一次。连续抓取多次内存快照。原创 2022-12-21 20:38:16 · 4643 阅读 · 2 评论 -
Android 性能优化--APK加固(1)混淆
为什么要开启混淆如何开启代码混淆如何开启资源压缩代码混淆配置代码混淆后,Crash 问题定位原创 2024-02-29 13:25:57 · 1458 阅读 · 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 · 4530 阅读 · 0 评论 -
安卓基于SRS的Webrtc推拉流
Https必须需要域名httpx-static 配置 https 代理基于SRS 配置文件支持 httpsAndroid 推拉webrtc流到srs原创 2021-10-18 17:05:23 · 5282 阅读 · 3 评论 -
当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?
Platform:MT6572MT6589MT6582MT6571...MT6572MT6589MT6582MT6571MT6582/92+MT6290MT6588MT6592MT6595MT6732/52Branch:GB3JB2JB3JB5...GB3JB2JB3JB5GB5JB7JB9KK1KK1.MP1KK1.MP3KK1.MP5KK1.MP6KK1.MP7转载 2014-07-04 10:05:52 · 5420 阅读 · 0 评论 -
安卓mediasoup webrtc h264 编解码相关源码分析
mediasoup H264 支持安卓 webrtc 视频采集流程源码分析安卓选择软编码硬编码流程mediasoup openh264 软编码源码分析mediasoup 视频 H264 硬编码解码器初始化流程openh264 提供编解码相关函数原创 2021-09-10 13:47:40 · 1866 阅读 · 2 评论 -
安卓mediasoup输出H264流(支持H264编码)
默认视频编码是VP8源码分析修改支持H264编码原创 2021-09-10 13:26:22 · 1403 阅读 · 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 · 4097 阅读 · 1 评论 -
安卓 Mediasoup V3 基于webrtc 分支m84 的编译
相关网址链接mediasoup-client-android m79 编译mediasoup-client-android 更新到 m84libmediasoupclient 编译使用原创 2021-09-07 17:32:09 · 2073 阅读 · 0 评论