-
Android录制音频并使用Lame转成mp3
这篇文章主要介绍在Android平台上使用AudioRecord采集声音数据,于需要上传以及在其他平台设备上播放,所以使用Lame库将PCM数据进行编码转成Mp3格式,有关于声音采集的基础知识可以参考这篇笔记声音采集-笔记声音录制Android中使用AudioRecord录制声音,根据上面讲述的声音采集原理,需要传递给AudioRecord采样频率、采样位数和声道数,除此之外还需要传入两个参数,一个是声音源,一个是缓冲区大小。权限在Android中录制声音需要相应的权限,6.0需要动态申请...…
-
android opencv JNI开发环境搭建
千里之行,始于足下。网上很多opencv4android的教程都是通过导入opencv的java module进行开发的,因为之前一直在看opencv c++ 的开发流程,所以采用了JNI的方法直接编写c++代码来学习opencv。新建项目首先需要安装CMake以及NDK环境,没有安装的的可以直接百度。新建一个包含c++ support的项目,如下图所示,一路next就可以了。导入opencv需要下载opencv4android的sdkopencv 3.4.1下载地址下载完成后将.so...…
-
Bitmap 创建流程追踪
BitmapFactory.java public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts) { // we don't throw in this case, thus allowing the caller to only check // the cache, and not force the image to be decoded. ...…
-
奇妙的注解(一) 初识注解
雄关漫道真如铁,而今迈步从头越。注解作为Java的一个基础知识点非常重要,Android很多的框架都是基于注解搭建的,但是自己一直不够重视,从来没认真看过注解相关的知识点,所以每次信誓旦旦地要看看XXX的源码,大都无功而返。从哪里跌倒还是要从哪里爬起来,今天就和大家一起学习下注解相关的知识。主要学习下下面这些内容: 什么是注解,如何实现自己的注解 基于运行时注解的IOC框架 利用编译时注解生成java文件 开源代码的分析(ButterKnife,Retrofit)注解是什么 ...…
-
奇妙的注解(二) 通过运行时注解实现ViewInject
纸上得来终觉浅,绝知此事要躬行。奇妙的注解(一)初识注解上一篇我们对注解有了初步的了解,知道了注解主要分两种运行时注解以及编译时注解,这篇文章我们就一起学习一下XUtils是如何基于运行时注解实现ViewInject的。XUtils曾经也是个风靡一时的框架,集成了很多功能,作为一个初学者我对它也是爱不释手,对作者也是佩服得五体投地,但是随着学习的深入也逐渐了解到了为人诟病的效率问题(基于运行时注解以及反射),以及如此庞大的功能与单一职责原则相悖,在实际的开发中已不可能再去使用。但是打开...…
-
简单的Android带历史记录的搜索功能实现
这两天闲来无事,就把前短时间项目中的搜索功能抽取出来,重新写一下,搜索功能虽然简单,但是涉及到的知识点也挺多的,就当做一个总结吧。代码地址在最后面,话不多说,上效果图 ^_^ 历史记录的存储首先来说下关于历史记录的存储,历史记录的存储方式其实可以有很多方法,可以用sp,数据库等等,那么就直接开撸吧。说开撸你还真以为就直接开撸了,还是先想想吧,我们做历史记录存储的时候需要提供什么给调用者,其实很简单无非就是可以增删改查吗。为了遵守里氏替换原则,就先写了个抽象类BaseHistoryStor...…
-
《Android源码设计模式》笔记(十)——责任链模式
文章为阅读《Android源码设计模式解析与实战》的一些感悟与笔记,有理解错误的地方,欢迎指正,要领略精髓还是要自己去阅读原书。原书作者的博客Mr.Simpleaigestudio定义一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。责任链模式结构 抽象处理者(Handler):声明一个请求处理的方法,并在其中保持一个对下一个处理节点的Handler对象的引用。 具体处理者(ConcreteHandler):对请求进行处理,如果不能处理则将该请求转发给下一个节点上的请...…