- 博客(9)
- 资源 (7)
- 收藏
- 关注
原创 高质量程序好文分享之王垠《编程的智慧》
今天有幸读到了王垠博文《编程的智慧》,突然有一种知音得遇、相见恨晚之感。文中诸多观点自己非常赞同,这些观点的形成绝非易事,需要经过大量的实践编程,反思总结和得到大牛的指点云云。 编程中与我契合之极的一个词:优雅。是的,能够写出优雅的程序是我一直所追求的,什么性能、高质量编程完全可以用优雅二字概括,甚至可以从这二字中看出一个程序员的从容自信的性格。 这里将分享文中一些观点: 王垠《编程的智慧》原
2016-07-30 16:35:53 3181
原创 (精)戏说高质量代码
对于什么高质量程序可谓是仁者见仁,智者见智,今天也说说我理解的高质量程序。以下人物和场景均为假想,请勿对号入坐。1. 正确、稳定运行。 2. 架构清晰、可扩展性强。 3. 可读性强,有必要的注释,代码风格保持一致。这三条必须按其顺序排列,第一条看似简单,其实非常的难。 就以一小公司GS为例,公司初创,要为一套仪器紧急开发程序,为了控制成本,直接外包出去,当外包人员开发出代码v1.0时,能
2016-07-21 23:57:30 694
原创 Android 应用开发环境搭建
想起以前上学时候,MFC开发可谓红极一时。尤其是vc6.0这个工具,安装完毕之后,不但可以进行常用的console开发,也可以进行带界面的MFC开发,简单好用。 而今对于Android应用,开发环境需要小心配置,弄大半天可能连一个helloworld的界面程序的写不出来。今晚在ubuntu12上搭建了ADT和Android Studio,有些心得,分享一下。对于ADT和Android Studio
2016-07-20 23:26:15 612
原创 Android M6.0指纹框架概要
指纹识别与应用不算是什么新鲜事,很早之前各种书籍就介绍指纹识别算法。但是其在Android移动终端上的实现及应用却是个新鲜玩意,这和iPhone有不少差距啊,还好6.0正式推出指纹框架。指纹识别与应用的确有不少优点,用过iphone的人都知道指纹识别对于解锁、应用下载甚至是付款来说,都非常方便。一般来说,其核心有3点:一是指纹芯片的研发与支持(包括芯片采集能力、识别算法等)。二是基于指纹框架的
2016-07-16 00:55:08 3508 1
原创 stagefright框架下的awesomeplayer播放准备阶段
前文分析了AwesomePlayer的setDataSource阶段,对于已经分离好的音视频数据,下一步就是为其设置解码器,这一阶段称为 prepare。直接从AwesomePlayer::prepareAsync()开始,status_t AwesomePlayer::prepareAsync() { return prepareAsync_l();}status_t Awesome
2016-07-12 23:10:29 370
原创 stagefright框架下的awesomeplayer设置数据源阶段
Android的MediaPlayerService下一个重要的框架就是stagefright(演讲胆怯者),在它之下就是具体的播放器了。与其关系同等的是NuPlayer,本文将分析stagefright常规框架和一些关键技术。先看几个类的关系:class MediaPlayerBase : public RefBaseclass MediaPlayerInterface : pu
2016-07-10 23:45:16 617
原创 Android多媒体之MediaPlayerService
如同其它service一样,MediaPlayerService在Android架构中起着承上启下的作用。向上提供media相关的api,向下调用其它框架(opencore、stegefright)具体实现相关功能。 涉及到代理到MediaPlayerService的IPC在前文已经分析过了,所以这里重点讨 论实现。如apk调用setDataSource,经过Binder IPC会调用到Medi
2016-07-10 14:17:30 856
原创 Android多媒体研究之mediaservice
多媒体和网络在Android中占有举足轻重的地位,网络的重要性不必说,后有文分析。这里主要是面向消费者的多媒体,包括音频、视频、图片、动画等。可谓是传媒和各种算法的宠儿,同时在流媒体中还涉及到网络,因此多媒体与网络的交互将是研究的重点。还是利用源头分析法,从init进程开始,init.rc中启动mediaserverservice media /system/bin/mediaserver
2016-07-09 23:03:29 2355
原创 Android init进程一些容易忽视的技术细节
Android init进程作为用户空间第一个进程,做了很多系统初始化工作,其核心分为两块:一是属性,二是init.rc。此外,在具体的项目过程中,常和init进程打交道,里面有不少技术细节值得我们研究清楚。属性key-value大小限制bionic/libc/include/sys/System_properties.h#define PROP_NAME_MAX 32#
2016-07-08 23:18:44 1679
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人