基于Android的智能聊天软件的设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1绪论
1.1开发背景
Android中文名字称为安卓,原本的含义是指机器人,2007年Google公司宣布其为开源手机操作系统的名称,从那以后Android常常以操作系统的身份出现在人们视野。Android操作系统得益于开放性、开源性的特点,促使大量安卓应用软件的诞生。
目前安卓聊天软件通常分为两种架构模式:(一)B/S架构:浏览器/服务器模式,省去了下载客户端软件这一步,直接在浏览器上使用类似于客户端的界面来进行信息的发送与接收。较为常见的有:微信网页版,webQQ等;(二)C/S架构:客户/服务器模式,用户先下载客户端软件,通过客户端软件来进行信息的交流。较为常见的有:QQ、微信、陌陌、YY等。
1.2课题意义
线上聊天最好的情况是双方都有空、都愿意,这样网络聊天才能正常进行。常常会有这样那样的情况,比如对方不愿意跟你聊天,或者刚好有事没空陪你聊天。为了及时倾述自己的心声,又遇到上述情况便需要寻找一个新的解决方案。
本文研究的智能聊天软件可以为倾述者提供一个完美的倾听对象,它会不厌其烦的倾听,同时也会立刻回复你消息。它既是你的开心果,又是你的受气桶,很好的调节你的情绪,给生活带来多一份乐趣。
所以本课题具有积极的实际意义,前景一片光明。
1.3研究内容
本文将对基于Android的智能聊天软件进行需求分析、总体设计、UI界面设计、编写软件代码、测试软件等功能。该软件需要实现背景音乐的播放与关闭功能、文字信息的发送与接收功能。
论文的详细安排是:
第一章:绪论。主要描述项目的背景、产品的现实意义、未来发展前景,简单介绍常见一些线上聊天方式、聊天软件,分析了为什么需要开发这样一款软件的原因,最后指出论文的主要工作,以及项目实现的功能模块。
第二章:系统理论分析和相关技术介绍。对软件进行了详细的需求分析并介绍了项目开发所使用的技术,比如:软件用户的需求分析、Android操作系统的架构介绍、图灵机器人平台的就是。
第三章:软件设计与实现。对软件的相关类进行了详细介绍,对界面设计进行细致的分析并附上了截图展示,对软件重要功能进行了代码展示与分析。
第四章:系统测试。展示系统的测试用例和系统各功能的运行情况。
第五章:反思与展望。陈述软件存在的缺陷与不足,介绍完成整个项目的经验,对软件未实现的新功能展开假设与设想。
1.4本章小结
本章着重阐述了这款应用软件的开发背景、课题意义和研究内容。有了上述三个部分的介绍,为接下来的需求分析做好铺垫。
?
2软件需求分析
2.1技术介绍
2.1.1软件开发的工具和环境

发环境:Android studio
开发语言:Java、XML
模拟器平台:AVD
手机运行平台:Android2.0及以上版本
开发软件辅助的插件:SDK、JDK
核心支持的网络平台:图灵机器人
2.1.2 Android studio介绍
它是谷歌发布的一款Android集成开发工具,是一个新的Android开发环境,类似于eclipse,并且提供了集成的Android开发工具用来开发和调试。
2.1.3图灵机器人介绍
通过图灵机器人,开发者可以高效的创建专属的聊天机器人,图灵机器人对中文语义的理解准确率高达90%,它具有智能对话、知识库、技能服务三大核心功能。
2.1.4安装SDK和JDK
JDK安装:根据电脑的系统配置,在oracle官网下载相应的JDK,下载完后再电脑上进行安装。安装完成,以Windows操作系统为例,进入DOS系统将位置切换到安装Java目录的bin文件,输入Java,查看是否成功安装。上述正常,接着配置Java。在桌面找到计算机(不同电脑名称有所不同),打开属性-高级系统设置-环境变量,(1)系统变量中添加系统变量,变量名:JAVA_HOME,变量值填下载时相应的路径;(2)修改系统变量path,双击path值进入编辑模式,新建%JAVA_HOME%\bin、%JAVA_HOME%\jre\bin点击确定;(3)再添加一个系统变量,变量名: CLASS_PATH,变量值为。;JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;。完成上面三步,再次进入DOS系统,输入Java进行验证是否配置成功。
SDK安装:在安装Android studio时,会顺带安装SDK,注意SDK安装时要设置相应的路径。
2.2需求分析
2.2.1主要参与者
(一)用户:在使用软件的过程中,用户所使用的功能是:聊天文字的发送、背景音乐的播放与关闭。
(二)系统:系统根据用户的操作,去做出相应的反应,如回复聊天信息,播放背景音乐,关闭背景音乐。
2.2.2功能需求
这款基于Android的智能聊天软件主要实现智能聊天、音乐播放等功能,分为两大模块:聊天主界面模块、背景音乐控制模块。
(一)聊天主界面模块:主要有展示聊天信息的界面区域、聊天信息输入框、发送按钮。
(二)背景音乐控制模块:由应用栏的菜单键实现,用来控制音乐的播放与关闭。
2.2.3性能需求
依据上面的分析,性能需求是对系统的可靠性和用户体验等方面进行考虑。在项目设计时,遵循如下原则:
(一)可操作性:用户在使用软件时,界面要简洁、直观、形象。在使用过程中要有必要的提示,例如断网提示、未输入聊天信息的提示,来保证用户正确使用该应用。
(二)可移植性:研发出来的软件要能够在不同版本的Android系统、不同的Android手机上正常运行。
(三)实用性:要从用户的实际需求出发去开发软件的功能。
(四)可靠性:系统需要具备

