
ExoPlayer AudioProcessor处理模型 ExoPlayer内部维护了一个AudioProcessChain,它的作用就是串联各...
为了实现结构化并发,其中一个很重要的命题就是协程的取消。 在使用kotlin协程进行开发前,有两个概念我们始终是绕不开的, 一个是协程本身,一个...
查看项目中是否有显示配置,可使用ndk关键字在项目中全局搜索,包括gradle和local.properties,如果没有则按照如下步骤。 对d...
V1签名 (JAR签名)最传统的签名方式在APK的META-INF目录下生成三个文件:MANIFEST.MFCERT.SFCERT.RSA优点:...
dynamic feature是Google利用了安卓系统自带的split apk机制提供的官方‘插件化‘方案,通过使用此技术,我们可以做到模块...
方向性相关字符效果Left-to-Right (LTR)强字符从左至右(英文字母、汉子以及世界上大部分左->右书写的文字)方向性确定,LTR 或...
当我们给构造函数指定了默认值,并且存在重载的构造函数, 比如如下场景 如上代码场景,kotlin是如何决定在重载的时候调用哪一个构造函数呢? 首...
我们在自行编写Wav播放器的时候,有的时候发现经过ffmpeg处理后的wav文件头大小不再是44字节大小,使用 二进制分析工具可以看到其中有一个...
runBlocking是kotlin提供的一个协程启动函数,它的作用是运行指定的中断函数,同时保证在runBlocking的协程体执行完成之前,...