五.拍照存储相片过程分析
2014-10-10 11:02
274 查看
二、过程说明
初始化过程不详细介绍。可以根据上述时序图进行分析。详细介绍拍照过程。
1、点击拍照按钮,拍照按钮是ShutterButton类的实例。点击后,调用performClick方法。在这个方法里面,有语句mListener.onShutterButtonClick();。其中mListener 是PhotoController的实例,也就是在PhotoUI类里面的创建的PhotoController的对象mController。mController的实例,其实是通过PhotoModule 的 init方法里面的mUI = new PhotoUI(activity, this,
parent);语句,调用PhotoUI构造函数。第二个参数就是传给mController的值,就是PhotoModule的实例。所以mListener.onShutterButtonClick();就是调用PhotoModule的onShutterButtonClick方法。
2、在onShutterButtonClick方法里,执行mFocusManager.doSnap();语句,调用FocusOverlayManager的doSnap方法。然后再调用capture方法。再调用PhotoModule方法的capture方法。在这个方法里,执行语句
mCameraDevice.takePicture(mHandler,
newShutterCallback(!animateBefore),
mRawPictureCallback,mPostViewPictureCallback,
new JpegPictureCallback(loc));
分析得知,拍照后回调JpegPictureCallback 类的onPictureTaken方法。在这个方法里,有语句
mActivity.getMediaSaveService().addImage(
jpegData, title, date,mLocation, width, height,
orientation, exif,mOnMediaSavedListener, mContentResolver);
其中mActivity.getMediaSaveService()获取的是MediaSaveService的对象。调用MediaSaveService的addImage方法。其中语句
ImageSaveTask t = new ImageSaveTask(data, title, date,
(loc == null) ? null : newLocation(loc),
width, height, orientation,exif, resolver, l);
当执行t.execute();的时候,执行ImageSaveTask类的doInBackground方法。在这个方法里,调用Storage.addImage(resolver, title, date, loc, orientation, exif,data, width, height);语句。然后调用 Storage 类的
writeFile(path, jpeg);来存储拍的照片。
相关文章推荐
- 几个功能强大的分析SQL Server数据库结构的存储过程
- 一个简单存储过程的性能分析
- Oracle表的分析统计及应用的存储过程
- Sql Server 系统存储过程分析 2 - 数据库引擎存储过程
- Sql Server 系统存储过程分析 1 - 目录存储过程
- .Text分页技术(1)分页的存储过程分析
- 聚类存储过程分析
- 存储过程的分析与使用
- DB Optimizer:数据库SQL代码分析调试优化,数据库存储过程优化,数据库负载测试
- 浅谈SQL Server所实现创建分页功能的存储过程的分析及代码
- sql server 存储过程的优化.(变量表,临时表的简单分析)
- VB6:编写一个分析sqlserver存储过程执行语句"execute procedurename par1,par2,......."语法是否正确的函数
- SQL Server 索引使用分析(3)- 通用分页显示存储过程
- Sql Server 系统存储过程分析 1 - 目录存储过程
- 千万条数据的通用存储过程分析
- sql server 存储过程中使用变量表,临时表的分析(续)
- sql server 存储过程的优化.(变量表,临时表的简单分析) (转)
- 存储过程失效原因分析与解决办法
- 关于SQL分页存储过程的分析
- 聚类存储过程分析