桌面挂件不能承受之重——GIF
作者: vivo 互联网客户端团队- Zhang Qin
本文从桌面挂件开发过程中遇到的GIF图片难以加载的问题展开,分别介绍了现有的挂件中加载GIF图片的两种可行方案——ViewFlipper和AnimatedImageDrawable,同时阐述了两种的方案的优缺点。然后针对现有方案中的痛点,结合现有方案,提出通过网络下发GIF并通过逐帧解析得到帧图片, ...
Android外接U盘的操作实践
目录引言1:使用USB外接设备的配置1.1 权限配置1.2 过滤USB类型文件配置2:读取U盘数据2.1 获取U盘信息2.1.1 权限申请的方法2.1.2 广播监听2.2 获取数据3.文件Copy3.1 盘识别工具类3.2 文件复制工具类3.3 调用示例总结引言
本文总结了在 Android(开发板 Android 14)环境下外接 U 盘的操作实践,涵盖了从配置、权限申请、USB ...
Android SystemServer 中 Service 的创建和启动流程
目录Android SystemServer 中 Service 的创建和启动方式1. SystemServer 概述2. 服务启动流程2.1 主要启动阶段2.2 引导服务启动2.3 核心服务启动2.4 其他服务启动3. 服务创建方式3.1 使用 SystemServiceManager 启动3.2 直接实例化并注册3.3 使用静态 main 方法4. 服务生命周期管理4.1 启动阶段(Boot Phases)4.2 系统就绪 ...
Android协程高级用法大全
目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手动创建 CoroutineScope2️⃣ 异步组合:并发和串行串行执行并行执行并行 + awaitAll3️⃣ 异常处理与结构化并发try-catchCoroutineExceptionHandlerSupervisorJob4️⃣ 切换线程/调度器usewithContext替代launch切换线程5️⃣ 超时与取消超时取 ...
Fiddler+MuMu 安卓模拟器配置抓包教程
本文记录如何使用 Fiddler 和 MuMu 模拟器对安卓应用进行抓包
一、配置 Fiddler 并导出证书
如果没有安装 Fiddler 的话,可以通过官方直链下载:https://www.telerik.com/download/fiddler/fiddler2
1. 打开 Fiddler,点击 Tools - Options 进入设置
2. 点击HTTPS选项卡,勾选Decrypt HTTPS traffic,再勾选 Ignore se ...
使用Android获取手机已安装应用程序的不同方法
目录前言1. 获取已安装的应用程序的基本方法1.1 PackageManager 类1.2 获取已安装的应用列表1.2.1 获取已安装应用的包名1.2.2 获取所有已安装应用的包名和应用名称1.3 获取所有已安装应用的详细信息2. 获取系统应用和第三方应用2.1 获取系统应用2.2 获取第三方应用3. 获取特定应用是否安装4. 小结前言
在 Android 开发中, ...
Kotlin 枚举类使用举例
目录一、枚举类核心概念二、基础语法与特性1. 基本定义2. 带参数的枚举3. 实现接口4. 内置属性三、枚举类核心特性四、枚举类使用场景1. 状态/模式管理2. 类型安全配置五、枚举类 vs 密封类六、常见问题总结一、枚举类核心概念
枚举类(Enum Classes)是 Kotlin 中用于定义固定集合值的特殊类。它表示一组命名的常量,每个枚 ...
FFmpeg开发笔记(八十)使用百变魔音AiSound实现变声特效
《FFmpeg开发实战:从零基础到短视频上线》一书的“第5章 FFmpeg处理音频”介绍了如何使用FFmpeg处理和转换音频,“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上剪辑视频,二者结合起来即可开发音频剪辑App。那么在Android系统上还有一款国产的开源音频特效框架AiSound,通过该框架可以更快地开 ...
C# .net9 Avalonia Android 开发环境搭建 demo运行
0 新建项目
1 搭建环境
安装环境
如何搭建Android开发环境 | Avalonia Docs
Setting up the Android SDK for Xamarin.Android - Xamarin | Microsoft Learn
安装xamarin环境
&n ...
FFmpeg开发笔记(七十九)专注于视频弹幕功能的国产弹弹播放器
《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上播放视频,基于FFmpeg的国产播放器开源框架也有很多了,前有哔哩哔哩的ijkplayer,后有小红书的RedPlayer,参见之前的文章《使用国产的ijkplayer播放器观看网络视频》和《使用国产的RedPlayer播放器观看 ...
Android 缓存日志Logcat导出与分析最佳实践
目录Android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按进程(PID)过滤按日志级别过滤按关键字过滤验证导出结果自动化示例1. 一键导出当前前台应用日志2. 崩溃日志自动抓取器常见问题与优化技巧乱码解决最佳实践Android 缓存日志(Logcat)导出与分析全攻略
为什么要导出缓存日志?
当遇 ...
Jetpack架构学习(7)——使用DataStore存储配置信息
原文地址: Jetpack架构学习(7)——使用DataStore存储配置信息-Stars-One的杂货小窝
这里由于开发的app使用的compose架构,比较适合与DataStore一起使用,所以稍微学习了使用方法,顺便记录下
其实DataStore和SharePreference使用方式类似,就是如果你的是新项目,没有啥历史包袱,可以试着用下,使用Flow和Compose使用还是挺舒服的 ...
深入探讨kotlin StateFlow的两个问题和使用场景
目录开发实践模板规范坑来了1. 每次onStart就触发一次2. 数据相同不触发怎么解决总结背景说明:我们日常开发中,经常要在一个独立的界面上做网络请求显示或者toast报错,以及错误信息展示。LiveData是粘性事件,如果有值(或者有初始值),再注册监听,就会立刻触发。然后就是网络请求,将结果设置到LiveData上,等待回调。 ...
Kotlin 协程库中StateFlow 与 SharedFlow 的区别与使用详细解析
目录一、核心区别二、使用场景1. StateFlow:状态管理2. SharedFlow:事件分发三、示例代码1. StateFlow 示例:管理用户登录状态2. SharedFlow 示例:发送 Toast 通知3. SharedFlow 高级配置:缓存历史事件四、选择策略五、最佳实践1. 避免在 StateFlow 中存储事件:2. 生命周期感知收集:3. SharedFlow 的防抖处理:4. 单 ...
Kotlin Flow 实战教程之StateFlow 和 SharedFlow的默认值陷阱
目录1. StateFlow 和 SharedFlow 的区别2. 问题复现:StateFlow 的初始值陷阱❌ 问题代码(StateFlow 自动触发初始值)✅ 解决方案 1:改用 SharedFlow(无初始值)✅ 解决方案 2:StateFlow + 过滤初始值3. 在 Jetpack Compose 中使用StateFlow(需初始值)SharedFlow(需手动给初始值)4. 如何选择?5. 总结在 Android 开 ...
Android实现屏幕录制与本地保存功能的完整指南
目录一、实现原理概述二、环境准备1.配置 Manifest 文件2.请求用户授权3.创建并实现前台服务三、总结一、实现原理概述
Android 屏幕录制主要依赖以下几个核心组件:
MediaProjection:获取屏幕内容的入口,出于安全和隐私的考虑,每次录制前,系统都会弹出一个对话框,明确请求用户的授权。MediaProjectionManager: 管理Med ...
Android调用python库和方法的完整教程
目录一、电脑配置Python环境1.进入Python官网2.下载稳定版本3.安装Python二、Android项目中配置Chaquopy框架Android调用python有几种方法,这里以最推荐的方法为例:Android使用Chaquopy框架集成python。
一、电脑配置Python环境
首先电脑需要配置Python环境,如果已配置,请忽略此步操作。
1.进入Python官网
https://www.p ...
Android Studio找回已记住密码的签名证书的密码
原文地址: Android Studio找回已记住密码的签名证书的密码-Stars-One的杂货小窝
情况:
Android Studio内置已经记录有密码,但是忘记密码是什么,应该如何找回密码?
如下图:
这里发现有个插件可以直接找回
先去签名密码找回插件-github找到对应的文件,并下载jar文件
在Android Studio选择从jar文件安装插件
找回在Tools ...
Android Paging 分页加载库使用实践
目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3. PagingData4. PagingDataAdapter三、Paging 库的完整实现流程1. 添加依赖2. 数据层实现3. ViewModel 层实现4. UI 层实现四、高级功能与最佳实践1. 添加加载状态监听2. 实现下拉刷新3. 添加分隔符和加载更多指示器4. 数据库与网络结合 (RemoteMedi ...
Kotlin的datetime库如何在项目中使用
目录如何在项目中使用该库Gradle 项目中Maven 项目中在源文件中导入时间处理包:Instant(瞬时点)介绍创建 Instant 对象转换为毫秒时间戳从毫秒时间戳创建 InstantInstant 的加减操作Instant 和其他日期时间类型的转换Instant 在实际场景中的应用使用 Instant 时的注意事项TimeZone 类介绍DateTimePeriod 类DateTimePeriod ...