开源夏令营--结题报告

时间飞快,转眼间就到了项目的最终验收,七月初在家里报名的情景还历历在目,不知不觉,我也从一个完全不懂JAVA的纯小白蜕变到终于完成自己第一个接手的项目。

这篇文章是对整个项目的总结,但各个要求的具体解决方法都在以往的博客中叙述详备,在此就简单提及下。


首先是关于Seadroid这个项目,简单来说就是要结合Seafile的特殊性给seadroid添加完善一些功能。


一、首先是最基本的文件操作功能。

1.删除一个文件或文件夹

2.移动、复制一个文件或文件夹

这些操作都是网盘类app的必备功能,具体实现起来要注意的大致有两点:这些操作本地没有实体文件,要给服务器发送相应的HTTP请求,再传回文件列表;而且在安卓中,涉及到HTTP请求的一些操作要新开线程,不可放入MainThread中。


二、第二个要求是给Seadroid添加拍照功能。

这个功能需要注意的是,因为安卓机型众多,直接调用Camer硬件并不容易完全兼容,好在安卓提供自带的照相app的接口,能帮我们解决这个问题。再有就是当使用startActivityForResult时,Camer返回的Data有两种形式。如果照片保存的路径未自定义,那么data就是照片的data。如果自定义了照片的保存路径,那么返回则是null。当初在实现这个功能时这个问题困扰了我很久。


以上的两个要求是第一个月的任务,具体解决方案详见我的中期总结,里面写的很详细了,此处就不浪费篇幅。


三、由于一些原因,我的任务略有调整。第三个任务改为对Seadroid的UI的一些变化——去掉Seadroid的抽屉栏,将UploadTasks和Accounts两个页面从ActionBar Overflow里弹出,并为所有Activity加入ActionBar Back的操作。

去掉抽屉栏的操作很简单,要删除相关代码即可,还要把部分有用的代码保留,放到适当的位置等等。只能说这个任务不仅需要一些阅读代码的基本功,还要考验细心程度。要把所有的情况所有的分支全部考虑完全,才能把代码改的干净,以免程序进入异常状态。

相对的,由于先前的UI使用了ActionBarFragment,所以UploadTasks、Files页面用Fragment实现的。为了视觉上的一致性,我们要把它们改为Activity,所以这个任务的最大难点都出现在将Fragment改为Activity中。不仅需要深入了解Fragment和Activity的生命周期,更要结合代码,将它们共有的功能抽丝剥茧的分离出来。其中最困扰我的是UploadTasks中要监听一个Service发出的广播。所以我又去恶补了下Service的相关知识,根据导师的指导最终完成了任务。

具体的操作我在六七周的博客中写的很详细,这里就简单带过。


四、最后的一个任务是给seadroid加软件锁。

这个功能的实现对于我这个小白来说有点难度,好在最后终于在8月30日的晚上攻克。

这个任务大致分为两个方面——因为我接手时Seadroid并没有Settings界面,于是要先写个设置界面,然后才可进行软件锁的设计。

Settings界面的设计我参考了大量的资料,最后定于使用SharedPreferences与Preferences控件来实现。遇到的第一个问题就是PreferencesActivity已经被抛弃不用了,改为PreferencesFragment。好在有上个任务的知识积累,如何统筹Fragment和Activity并没有占用很多时间。Preferences控件我选用的是CheckBox控件,由于Preferences控件操作的特殊性,如何控制CheckBox的值令我大费周章,一度在错误的方向探索。好在及时和导师交流,才悬崖勒马。

软件锁原定的是使用PinLock。但是考虑到PinLock安全性不高,并且不够人性化,最终确定的是使用手势密码(GestureLock)。这里不得不感谢安卓大牛们的共享,由于安卓原生支持手势锁,并且代码是开源,手势锁的核心模块我便拿来使用。但要注意的是 要搞明白核心模块提供的函数接口,这样实现起来便很容易。

最后一个任务的具体实现方法详见我第八周的博客,但由于要求的细节很多,并不能一一详述,仍需参照源码,源码在Github和CSDN CODE上都有,并且全开源。


--------------------

最后:

不管最终的检查结果如何,我都是满足的。因为在这个夏天我学习了太多知识,并且进行了相当的实战,这些宝贵的经历是什么都无法换来的。

可以说,通过这个夏令营,我才刚刚一只脚迈入了IT圈。结实了很多很牛的大神,也感受到了开源的精神。感谢林老师的悉心栽培以及Alf的很多建议,让我学会了如何使用Git进行Teamwork,并养成了良好的代码风格。可以说,因为这次夏令营我上了一个新的平台。

感谢林帅导师选中我给我这次宝贵的机会。感谢CSDN举办的这个活动给我们这些学生搭建的这个平台。


项目地址:http://code.csdn.net/os_camp/24/proposals/29

CSDN CODE:https://code.csdn.net/asv000/seadroid

Github:https://github.com/asv000/seadroid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值