欢迎进入济南计算机学会官方网站!
济南计算机学会
优秀论文
优秀论文
优秀论文
优秀论文 您的位置:首页>>优秀论文
AutoReply技术文档
2011-06-14 1576 返回列表

一、背景知识

Android系统:

AndroidGoogle20071105日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android系统不仅是应用于手机操作系统而且很快也要扩展到其它的平台,它最大的特点就是网络集成性很高,内部集成了大量的Google应用,如GmailReaderMapDocsYouTube等等,涵盖了生活中各个方面的网络应用,对长期使用网络,信息依赖度比较高的人群很合适。而且Android系统也是开放的平台,如今也有大量的软件提供者为Android系统提供软件。

Android的特点主要概括有:

    1、开放性

    2、应用程序无界限

    3、应用程序是在平的的条件下创建的

    4、应用程序可以轻松的嵌入网络

5、应用程序可以并行运行

二、AutoReply简介:

AutoReply——手机自动回复系统》是在Android SDK2.1上开发的一款实用性很强的应用程序,它的开发主要应用了Android的手机通讯API。可通过软件提供的“行动秘书”功能的提醒并自动开启预设置的不同“情景模式”,在用户不方便处理来电短信或遗漏来电短信的情况下,自动回复收到的短信息或打入的电话,及时通知对方自己不能回复的原因。AutoReply着眼于商务人士,旨在为商务人士的工作、学习和生活提供方便和实用,体现“科技改变生活”的理念。同时,它也适合其他不同人群的使用,它的独特的创意具备一定的商业开发前景。

通过以上简介并结合本软件的自身特点,AutoReply将实现如下的功能模块:

1、  情景模式:用于设置不同的适合用户需要的情景模式。

2、  行动秘书:用于用户设置提醒事件,并提供自动开启情景模式的功能。

3、  日志记录:用于保存用户在开启软件期间未接的所有来电以及是否留言等信息。

4、  录音管理:用于用户管理来电方对自己的留言管理。

5、  安全回复:用于对要回复的来电和短信进行过滤和审查。

所以,软件项目的整体架构图将如下图2.1所示:

2.1 AutoReply整体框架图

 

三、程序及其逻辑实现过程的描述

程序开发过程中,我们针对对项目进行的市场调查结果综合分析得到的功能模块来进行体系的架构,把总体体系结构分为用户界面设计、数据库设计、功能模块的设计和数据结构和算法的设计等四个主要的实现设计模块,最后对功能进行测试。我们的开发过程是使用面向对象的分析与设计并采用RUP法进行开发。

3.1给出了程序的总体实现的流程图:

以下将对程序的功能模块的实现做一详细介绍:

1、  情景模式

该功能模块中提供了关于来电话、短信进行自动回复,以及开启录音功能的接口,这些功能都允许用户选择开启或关闭,用户还可以设置情景模式退出的时间。此外,AutoReply还允许用户设置是否可以让对方发送预先设置好的中断标志来中断当前的情景模式。这些功能文件主要存放在包 com.android.userprofiles下:

UserAdapter.java:用来处理数据库保存数据的程序

UserProfilesSetting.java:用来设置情景模式以及设置自动回复功能的程序

UserProfilesSettingListAdapter.java:用来美化界面的程序

3.23.3分别给出了来电自动回复和来短信自动回复的逻辑实现流程:

在这里要注意一个重要问题:就是对于其他的使用自动回复软件的用户的处理情况。如果其他用户也安装有同样的自动回复软件,那么此时在回复对方的情况下势必会造成死循环的往复发送,为解决此类问题。对于同时使用AutoReply的用户而言,要在自动回复发送信息时,设置一条隐含指令(AutoReply:),其它安装有AutoReply的手机在接到短信后解析指令,如果短信息中包含 AutoReply: 指令则表示这是非人为参与,应当停止发送。而对于使用非AutoReply而是其它自动回复软件的用户,我们再接收到短信后解析它的短信内容,如果再有连续三条的短信内容都相同的情况下,AutoReply 会将它视为自动回复,此时的AutoReply会停止发送短信息。

要实现各部分功能必须要在AndroidManifest.xml添加的权限有:

<uses-permission android:name="android.permission.SEND_SMS"/>

    <uses-permission android:name="android.permission.CALL_PHONE"/> 

    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>

    <uses-permission android:name="android.permission.VIBRATE"/>

 

2、行动秘书

       行动秘书提供了对自定义提醒事件的管理,我们将用户在此处的UI中的设置都保存到Sqlite数据库中。此处关于行动秘书的各项选择设置是保存在数据表secretary中的。

       在行动秘书中默认的时间设置是用Calendar类来取得的系统默认当前时间,在保存的时候软件限定需要将时间的设置晚于当前时间。它提供了默认开启某项情景模式的功能,这里的情景模式都是在“情景模式”功能模块中定义的,这里要求secretary数据表中存储的字段secretarypattern的外键应该是userprofiles数据表的profilesname

       这里在行动秘书中设置好的情景模式,到达设置的时间后会自动开启。

这些功能文件主要存放在包 com.android. secretary下:

