Android入门学习了一段时间,做了一个小应用,下面进行了一些总结。
应用程序的功能简介:
整体分为两个部分:"铃声设置"、"智能情景模式"
第一部分:"铃声设置",即普通情景模式设置,它包含了两个小部分:
一是情景模式的选择"普通"或者"静音";
二是在"普通"模式下,可以进行"普通铃声设置",即"来电"和"短信"铃声的选择,已经手机铃声音量的调节。
第二部分:"智能情景模式",可以对每一天设置一个时间段和情景模式,如果选择了"开启",则当天到了预设的时间段,就 会启动预设的情景模式。
比如,今天是星期日,我设置了"周日"这一项为"开启",开始时间为"8:00",结束时间为"12:00",情景模式类型为"静音",在8:00--12:00期间,手机自动调节情景模式为"静音",在12:00后,又自动恢复为原来的情景模式。
上面罗列了APP所实现的功能,那么这些功能又是怎么实现的呢?接下来做一下简单的介绍。
首先,第一部分"铃声设置":
1. 大家看到的界面,想必都应该不陌生,这里用的都是Perference布局方式。
其中,前三个Activity,结合起来无非就展示了一个内容点 ---> "普通铃声设置" 是否 enable ,依赖于"普通"这个CheckBoxPreference的状态是否选中。
而任何时候,"普通"和"静音"只能选择一项。选择其中一项后,另一项就会变为不可选状态,即setEnabled(false)。
2. 第四个Activity,就是选择了"普通铃声设置"后,跳转过来的界面,没什么特别的,就布局了3个View,分别是 RingtonePreference 和 RingVolumePreference。
3. 第五个Activity,由于上面设置的View直接引用系统提供的RingtonePreference,所以选择后,直接跳到如图示 界面,系统的MediaScanner直接扫描了/mnt/sdcard中的铃声数据,并显示在列表中。来电铃声和短信铃声都一样的道理,如果用模拟器开发,则将ringtones和notifications两个文件夹复制到/mnt/sdcard目录下即可。
4. 第六个Activity,是自己写的一个类RingVolumePreference,继承自DialogPreference。在Activity中布局了 两个SeekBar,保存SeekBar的进度使用到了Android的轻量级数据库SQLite。
下面,是第二部分"智能情景模式":
1. 整个界面的布局是一个ListView,与其相关联的适配器Adapter有7个map,分别对应一周的每一天。而每个map里面有三部分:星期几、开始和结束时间、情景模式。
2. 点击其中某一天后,跳转至下一个Activity,该Activity可以进行当天所谓的智能情景模式的设置。这里用到的 数据存储方式同样是SQLite。
值得一提的是,手机是如何实现智能情景模式的呢?这也是该应用最核心的地方,大家可以不妨自己想一想该如何实现。
我这里的话,使用的是设置闹钟的方式实现的。时间段的切换则是通过一个Service进行监视系统的运行状态来实现。