您的位置:首页 > 移动开发 > Android开发

android一年来学习的总结---项目梳理篇

2014-09-20 09:45 218 查看
一年了,其实说的上比较正式的项目是学校和X大合作的项目,我称之为CameraDemo,需要调用摄像头拍摄照片,并且对图片进行相应的处理。这个是做的时间最长的,从去年12月份校领导来找我,一直做到7月去北京那边做了半个月,中间实际刨除考试以及其他事务,真正在做这个项目的时间不超过5个月。其实现在看这个项目,首先就是比较冗余的,计划不明确。在我没去北京之前,我一直以为这个项目是学校自己的课题,后来才发现是一个合作项目,貌似挺牛x的,扯进来别的单位啥的,这个不表。但是这个项目却给我编程上的幼小心灵带来了巨大的伤害,那就是----改需求!本来就是个没有规划的事,现在想想确实觉着正常了!

吟诗一句,一入编程深似海,不改需求无人来!

现在来看这个项目,其实我做出个垃圾来,真的是不行。前期开发的时候,我从官网看Camera的API看了两天,然后扒下了官网的例子进行调整,调整到可以使用的时候,对其进行修改,所以CameraDemo的命名也是这么来的。然后下面是全部流程了,拍照------处理图片------返回继续,并且在界面上显示个处理后的数字啥的。就是吃了没规划的亏,于是就按照老湿的要求改,从界面到算法,改来改去,前几天改还是可以的,后面越改越烦,但还是忍住接着改(不要喷我!),一边改还得一边学Java缺失的东西,不断的去补漏子,修bug,前期没时间写博客,就去网上扒点有用的,转载一下,然后不满意的就自己改一下。感觉在改需求的轰炸下,自己提高了不少。

本来静态图片的处理做完了(静态图片的处理就是我拿样品过来进行一个抽样检测),准备考试中,突然一个电话把我叫到办公室,下达最新指示,目前项目准备上动态图片的检测,下边的样品不断走过,拍照检测每一份样品,处理过后在即将入袋的时候把次品挑走。我一听头就大了,一边想解决办法,一边看API吧,看看什么可以用的上的。然后就是北上列车了,在北京真心不爽,头几天还是可以的,大的框架好些,实现逻辑用半天想出来一个完美的方案,然后用2个小时搞定,大框架基本上两天内搞定了,剩下的时间就是看看优化的事情。在优化的时候完了,x大的老湿就要了命了,改需求还在其次,但是一个劲儿坚持这个东西必须这么实现,是不是太不现实了?我明确表示,时间控制的问题,不仅在于程序,而且在于平板的摄像头的速度,还有硬件。在我不断优化代码的时候,还得关注和硬件打交道,谁让我本专业是鼓捣硬件的啊!

在我活还没干完的时候,x大的老湿就去休假了,靠!这样谁还有心思去做东西?我目前只是个学生,你和我谈职业素养,我感觉有点早,但是要尽量把活干好,这个我觉着够了。在x大的时间里,还带着个妹子研究生(不对应该叫大姐,本人本科未完)一起做,感觉妹子的Java基础很坑啊,于是就帮她补补,其实帮她补得更多的是Android上的东西,最后给她留了个尾巴,告诉她怎么做,让她自己实现,也是逼她学点东西,否则过不了几天我又得去!在互相坑了几天后,大家集体离开,胜利逃亡回家了!其实他们老湿不靠谱的,同志们是靠谱的,毕竟都比我大,该有媳妇的也都找了,私下里吐槽他们老湿,也是不错的,互相开开玩笑,也是快乐的。这是那几天唯一快乐的事情了!

这就是第一个活,现在回想起来,主要的知识体系就是Camera相关的API,基础的东西除了Content Provider之外,四大组件都用上了,比较广泛的使用还是多线程与异步任务,顺便有点usb的东西,但是硬件是英飞凌的芯片,早就写好的东西,我只是扒下例程中关于和硬件连接的部分来进行修改,不过很多东西调试是非常麻烦的,需要不断找合适的位置,感觉还是比较难的。第二个比较操蛋的事情就是调试了。标准不一样不行,你达不到老湿的那个标准,就得继续调试,然后就是他那边一改硬件电路,我这边就得想办法改模块,能不能不要这样啊?所以希望在以后的时间中,干活之前规划好应该干什么,应该怎么走流程!