SecretaryAdapter.java:用于保存用户设置的信息

SecretaryAdd.java:用于显示用户添加界面。

3、日志记录

       日志记录主要是记录用户的来电信息的。在软件开启过程中,会启动一个服务一直监听来电,当有来电触发时,软件将会自动取得来电方的号码和联系人姓名,并将其记录在此。这里记录的来电情况在软件记录时分为:

(1)       对方来电,但未留言,用户未自动回复

(2)       对方来电,并且留言,用户未自动回复

(3)       对方来电,但未留言,用户已自动回复

(4)       对方来电,并且留言,用户已自动回复

通过来电方号码获得联系人姓名方法是:

public void handleCall(String incomingNumber){

           Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL,

                                incomingNumber);

           contactsCursor = context.getContentResolver().query(contactUri, null, incomingNumber , null, null);

           if(contactsCursor.moveToFirst()){

             int phoneNameIndex = contactsCursor.getColumnIndex(People.NAME);

             phoneNameStr = contactsCursor.getString(phoneNameIndex);

           }else{

             phoneNameStr = incomingNumber ;

           }

         }

这里要实现对来电号码和联系人的处理,必须要在AndroidManifest.xml中添加权限:

<application>  ..... 

<receiver android:name=".ServiceReceiver">

    <intent-filter>

      <action android:name="android.intent.action.PHONE_STATE" />

    </intent-filter> 

</receiver>

</application>

<uses-permission android:name="android.permission.READ_PHONE_STATE">

<uses-permission android:name="android.permission.READ_CONTACTS"/>

</uses-permission>

这些功能文件主要存放在包 com.android. logrecord下:

MessageAdapter.java LogMessageReply.java:用于提供用户回复给来电方信息的界面及实现

LogrecordAdapter.java:用于向数据库中保存关于日志记录的的信息

4、录音管理

       这里记录了来电方对用户的留言信息。我们为用户提供了对留言的播放、暂停、停止以及删除功能,实现方法分别为:

播放录音:public void playMusic()

暂停录音:public void pauseMusic()

停止录音:public void stopMusic()

删除录音:public void deleteMusic()

这里也要在AndroidManifest.xml中添加权限

<application>  ..... 

</activity>      

        <activity android:name="com.android.logrecord.RecordManager">

 </activity>

</application>

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

<uses-permission android:name="android.permission.CALL_PHONE"/> 

</uses-permission>

       此处的功能文件是:

       RecordManager.java:用于用户管理录音留言提供界面

       LogrecordAdapter.java:用于实现对留言的处理

5、安全回复

       此功能模块是针对一些特殊号码而设置的,开启此功能将会对一些系统号码(诸如:100860539等)和飞信、超信号码进行过滤。而只会对普通手机号码进行回复。软件默认:

移动 134.135.136.137.138.139. 147.150.151.152.157.158.159.187.188

联通130.131.132.155.156.185.186

电信133.153.180.189

在这里,我们用正则表达式来对手机号码进行约束:

public boolean checkPhoneNumber(String mobile) {

               String regex="^1(3[0-9]|5[012356789]|8[0789])\\d{8}$";

               Pattern   p   =   Pattern.compile(regex);  

               Matcher  m   =   p.matcher(mobile);  

               return m.find();

}

四、安装与运行

安装:

       如果你的手机所刷的固件是安卓自制的固件话,那么你的的手机中可能已经集成了“APK安装器”,你只需要把要安装的文件用读卡器拷贝到内存卡中。然后在在手机程序菜单中点“设置”进入,然后点击“应用程序”选项,拖动菜单到下端可以看到“APK安装器”,点击进入。安装器会自动搜索你内存卡中的安装程序,你只需选择AutoReply的程序名称点击安装即可。

       如果你的手机使用的是原生的或者没有集成程序安装器的ROM那么你需要去Market中下载一款名为App Installer(其实就是软件安装器)的软件。在Market中下载安装完成后,在程序菜单中就可以找到刚安装的App Installer了,使用方法同上。

运行:

AutoReply系统是在Android SDK2.1上开发的一款实用性很强的应用程序,它的开发主要应用了Android的手机通讯API。因此AutoReply的运行要求用户手机必须是Android操作系统的智能手机。由于软件提供有录音留言功能,所以要正常使用软件的留言功能要求手机安装有SDcard ,手机的SMS卡可以正常使用的。此外,为取得更好的兼容以及运行效果,Android 手机的操作系统版本最好是2.1或以上。

 

 

参考资料:

1、  盖索林、王世江 《Android开发入门指南》第二版  人民邮电出版社

2、  陈明 《软件工程》  中央广播电视大学出版社  20026

3、  E2Ecloud工作室  《深入浅出Google Android》人民邮电出版社

4、  杨丰盛  《Android应用开发揭秘》   机械工业出版社  出版日期:201001

5、  靳岩  姚尚朗    Google Android开发入门与实战》   人民邮电出版社

 

赛题评语:

 

    临沂师范学院的ITTA小组按照软件大赛“3G


二维码
济南计算机学会
电话:0531-88391234
地址:山东省济南市历城区舜华路1500号