博客已迁移旧博客的所有内容已迁移至本站,原站点将不再更新,后续所有东西我会慢慢搬过来。
为什么迁移因为之前的 GitHub 号被封了影响到了托管的站点,在我有一天心血来潮想传点东西的时候发现的……也不必去考古,~~ 因为其实我也就传了一篇帖子在网上,其他基本在本地 ~~ 虽然后面与伟大且高效的 GitHub 官方进行了一番交谈解除了限制(原因竟是有个仓库名写了 f**k ???),但事已至此,新号也创建了,网站也备案了……就让他成为过去吧。ಥ_ಥ
迁移说明
文章:会慢慢上传的,也许吧,因为我个人喜欢把东西存本地。
评论区:本站暂不开启评论功能。
主题: 主题从 Butterfly 换成了 Anzhiyu,但我感觉花里胡哨的,自由度也不是很大,后面看情况再考虑换不换吧。此外我不建议你打开白天模式,因为会出现一些 UI 配色问题。
感谢你一直以来的关注
KeyStore 其实并不是 Android 独有,它是 JCA(Java 密码学架构)里的密钥库门面类,实现由 Provider 通过 KeyStoreSpi 提供。在 Android 上,系统注册了一个名为 AndroidKeyStore 的 Provider,把 KeyStoreSpi 接到了硬件密钥库上。它支持 AndroidKeyStore、AndroidCAStore、BKS、PKCS12 这几种 type。
开局常量配置可以声明配置密钥别名、指定加密算法组合和初始化向量的长度(IV)。
密钥名要具有唯一性,最好带个版本号,方便以后处理些东西。
123private const val KEY_ALIAS = "lime_token_key_v1"private const val TRANSFORMATION = "AES/GCM/NoPadding"// 算法字符串private const val IV_LENGTH = 12// GCM 规定的标准 IV 长度
算法字符串是要按照 算法 / 模式 / 填充 的格式来配置, ...
计算机
未读声学与数字信号处理将声音由模拟信号转化成数字信号需要采样、量化、编码。
PCM 脉冲编码调制,就是这三个步骤的统称。转化后的数据就是没有压缩过的原始音频数据。经由此过程产生的、没有任何处理的二进制数字序列也可以称作 PCM 或 PCM音频数据流。
那模拟声音信号是怎么来的呢?答案是麦克风设备采集。我们说话时声波在空气中传播,麦克风内部的振膜被声波推动产生振动,进而转换成连续变化的微弱电压信号。
PCM 过程是在 ADC(模数转换器)上执行的。ADC 是声卡内部的一个核心元件。
采样 简单来说,就是把连续变化的模拟信号每隔一定时间取个值,也就是进行离散化的切割,并获取采样点的模拟值。可想而知,点越多越密集,越能近似表示原来的波形,声音保真度越高,质量越好;但记录数据越多,存储容量越高。
每秒采样声音的次数称作采样频率,单位是 Hz 。
量化 将采样点的值分级量化,变换到最接近的数字,也就是用有限个数近似表示原来连续变化的值。分级越多,采样点取值更精确,声音质量越好;但同理二进制的位数更多,存储容量越大。
量化值的二进制位数称作量化位数,也叫位深
编码 将这些整数转换成二进制码。
...
对的,就是 TTS,文字朗读
安卓平台提供 TTS 相关功能的 API,对于基本的文字转语音需求还是足够的,当然朗读的音色似乎很人机,要实现更丰富的语音还是调用云端 TTS 相关 API 吧。
初始化 TextToSpeech初始化 TextToSpeech ,因为初始化过程是异步的,需要在回调中检查初始化状态是否成功,等引擎加载成功后再进一步配置、播报。
123456tts = TextToSpeech(context.applicationContext) { status -> if (status == TextToSpeech.SUCCESS) { configure(tts)// 配置 startSpeaking(messageId, content)// 朗读 }}
配置配置的话,可以进行一系列配置,太晚了先睡觉吧。
在 Android 项目开发中,统一管理插件版本和第三方库依赖十分重要,Gradle 提供的 Version Catalog (TOML) 方便我们通过libs.versions.toml文件集中管理所有依赖和插件的版本。
TOML 文件在项目根目录的 gradle/libs.versions.toml 里,如果文件视图中选择 Android 的话也很容易在 Gradle Scripts 里找到。
古老硬编码写法喂,这样明明很方便的好吧
在早期的 Gradle 配置中,我们通常在 build.gradle.kts 文件中直接声明插件和依赖库。不过现在新版的 Android Studio 刚创建项目后应该也看不见它的身影了。在一些教程里为了方便,依赖引用声明常常直接导入。
——历史的博物馆——
根项目的 build.gradle.kts
1234plugins { id("com.android.application") version "9.2.1" apply false id("org.jetbrain ...
ArkTS 入门ArkTS 简介ArkTS 是 HarmonyOS APP 应用开发的默认开发语言,在 TypeScript 生态基础上做了进一步扩展和规范定义,强化了开发期的静态检查和分析,提升了程序执行的稳定性和性能。ArkTS 同时也支持与 TS/JS 高效互操作。
它与 TS 的区别主要有:
类型更加严格,强制静态类型,禁用了 any 类型,而且强制显式标注
通过 ArkCompiler(方舟编译器)AOT 编译为方舟字节码或机器码,在方舟运行时中执行。
删减了部分动态特性,如 with 语句、运行时类型反射等。
扩展了并发模型,除了 Promise 外,特有 TaskPool与 Worker。
在网上很容易看到类似这种图来表示 JS , TS , Arkts 关系的,但由于 ArtTS 的限制和拓展,严格来说 ArkTS 并非 TS 的超集,因为它并非像 TS 之于 JS 那样基本上是只增加不减少,而是在 TS 语法之上做了减法(如上面所说的砍掉动态特性),在平台能力上进行拓展(增加了鸿蒙专用 的API)。
下次更新将在后文追加……
Android
未读SharedPreferences 想必都知道吧,是所有安卓人学数据持久化的入门必修课,它可以通过简单的键值对 (Key-Value) 方式来轻松存储和获取各种基本数据类型,在开发中常用于存储简单的应用配置、登录状态和用户偏好等等。
但它也有许多令人诟病的,比如无论 edit 还是 commit 都有可能引发 ANR ,容易阻塞线程,类型不安全,数据一致性难保等等。
反正我目前是还没遇到过
所以都 2026 了还有人在用 SP 吗?
官方:Welcome Jetpack DataStore, now in alpha - a new and improved data storage solution aimed at replacing SharedPreferences.
??????
介绍DataStore 是个什么❓
依旧美美照搬
Jetpack DataStore 是一种数据存储解决方案,让您可以使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。
DataStore 的分类DataStore ...
Android
未读在 APP 开发中很多效果往往都需要动画的配合来实现。 Android 提供了多种动画类型,如属性动画和视图动画,其中视图动画又包括帧动画和补间动画。
属性动画说实话没什么高大上的,它的原理也很简单粗暴,无非就是通过不断调用 setXxx 方法修改对象的 属性值(比如 translationX 、alpha 等等),并配合重绘,以达到动画的效果。
ViewPropertyAnimator想让一个 View 动起来,可以用 ViewPropertyAnimator 简单实现。通过 View.animate() 可以返回一个 ViewPropertyAnimator 对象,拿到它之后就可以 为所欲为 操作 View 了 。
1234public ViewPropertyAnimator animate() { throw new RuntimeException("Stub!"); }view.animate().translationX(500);//让 view 水平移动500
基本用法因为属性动画是通过不断操作 View 的属性来 ...
MISC
未读Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment



