基于Android平台的自发短信系统设计与实现
摘要:基于Android手机操作系统开发了一款自发短信系统。
利用SQLite数据库存储技术、Service启动服务技术及Runnable接口,设计并实现了好友管理、短信管理、后台检测发送短信等功能,并给出了运行效果图。
该系统的实现为指定时间发送定制短信提供了很大的方便性。
关键词: SQLite;后台检测; Service;自发短信
随着3G业务的全面推广,使用手机进行实时交流的需求也越来越大,短信服务由于其快捷方便和良好的交互性[1]广受青睐。
通常使用手机发送短信的形式比较单一,在需要发送信息时必须由人工干预将短信发送给一个或多个联系人,而且同时发给多人时,短信内容相同。
而人们在繁忙的工作和学习中往往会忘记一些必要的短信祝福、合作提醒等。
为了解决这一问题,本文在Android平台下,采用SharedPreferences、SQLite进行数据存储,利用Service 组件实现系统后台运行,使用BaseAdapter适配器进行用户界面显示,设计了一个自发短信系统。
该系统可以随意设置短信内容、发送时间,在指定的时间当天,由系统自动给好友、生意伙伴等发送祝福短信、合作提醒,也可以设置给多人发送不同的短信。
1 Android系统Android是Google开发的基于Linux开放性内核的手机操作系统,目前已广泛应用于智能手机中。
Android系统的软件结构包含操作系统、中间件及一些关键的平台应用程序。
该系统采用软件堆层(Software Stack)的架构[2-3],主要分为4个部分:(1)应用层,采用Java 语言编写,运行在Dalvik虚拟机,供用户使用的应用程序;(2)应用框架层,使用API框架编写Google发布的核心应用,开发人员可以使用这些框架开发自己的应用; (3)系统运行库层;(4)Linux内核层,即硬件和软件栈之间的抽象层,提供了Android系统的核心服务。
2 系统设计自发短信系统是用户预先设定的信息内容和发送时间的好友列表,系统每24 h 检测一次好友信息。
当好友的发送时间与手机设定时间一致时,就将该好友添加到发送集合中,由系统自动完成定制短信的发送。
2.1 系统功能设计按照用户使用短信服务的习惯和需求,自发短信系统的主要功能模块。
(1)好友管理模块:显示已添加的好友信息(包括头像、姓名、倒计时天数及发送状态等);添加、修改、删除好友信息。
(2)短信管理模块:显示用户设置的待发送短信内容;修改短信内容。
(3)后台检测服务模块:该模块不间断地在后台运行,检测好友列表中的发送日期与手机日期是否相同。
如果相同,则根据选定的短信内容自动地向该好友发送信息,并在发送完成后修改发送状态信息。
如果不相同,则修改倒计时天数。
2.2 数据存储设计随着软件应用程序逐渐模块化,嵌入式数据库可直接在应用程序进程中运行,提供了零配置运行模式,并且资源占用非常少。
Android系统支持多种数据存储技术,其中有简单信息存储方式SharedPreferences[4],也有内存占用少、效率高。
支持 SQL 语言的轻量级嵌入式数据库引擎——SQLite。
在进行开发设计时,结合功能需求和软件性能,本系统采用了SharedPreferences进行简单短信信息存储,及SQLite数据库存储数据量较大的好友信息。
短信信息以sms_db.xml为文件名,存储在默认位置/data/data/<包名>/shared_prefs目录下,其内容格式如下:<?xml version=′1.0′encoding=′utf-8′standalone=′yes&prime ;?> <map> <string name="sms1">祝宝贝生日快乐,天天开心!</string> <string name="sms2">开业大吉,生意兴隆!</string>…… </map>数据库myinformation.db存储好友信息,结构如表1所示。
3 系统功能实现系统整体使用MVC模式设计,将数据(Model)、界面(View)、控制
(Controller)分为不同的模块,不仅使程序结构更加清晰,代码更加健壮,而且降低了程
序之间的耦合度,提高了模块化程度[5]。
3.1 好友管理 3.1.1 好友列表显示界面系统
运行后,首先调用MainActivity.java显示主界面,。
主界面上的好友列表由ListView组件
来实现,该组件中的数据由继承了BaseAdapter自定义的MainListAdapter适配器类来填充。
实现代码如下:
Cursor c = managedQuery(MyInformation.CONNECT_URI,MyInformation.SelectStrArr,
null, null,MyInformation.DEFAULT_SORT_ORDER); List<User> mList = new
ArrayList<User>(); c.moveToFirst(); // 实例化游标对象,查找数据
库if (c.getCount() > 0) { do { mList.add(new
User(c)); } while (c.moveToNext()); } c.close(); ListView
mainListView = (ListView) findViewById(R.id.mainlist); // 添加用户到集合MainListAdapter mainListAdapter = new MainListAdapter
(this, mList); // 实例化自定义适配器
mainListView.setAdapter(mainListAdapter); // 给
ListView设置适配器3.1.2 添加好友信息界面用户单击图3主界面上的“添加好
友”菜单后,将执行如下代码:
Intent intentAdd = new Intent(MainActivity.this, InformationAdd.class); MainActivity.this.startActivity(intentAdd) 然后显示“添加好友信息”
界面。
通过此界面,可以设置好友姓名、。