Code

2011年5月7日星期六

iCreate: Progress 1

经过与小猫的讨论,我们最后决定做一个NUS Pathfinder。 顾名思义,也就是给它起始地点,目的地,会得到一条最近路线。这个相当于一个小的map engine了,因为它可以在很多地方用。比如说我们想到过的,可以plugin到课程表里,从课程表里拿到目的地,从GPS拿到起始地,这样学生就可以很方便的找到上课的地方。不过我们要先做这个map engine,然后再考虑其他的东西。

我有个大概的思路。我们的地图只是包涵NUS内部的地点,所以它的大小是一定的。我准备拿NUS网站上的地图,它很详尽,精确到了教室级别的,基本上我们每天可能会要去的地方上面都可以找到。最重要的是它是长方形的,这意味着,如果我知道四个角的坐标,我就能够知道里面任何一个建筑的坐标。这可以省去很多麻烦。

地图上每个潜在的目的地,如教室,讲堂,实验室,车站等等都会分配它一个节点。每个节点会记录坐标,楼层数,是不是汽车站,相邻的节点等。相邻的节点必须可以直接走通的,不需要经过其他的节点,这个是需要我实地测量的,这个也是最耗时的。一个节点网络会被组建起来。通过这个网络我们可以用寻路算法如Dijkstra 或者 A*。我比较看好A*,因为我们有特别的节点如车站,在距离很远的情况下,我们更应该选择车站。最后我们就给出一个路线,可以是在地图上标记出来的,也可以是一个list。

小猫准备写一下Spec和Design,不过要等到下个拜一。这两天我就研究了一下我们可能会遇到的问题,比如说地图在哪里可以找到,要有多少个level of detail,怎样pan和zoom地图。今天我准备看看怎样实现GPS。貌似除了GPS,我们还可以用Gyrometer来确定方向,这个可以作为enhancement。

2011年5月4日星期三

iCreate NUS mobile challenge

前几天一直在做我的super timer。经过摸索,大致完成了下面几个步骤:
1. setup sqlite3 database
2. create new profile using menu item and use listview to render
3. select a profile and send intent to a new activity to display
4. the profile display retrieve data from database according to id sent
5. use handler and runnable to create countdown timer
6. use relative layout to play buttons at bottom

如果继续做下去应该不需要多少天就可以完成。另外,我发现其实Android mart里已经有了一个这样的app叫做timer4me,它的界面很精美,可以看出developer用了很多心思。不过,还是有一些不足,比如说在run一个timer的时候,那个timer显示的太小了,不是很明显。setup 时间的时候只能用date picker不能set任意时间。当然这些需要的只是extra effort,也许developer 觉得根本就没有必要。不过我觉得这些可以算作是enhancement了。我的super timer就告一段落了,做这个本来就是为了熟悉一下android开发,而这个目的完全达到了。其实更重要的是我register了一个NUS的mobile app challenge, iCreate。

这个challenge是要develop android application for nus students。奖品很丰厚,第一名有一个tablet phone+S$2000。我跟小猫一起报名了。对于这个比赛,小猫和我都是信心满满。小猫是软件开发之后,呵呵,我又有android和web开发经验。相信我们的组合一定可以拿个好成绩。

比赛的submission deadline是7月17号,所以我们有差不多两个月的时间。我很想有一个很成功的软件开发的经验,所以我极度的想做好这个app,希望小猫能跟我一起加油。

2011年4月27日星期三

准备第一个android应用

最近有强烈的desire做一个android应用,并一直在研究sdk里的samples。基本上有了大概了解,现在想做一个简单的应用。这个应用暂且叫它, 智能计时器吧。基本上就是一个计时器,但在这个基础上做一些加工。

首先用户可以创建Profile。这些profile的主要数据是标题和时间。标题可以是像cook egg, 煮粥,等等类似的。这只是简单的一个textfield。 然后,可以设置时间,小时,分,秒。这个时间就是倒计时的时间。创建的Profile会被保存在SD卡里。

还有一个界面是纵向排列所有保存了的Profile。显示的东西包括Profile的标题缩略形式和时间。时间可以是在折叠菜单里面,或者就不要显示。用户可以点击Profile打开这个Profile的界面。这个界面里面会显示时间,然后是两个按钮,开始和重置。删除和修改Profile的选项可以放在Menu里面。倒计时会在这个界面里面开始,时间到了就会发出响声。

这个应用虽然简单,但会很有用,因为这些Customized Profile可以重复使用,不需要每次都重新设置时间。另外我可以加一些小的功能比如说便利贴到Profile,让这个智能计时器更加有用。

因为我明天有CS4247的考试,小猫的考试要到礼拜六早上(想要小猫设计架构),所以具体实现要等到下个礼拜。不过应该用不到几天就可以完成,毕竟这个东西不是很复杂。