项目介绍 - WideLee/iSchedule GitHub Wiki
iSchedule开发技术文档
一、作品简要介绍: iSchedule是一个日程-情景管理系统,用户可以根据自己的日程安排往iSchedule里面添加自己的在具体某天或某段时间(某些事件在某段时间内可能重复发生)内日程事件,并对具体的日程事件设置好自己认为合理的情景模式。不仅能够使大家方便管理自己的日程,最重要的是它可以根据你的日程时间将手机的情景模式自动切换成对应的你所设置的模式,可以减少一些尴尬的事情的发生。
二、需求分析: 我们生活的每一天都穿插着我们丰富多彩的日程。在上课或者会议过程中,如果先前忘了将手机的情景模式设置为静音或者震动模式,突然响起来总是一个很尴尬的事情,显得我们不够认真对待,不够严肃;但是如果我们在上课或者会议前把手机情景模式设置成了静音模式,然后下课却忘记了设置为有声音提醒的模式。这个疏忽导致我们有些重要的电话没法及时回复,有同学或老师或家里有要紧的事打电话联系我而我却不能及时回复,这将造成了我生活和工作上的诸多不便;而相对于商业界的精英或者责任重大的人来说可能仅仅因为错过了某个电话就极有可能造成巨大的损失。放眼四处,不难发现我们周围的许多同学老师等都被这种问题的所困扰,因此,像iSchedule这种能智能切换手机情景模式的日程-情景管理系统软件受到大家的热烈追捧,能为大家有效地解决烦恼,给工作与生活带来很大的方便。 iSchedule与国内一些现有类似智能情景模式切换系统软件比较的优越性: 国内现有的日程管理系统普遍有两种: (1)似于模仿原始的随身日历式的日程管理模式,可视化程度高,具有一定的用户亲和度,但操作和功能都较机械化。 (2)“记事本”型的事务记录提醒模式,将事务分类列出,并赋予提醒时间,可视化程度不高,不能方便查看日历,但是灵活度较强。 与国内同类软件相比,iSchedule的用户界面上本软件模仿随身日历,提高可视化程度,同时具有了记事本型日程管理的灵活度,这这样在提高可视化程度的同时又不失灵活度。而国外具有代表性的有苹果的专利名为“无限设备的设置强制实施的方法(Apparatus and methods for enforcement of policies upon a wireless device)”,该专利描述了一种可以根据不同环境自动改变iPhone声音的方法,包括GPS/运营商网络和WiFi网络。这种专利描述的系统可以根据周围环境的不同自动改变iPhone的情景模式。苹果依靠无线电技术实现了这种系统,比如当iPhone连接至特定的WiFi网络时,振铃最自动禁用。当你拿着iPhone进入课堂时,iPhone会自动切换至震动模式或睡眠模式,这也为iPhone的拥有着减少了很多尴尬。在iOS 5中,用户可以根据地点设置提醒事项应用,让iPhone在自己到家或办公室时提醒自己。苹果在最新的专利中也描述了相同的功能,实现方式也是通过GPS。 由于iSchedule正在不断完善阶段,在我们的初期版本中尚未涉及到网络连接问题,在这里我们只是通过用户所添加的日程事件来定时切换情景模式,在实现上iSchedule相对于苹果的应用较为简单,但是运行在android上的iSchedule通过简单的添加和设置一样可以做到在功能和苹果的水平接近。
三、概要设计: 这个应用可以分为两大部分,分别是日程管理以及定时修改情景模式。 第一是日程管理,第二是根据用户添加的日程定时修改手机的情景模式。日程管理部分我们使用了SQLite轻量型嵌入式数据库来永久保存信息,这个数据库管理系统有众多的优点,例如它很轻巧,占用的资源也很低,这对于资源有限的嵌入式或者移动设备来说是至关重要的,它的对数据库的操作也比流行的普通数据库要快。而且,虽然它很小巧,但能支持绝大多数的SQL语句,这对开发来说是十分方便的。然后使用了android的列表,按钮等控件完成了对UI的设计。 而对于定时修改情景模式部分,,我们使用了Android的闹钟管理器(AlarmManager),在特定的时刻或以固定的时间间隔发送广播,在接受广播的程序中实现情景模式的变更,还结合了数据库实现闹钟事件的持久化,具体实现方法如下: 在主程序(Main)中设计一个这样的闹钟,在每天的00点00分,发送广播给DiaryReceiver,后者接收到广播后就会从数据库中获取与当天有关的所有日程开始时间、结束时间,分别为它们设置闹钟事件,在相应时间发送广播到ModifyReceiver,后者实现情景模式的更改。考虑到设备重新开机的时候所有闹钟将会取消,因此设计一个开机启动事件,内容也为从数据库中获取与当天有关的所有日程,分别为它们设置闹钟(情景模式变更)事件,这样就实现了闹钟的持久化。