一个优良的运行环境,保证长时间操作不出错、系统性能稳定,让用户能有耐心的使用该软件。
(五)可维护性:软件在研发的过程中不仅要确保用户需求功能的实现,同时还要考虑未来用户需求发生变化时,如何去更改和完善软件的功能,从而来保证软件的可持续性。
2.3本章小结
本章主要介绍了项目要求和需求分析,其中项目要求包含开发环境的介绍、开发环境的搭建、开发需要的工具;需求分析包含主要参与者、功能需求、性能需求。
主要参与者包含了用户和系统;功能需求包含两大模块,聊天主界面模块和背景音乐控制模块;性能需求又涵盖了可操作性、可移植性、实用性、可靠性和可维护性,这五大原则。
?
3软件设计与实现
3.1相关类介绍
开发软件用到很多类,为了梳理各个类在该软件中所承担的任务,将对各个类所具有的功能进行简明的介绍。
(一)ChatActivity:核心工作类,对软件的界面进行初始化,显示第一次聊天对话的问候语。在该类中通过调用其它类来实现软件的全部功能,同时还实现了一个软件界面设计问题——在现实手机运行该软件可以看到在应用栏的菜单键。
(二)ChatMessage:聊天消息实体类,主要实现了ChatMessage对象的初始化,其中还定义了ChatMessage对象的一些方法,比如获取聊天信息、设置聊天信息、获取聊天信息的类型、设置聊天信息的类型、获取聊天的日期与时间、设置聊天的日期与时间。
(三)ChatMessageAdapter:聊天消息适配器工具类,是用来创建聊天消息适配器对象,该适配器是连接后端数据和前端UI界面的桥梁。其中包含ChatMessageAdapter对象的初始化,还重新定义了一些方法,比如获取项目item数量、获取当前选项、获取当前选项的ID、获取项目视图的类型、获取当前的项目界面。
(四)Config:配置类,是用来连接图灵机器人平台的关键,其中只包含URL_KEY、APP_KEY两个属性,属性的值直接到图灵机器人平台去申请。
(五)DateUtils:格式化日期时间工具类,其中只有一个方法,用来设置日期和时间的格式并以字符串的形式进行显示。
(六)HttpUtils:网络请求类,里面有两个重要的方法,它们的作用是:发送信息到服务器、接收服务器返回的消息。
(七)Music:音乐工具类,其中定义了一个属性和两个方法,两个方法的作用分别为:音乐播放、音乐停止。
(八)Result:服务器回复信息类,是用来映射服务器返回数据,其中涵盖四个方法分别为:获取code码、安置code码、获取信息、安置信息。
(九)SettingsActivity:选项设置布局类,用来定义应用栏菜单键对应的专属界面,其中拥有两个方法,它们

分别为:创建这个专属界面、判断以bgsound命名的系统属性是否存在。
3.2界面设计
一个美观的应用界面,可以给用户带来更好的体验。该款智能聊天软件有两大界面:聊天主界面、简单的选项设置微界面。本小节将具体的介绍两个界面的实现过程。
3.2.1聊天主界面
聊天界面最上端是一个TextView用来展示标题“阿宝陪您聊聊天”;中部放置了一张背景图片,在背景图片上是一个ListView用来展示所有的聊天对话;在ListView中的每一栏都含有一个item用来显示聊天双方的消息对话,每个item中包含三个TextView和一个ImageView,分别用来显示聊天的时间日期、聊天者的称呼、聊天的内容和展示聊天者的头像;界面最底端有一个 EditView(左)和一个 Button(右),它们是并排排放,分别用来输入聊天信息、点击发送聊天信息。如图3.1所示:
图3.1聊天主界面
3.2.2选项设置微界面
单击应用栏的菜单键,即可看见该界面。其中包含了一个标题“播放背景音乐”和一个选项框。勾选就循环播放背景音乐,不选则停止播放。默认情况下是勾选,也就是一打开软件就自动循环播放音乐。如图3.2所示:
图3.2选项设置微界面
3.3功能实现
本小节将介绍智能聊天功能的具体实现过程,还有背景音乐播放与关闭的实现过程。
3.3.1背景音乐的播放与关闭
在进行聊天时不显示背景音乐的界面,用户不直接与其交互,背景音乐会在后台自主运行。
在Music.java文件中定义了一个Mediaplayer播放器,同时定义了播放与关闭两个方法:
public class Music {
private static MediaPlayer mp = null;
public static void play(Context context, int resource) {
stop(context);
if (SettingsActivity.getBgSound(context)) {
mp = MediaPlayer.create(context, resource);
mp.setLooping(true);
mp.start();
}
}
public static void stop(Context context) {
if (mp != null) {
mp.stop();
mp.release();
mp = null;
}
}
}
在ChatActivity.java文件中定义了是否勾选选项框来控制音乐的播放:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=new MenuInflater(this);// MenuInflater是用来实例化Menu目录下的Menu布局文件
inflater.inflate(R.menu.setting, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getGroupId()==R.id.setting){
if(item.isChecked()){
item.setChecked(false);//表示选项没有选中
Music.stop(this);
}else{
item.setChecked(true);//表示选项已经选中
Music.play(this, R.raw.my_sun);
}
}
return true;
}
@Override
protected void onPause() {
Music.stop(t

his);
super.onPause();
}
@Override
protected void onResume() {
Music.play(this, R.raw.my_sun);
super.onResume();
}
在SettingsActivity.java文件中定义了控制背景音乐的为界面,以及监测一个与背景音乐相关的系统属性是否存在:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);//将setting文件设置的布局作为选项设置布局文件
}
public static boolean getBgSound(Context context){
return PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean("bgsound",true);//getBoolean之前的方法,用来获取存储在应用的一些配置信息,getBoolean用来判断以参数bgsound命名的系统属性是否存在
}
3.3.2智能聊天的实现
智能聊天需要向图灵机器人平台发送聊天的消息,在接收来自该平台服务器回复的信息,从而实现聊天的功能。
在Config.java文件中定义了两个属性,属性的值直接到图灵机器人平台去申请。该类就使软件与图灵机器人平台相互关联起来:
public class Config {
public static final String URL_KEY = "/openapi/api";
public static final String APP_KEY = "ca54295cabdd45f0b9d5e8cb9f6797a4";//此处是你申请的图灵机器人Apikey
}
在DateUtils.java文件中定义了一个方法,实现聊天时间日期的格式化:
public class DateUtils {
@SuppressLint("SimpleDateFormat")
public static String dateToString(Date date) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return df.format(date);
}
在HttpUtils.java文件用来实现网络请求任务,其中含有两个重要方法,实现了发送聊天信息至服务器和接收来自服务器回复的聊天信息:
public class HttpUtils {
/**
* 发送消息到服务器
*
* @param message :发送的消息
* @return:消息对象
*/
public static ChatMessage sendMessage(String message) {
ChatMessage chatMessage = new ChatMessage();
String gsonResult = doGet(message);
Gson gson = new Gson();
Result result = null;
if (gsonResult != null) {
try {
result = gson.fromJson(gsonResult, Result.class);
chatMessage.setMessage(result.getText());
} catch (Exception e) {
chatMessage.setMessage("服务器繁忙,请稍候再试...");
}
}
chatMessage.setData(new Date());
chatMessage.setType(ChatMessage.Type.INCOUNT);
return chatMessage;
}
/**
* get请求
*
* @param message :发送的话
* @return:数据
*/
public static String doGet(String message) {
String result = "";
String url = setParmat(message);
System.out.println("------------url = " + url);
InputStream is = null;

相关文档
最新文档