OpenGL ES是OpenGL的子集,针对嵌入式系统和移动设备所设计.
录音功能一般使用MediaRecorder来进行,这种录音方式比较简单,设置好声音源、采样率和编码格式等参数即可,最终得到的是编码压缩后的数据。不过由于我们需要对音频原始数据进行处理,例如混音、变声等操作,所以MediaRecorder不能满足我们的要求。这里介绍下另一种录音工具类 AudioRecord。通过它我们可以对原始音频数据进行采集,以便于后续加工。
自从引入了ButterKnife,再也不用频繁的findViewById了,也不用手动setOnClickListener了。此框架小而精致,实乃提高开发效率之必备良品。
OkHttp是一个非常强大的网络请求库,相比HttpClient、Volley和HttpUrlConnection有很大的优势,Android6.0以后废除了HttpClient,4.4以后HttpUrlConnection底层也是用OkHttp实现的,而Volley已经停止维护了,OkHttp是目前使用最广泛的网络请求库。以往只是停留在会用的阶段,今天来看下OkHttp内部具体是如何实现的。
代理模式和装饰模式十分相似,连类图都长得差不多,不过二者用来解决的问题不同,代理模式为其它对象提供一种代理,目的是为了隐藏其具体的实现细节和控制这个对象的访问(就比如通过代理上网)。而装饰模式是通过迭代来为一个对象增加额外的行为,而这个对象本身不变(比如人穿了多件衣服,但人本身不变)。在这里要加以区分。
当我们去设计一个比较简单的类的构造方式时,一般情况下,直接重载几个不同参数的构造方法即可。但当类的成员变量比较多的时候,可能某些成员变量是必要的,某些又是可选的。有些是创建的时候需要传入的,有些又是对象创建完成之后才传的。这样的话重载构造方法的方式就会让人感到很迷茫,必须写一大堆注释来进行说明。这个时候,用Builder模式来进行对象的构建是十分合理的。
最近一段时间都没有写博客,感觉自己变懒了,这几天反省了一下,决定写点什么,想了想,准备写一下自己对于设计模式的理解。设计模式的思想对于代码的解耦和灵活性有很大的帮助,尤其是项目做的越来越大的时候,合理的使用设计模式的思想来进行代码结构的设计有利于以后的的扩展和维护。
在linux下编译FFmpeg很方便,但在Windows下还是有不少坑的,试了下使用Windows+MinGW编译FFmpeg,过程还是挺顺利的。记录一下(这里针对的平台是Android)。
众所周知,由于GFW的存在,Google,YouTube等一系列网站被挡在了墙外,这样一来很多优质资源都无法访问。作为一名程序猿,平时工作需要查阅不少资料,用百度很不方便。之前也用过第三方的VPN和免费蓝灯,但是总感觉不安全,而且不是很稳定。而自己除了本职工作之外,平时也喜欢研究一些相关技术,所以就萌生了自己搭建VPN的想法。经过一段时间的折腾,VPN是搭好了,结果发现完全连不上,后来了解到使用PPTP协议的VPN早都被封了。之后经过研究,发现Shadowsocks代理很方便,自己也成功的搭建了服务。这里总结下自己搭建的过程,以供以后参阅: