Code

2011年6月12日星期日

iCreate: Progress 3

跟小猫某次大吵之后,发现我的确有点自私。为了一小小的比赛项目,强占小猫这么多时间,这些时间本来是应该作为考试之后relax的,结果整天被我催促着,换作是谁也都受不了。还是等小猫回来之后有时间在做点简单的部分吧。
这段时间基本上就是我一个人做这个project了。我把windows7删掉了,换了ubuntu11.04。本来的目的不是为了project,因为我玩游戏有点上瘾,想在ub上没什么游戏玩所以就换了系统。用了几天之后发现ub相当好用,不但没费什么功夫就把所有平常要用的东西装好了,比如输入法,而且新的unity UI用起来也是相当的cool。值得一提的是预装的libreOffice跟MS office用户体验已经差不多了。我用了一下libreCalc (aka. MS excel), 所有界面都差不多,计算功能也是一样的,相当好。有点扯远了,我想说的是在ub 11.04上编程是非常爽的一件事情。不会有在Windows下那么多的config, 很多compiler也都有预装。eclipse 在ub下运行完美无缺,很容易的装了Android SDK和ADT。最近想玩玩zeromq就装了个cdt plugin,一切都是那么顺利。git也是很容易就装上了。linux的一大优点是什么东西都可以在terminal里跑,万能的terminal啊。
装好android 环境之后我很快的就继续了iCreate。我把database 用sqlite database browser制作好,然后直接从asset folder拷贝到db folder。为了尽量的减少db io, 我用了一个cache class,一开始就把所有会用到的node都load到memory然后进行处理。显然这样会占用大量内存,但鉴于nus的节点是有限的,如果一个节点30 B,100节点是3kB还行吧。其实最占内存的是地图,为了能在上面做overlay,我需要一个temp bitmap它的大小需要跟原地图一样,这样我的内存使用量就翻倍了导致我不能再avd上用高res的地图。虽然在手机上可以。我的想法是先做出来看看吧,优化留给以后吧。
我在地图里放几个com1 到 central library的节点,还有从com2到computer center的所有车站。然后写了pathfinder class。基本上是可以找出正确的路线的。
但我跟小猫上次讨论了使用A*同时计算走路路线和坐车路线是不行的,所以在现有的基础上我把坐车路线的算法分离开了。我现在会同时计算两条路线走路和坐车,有点像google吧。这个我昨晚把它实现了,因为数据还不完全,所以还没有测试。


另外,我制作了一个listview放在主页下面的空位上来显示搜索到的路线。我觉得这样UI显得紧凑一点。然后也加入了自己定位的部分,系统会自动列出靠近的地点供用户选择。
如果pathfinding测试没什么问题,剩下的事情就是在地图上label路线了。我们需要一些标记图片来表起点终点,和路线,类似google map上的那些气球。
可能UI还需要修改,这些等小猫回来在讨论。
git上的repo我也整理了一下,现在只剩下一个icreate的repo。之前我不小心把新写的code都删掉了没有backup,结果花了一晚上重写所有的改动。现在学乖了,要经常git push。

 In essence, the Linux kernel is a bundle of device drivers that
communicate with hardware and reveal themselves as a file system.

没有评论: