今天希望进行的改动是对onPictureTaken()方法进行改动以实现照片存储在sdcard里,但在这之前,更重要的是进行程序的重构,用《深入浅出Android》作者Gasolin的话说:“可运作的程序与可维护的程序之间,还有一道难以言说的鸿沟”。
为了使代码简洁,对代码进行MVC模式的改造,即分离model,view,control.代码暂时不贴,大概就是把所有界面元件的宣告都写到findViews()里,所有View被Click后的执行动作都放到setListener()里。
另外,为了使IsiCamera1Activity类里的核心方法onCreate尽量短,把能‘外包’的代码都用private method提取出去。否则onCreate函数会变得奇长无比并几乎无法阅读(满眼都是注释的感觉太糟了)
在改造过程中我参考了《Android开发应用实战详解》里的Camera例程,希望实现里面的拍完一张以后,照下来的照片停留片刻,又能接着拍下一张。他采取的做法是拍照->储存->释放Camera camera->再次实例化camera(代码如下)
camera=Camera.open();
//但是在google tutorial给的代码里,Camera.open()方法写了,但是找不到在哪里调用过!放在这里备案以免忘记。
在google给的程序里 camera = Camera.open()出现在了interface SurfaceHolder.Callback的abstract void surfaceCreated()里面,代码如下:
@Override
public void sur