音视频开发之AudioRecord录制PCM音频
[TOC]
文章参考:https://mp.weixin.qq.com/s?__biz=MzU5NjkxMjE5Mg==&mid=2247483710&idx=1&sn=0613f56710ce856b8c1c22e47cf2cba9&chksm=fe5a3011c92db907625071cec6acfd5031024993e7d2b31c276b5caad2a44f80319c4398f84b&scene=178&cur_album_id=1555170733142622209#rd
目录
音频采集API AudioRecord和MediaRecorder介绍
PCM的介绍
AudioRecord的使用(构造、开始录制、停止录制、其他细节点)
ffplay播放pcm
pcm转为wav
小结
AndroidSDK提供了两套音频录制的API,AudioRecord和MediaRecorder。其中MediaRecorder是更加上层的API,他可以直接对手机麦克风录入的音频数据进行压缩编码(比如 mp3),并存储为文件。而AudioRe ...
音视频开发之AudioTrack播放PCM音频
[TOC]
文章转自:https://mp.weixin.qq.com/s?__biz=MzU5NjkxMjE5Mg==&mid=2247483715&idx=1&sn=dbf44d72a1b5384b7f7bd984ae37b24f&chksm=fe5a306cc92db97a0ec8279f9605f7ff7e8a9bcaf945ec5f921731a9a9386794ea618452f56e&cur_album_id=1555170733142622209&scene=189#wechat_redirect
目录
AudioTrack和MediaPlayer
AudioTrack的API介绍(构造、操作、状态机)
具体实现(Static和Stream两种模式)
遇到的问题
收获
一、MediaPlayer和AudioTrackAndroid SDK 中提供了三种播放声音的API,常见的是MediaPlayer和AudioTrack其中AudioTrack管理、播放单一音频资源。可以将PCM音频数据传输到音频接收器,以供播放,只能播 ...
Android音视频学习之MediaPlayer源码
[TOC]
概述MediaPlayer是Android中的一个多媒体播放类,我们能通过它控制音视频流或本地音视频资源的播放过程。
MediaPlayer类用于视频/音频文件的播放控制。本节主要覆盖MediaPlayer如下知识点。
• MediaPlayer的状态图
• Idle状态
• End状态
• Error状态
• Initialized状态
• Prepared状态
• Preparing状态
• Started状态
• Paused状态
• Stopped状态
• PlaybackCompleted状态
MediaPlayer的状态图
Idle状态及End状态在MediaPlayer创建实例或者调用reset函数后,播放器就被创建了,这时处于Idle(就绪)状态,调用release函数后,就会变成End(结束)状态,在这两种状态之间的就是MediaPlayer的生命周期。
Error状态在构造一个新MediaPlayer或者调用reset函数后,上层应用程序调用getCurrentPosition、getVideoHeight、getDuration、getVi ...
AnimationDrawable的源码学习
[TOC]
文章参考:https://binkery.com/archives/523.html
https://dandanlove.com/2018/05/02/Android-animation-source/
https://www.jianshu.com/p/c0057afb0c79
https://blog.csdn.net/qq_36467463/article/details/79423824
https://stackoverflow.com/questions/8692328/causing-outofmemoryerror-in-frame-by-frame-animation-in-android
概述AnimationDrawable源码AnimationDrawable的用法如下:
12345678910public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Imag ...
Android之插件化基础学习
[TOC]
概述
Android自动化测试基础学习
[TOC]
概述文章参考:https://developer.android.com/training/testing/unit-testing/local-unit-tests?hl=zh-cn
文章参考:https://developer.android.com/training/testing?hl=zh-cn
Android插桩基础学习
[TOC]
文章参考:https://mp.weixin.qq.com/s/dbseDMO3tqNPtSvBB5UL3Q
文章参考:https://www.yuque.com/docs/share/b49a3274-17d9-4c87-815a-4a13ab72e4e0
概述插桩是什么?你在开发中有用过插桩的技术吗?
所谓的插桩就是在代码编译期间修改已有的代码或者生成新代码。
插桩具体在编译的哪个流程介入呢?
插桩的作用与场景
代码生成
代码监控
代码修改
代码分析
Java 源文件方式
类似 AndroidAnnotation/APT(Annotation Processing Tool),可以在代码编译期解析注解,并且生成新的 Java 文件,减少手动的代码输入。 这些代码生成的场景,它们生成的都是 Java 文件,是在编译的最开始介入。典型的有 Greendao、ButterKnife
上图是我们项目内在用的 ORM 映射数据库 Greendao。可见 build 目录下有很多 *.java 后缀的文件,build一般都是放置编译生成后的产物,很显然这些文件 ...
Android插桩之ASM学习
[TOC]
概述文章参考:https://juejin.cn/post/6844903780916396039
文章参考:https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx
文章参考:https://mp.weixin.qq.com/s/dbseDMO3tqNPtSvBB5UL3Q
Gradle编译成APK的流程
[TOC]
文章参考:https://blog.csdn.net/luoshengyang/article/details/8744683
文章参考:https://blog.csdn.net/huxin1875/article/details/87816465
文章参考:https://www.kaedea.com/2015/09/02/android/enable-multidex/
概述我们知道,Android进行发布的时候,都要进行编译成APK。那么Android Studio 按下编译按钮后发生了什么?
我们下面大概总结一下:
打包资源文件,生成R.java文件(使用工具AAPT)
处理AIDL文件,生成java代码(没有AIDL则忽略)
编译 java 文件,生成对应.class文件(java compiler)
.class 文件转换成dex文件(dex)
打包成没有签名的apk(使用工具apkBuilder)
使用签名工具给apk签名(使用工具JarSigner)
对签名后的.apk文件进行对齐处理,不进行对齐处理不能发布到Google Market(使用工具zipA ...
05.JNI之数组操作
[TOC]
文章参考:https://glumes.com/post/android/android-jni-array-operation/
概述在JNI中,java的基本数据类型可以直接与jni基本类型映射,但数组作为引用类型不能直接使用和修改,JNI提供了一组访问和处理数组的API。
创建数组使用New<Type>Array函数创建一个数组实例,其中Type为基本数据类型:Boolean、Byte、Char、Short、Int、Long、Float、Double,如NewIntArray。
1234jintArray array = env->NewIntArray(4);if (0 != array) { // 内存溢出的情况下,NewIntArray返回NULL}
基本数据类型数组JNI 中有两种数组操作,基础数据类型数组和对象数组,JNI 对待基础数据类型数组和对象数组是不一样的。
对于基本数据类型数组,JNI 都有和 Java 相对应的结构,在使用起来和基本数据类型的使用类似。
在 Android JNI 基础知识篇提到了 J ...