说一下这个程序的不足吧,首先是算法问题,应该用jni调用c来做,但是当时只有静态检测,所以直接把它写入Java代码了,后边改动态检测的时候这个是影响时间的重要因素,不过当时学的太少,并没有用这种方式来做,在动态检测下,并发是常事,所以用jni来写会节约不少时间!其次就是我在程序中使用了定时器来操作定时拍照和检测,后来回家想了想,这个实在不好用,因为会出现不同步的状况--就是你看到图片上的标注,和屏幕上显示的信息不一致,所以这是一个不太好的方式,在Android上呢,可以用 java.util.concurrent.ScheduledThreadPoolExecutor,或者用Handler机制做,有空需要研究一下。

这个活基本上就是入门了,尽管有这样那样的不足,但是毕竟是第一个正式的项目,比较重要!

然后下面就是非正式的东西了,首先是给一个大四的同学做了个天气预报,做出个基本界面来,使用了ViewPager+Fragment来表现三天的天气状况,确实不错,但是功能不全,城市选择的时候做的并不好!这个基本可以不提,算是练手了,三天就搞定了。

最后是九月份的电子设计的比赛了,本来是与我无关的,我也没报名(我一个鼓捣android的去和做硬件的凑啥热闹?)。就在比赛题目出来的那天,电话被打爆,拜托。兄弟还得上课啊,我回了俩电话就赶回实验室去找老湿了,楼上楼下的跑,见了4,5个老湿,基本上学院牛x的老湿都见了一遍,主题就一个,做蓝牙和wifi的android平板程序!本来碰上中秋节,得回家啊,又被留下了,唉。。。。

主要面对的老湿是宝虎哥,不是伯虎哥,我叫错了好几次!他那里五个小组,十五个人。都在做硬件,然后就拿了个u盘,打开他牛x的华硕超级本(双屏,一万多啊!),给我把网盘里的东西copy个遍!蓝牙的,wifi的都弄了遍,然后就是扔给我就让我干,我靠!简单粗暴,你好赖多给点消息再让我写。拿来的资料就一个蓝牙的还行,还一堆bug,只能在人家基础上改,看源码过程中就去学蓝牙的API,然后仿着蓝牙的界面更改,做wifi的东西,后边就是socket通信,而且是两边都是双向的,然后就是读取数据的问题,BufferedReader和InputStreamReader区分了半天,然后去理解Socket通信,去调整显示信息!最后做完了找老湿,接着就让我改,蓝牙的可用,但wifi的不行,毕竟wifi是自己手动来写,蓝牙是改造出来的,后边这两个都成了只接收数据去展示信息的平台,甚至提出能不能挂到服务器上,我靠!还是别做了!

在比赛交项目的最后一天,把我叫去,我很奇怪,他们为什么不先测试下再告诉我,而是把我拉去再检测,程序接收数据乱码!那就改。还得导入一个excel文档去检测学生数据,并且匹配显示各项指标。又一次把人逼死,我就抱着电脑过去改程序,写了四个小时,除了吃饭10分钟,其他时间就是写程序、调试!考验一个人的快速反应能力,就在这里!在编码格式修改n遍后,我还是用ASCII把问题解决了,唉,想想就头疼!可惜最后的最后,五个组功亏一篑,宝虎哥的程序没调好,导致所有组失败了!

一年的时间说长不长,说短也不短,我属于一个基本入门的新人,尽管很多东西还是不懂,但是整体上已经把握了整个体系,我觉着自己比较欠缺的就是对于开源框架的理解和使用,这应该是下一步工作的重点。在下一步做项目的过程中,一定先有个合理的规划,把需求分析搞明白,不至于改需求的时候变得那么费力气。还有就是调试的东西应该好好看看,比如Junit测试,感觉这个很重要。剩下的就是应该去看看整个的Android内核和内部运行体系,改变现有的观念,去思考未来的发展。重点是去找一个完整的项目来做,从头开始,从用户需求入手,分析一个项目,做出来,上线运营看看,尝试商业化转型!在下面的几天中,我将继续来巩固现有体系,尝试做一个类似微信聊天的工具,加上使用开源框架,微信作为行业的标杆,我觉着是十分有必要学习和研究的!

最后想说的是,快速反应,快速解决问题,准确定位,快速阅读,需求分析,对一个程序员来说十分重要!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: