以前答应你们的毕业答辩以后把全部文档贡献出来,如今答辩已过,LZ信守承诺,把全部文档开源到了GitHub(这个地址包含全部的代码和文档以及PPT,外层为简单的代码)。还望喜欢的朋友们,不要吝啬你的星星,多多Star。git
简单演示:(这里只演示部分,详情去移步GitHub)github
四川师范大学本科毕业设计web
基于Android的家校联系平台开发数据库 |
学生姓名api |
刘世麟安全 |
院系名称服务器 |
计算机科学学院微信 |
专业名称网络 |
软件工程架构 |
班 级 |
2013级 4班 |
学 号 |
2013110424 |
指导教师 |
夏羽 |
完成时间 |
2017年 5 月 10 日 |
基于Android的家校联系平台开发
学生:刘世麟 指导教师:夏羽
内容摘要:学校教育与家庭教育的不一致,容易产生教育断层的局面,而现有的校讯通等家校互动平台,又存在教师与家长单向沟通等方面的问题。现在信息技术的飞速发展为家校共育的健康发展提供了强有力的保障,“互联网+”已成趋势。学校和教师要一改过去传统的沟通交流方式,借用互联网与手机短信相结合的家校互动信息平台,扩展沟通交流渠道,架起家校沟通的桥梁,从而让家校教育造成协力,提升教育的时效性,促进学生健康成长。所以,本文就目前“互联网+教育”的新趋势进行了说明,以明确进行研究的目的。随后,将对本平台实现的过程和原理进行一一探讨,以让读者能了解实现其的具体方法。最后,为了实现这个软件平台,本文对这个软件做了系统分析和系统设计,最终实现了该软件。经过测试,该平台能正常运行在Android系统下的智能设备,也验证了本文所探讨的设计正确性和重要性。
关键词:互联网、家校互动、家校协做、功能应用
Development of home school contact platform based on Android
Abstract: Nowadays, the inconsistency of school education and family education may easily result in education gap. And the existing home-school interactive platforms like School Paper still have some problems including the issue of one-way communication between teachers and parents. The rapid development of information technology has provided a strong guarantee for the healthy development of home-school coeducation. Currently, the” Internet+” mode has become a trend, which requires the schools and teachers update the traditional communication ways with parents. They can combine the internet with mobile phone text message to establish a home-school interaction information platform, expanding the communication channel, setting up the bridge of communication so as to produce a unified strength of home-school education, improving the efficiency of education and promote the healthy growth of students. Therefore, This paper puts forward the aim of this research by describing the current trend of “Internet +Education”. In addition, It explores the process and principles of the new platform to make the readers understand the specific methods. Finally, in order to achieve this software platform, this paper makes a systematic analysis and system design. Through the test, the platform can run in the intelligent equipment of Android system, thus verifying the correctness and importance of the design discussed in this paper.
Key words: Internet; home school interaction; home school cooperation; Function Application
目 录
1 概述. 1
1.1 研究背景和意义. 1
1.2 国内现状. 1
1.3 论文的思路和结构. 2
2 研究方案和架构概述. 3
2.1 预计花费时间设计方案. 3
2.2 软件开发设计方案. 3
2.3 本课题的设计目标. 3
2.4 架构概述. 4
3 需求分析. 5
3.1 软硬件需求. 5
3.2 功能需求. 5
3.3 用户需求. 6
3.4 用例图. 6
3.4.1 登陆板块. 6
3.4.2 班圈板块. 7
3.4.3 消息板块. 8
3.4.4 发现板块. 9
3.4.5 个人板块. 10
3.5 用例说明. 10
3.5.1 UC1用户登陆. 10
3.5.2 UC2用户注册. 11
3.5.3 UC3找回密码. 12
3.5.4 UC4发布信息. 12
3.5.5 UC5查看全部信息. 13
3.5.6 UC6查看信息详情. 14
3.5.7 UC7点赞评论回复. 14
3.5.8 UC8查看联系人和会话. 15
3.5.9 UC9聊天. 15
3.5.10 UC10音视频通话. 16
3.5.11 UC11修改我的信息. 16
3.5.12 UC12修改孩子信息. 17
3.5.13 UC13退出登陆. 18
4 概要设计. 19
4.1 系统功能整体设计图. 19
4.1.1 Android端功能整体设计图. 19
4.1.2 服务器端功能整体设计图. 20
4.2 数据库E-R图设计. 21
4.3 系统类图. 22
4.3.1 APP端登陆板块. 22
4.3.2 APP端主页板块. 22
4.3.3 APP端班圈板块. 23
4.3.4 APP端发布板块. 24
4.3.5 APP端消息板块. 25
4.3.6 APP端发现板块. 25
4.3.7 APP端个人板块. 26
4.4 界面设计. 26
5 详细设计. 33
5.1 数据库详细设计文档. 33
5.1.1 用户表设计(aiya_user). 33
5.1.2 班级信息表设计(aiya_class). 33
5.1.3 主贴表设计(aiya_main). 34
5.1.4 评论表设计(aiya_comment) 34
5.1.5 点赞表设计(aiya_praise). 35
5.1.6 主贴图片表设计(aiya_pic). 35
5.2 CS协议通讯文档. 35
5.2.1 用户系统. 35
5.2.2 信息系统. 37
5.3 时序图. 38
5.3.1 登陆时序图. 38
5.3.2 发布时序图. 39
5.3.3 圈子信息时序图. 40
5.3.4 聊天时序图. 41
6 系统实现. 43
6.1 开发工具简介. 43
6.2 开发界面总览. 43
6.2.1 Android开发界面总览. 43
6.2.2 PHP开发界面总览. 46
6.2.3 数据库操做页面总览. 47
6.3 核心功能代码. 47
6.3.1 图片压缩处理. 47
6.3.2 相机适配处理. 51
7 软件测试. 57
7.1 功能模块测试. 57
7.1.1 用户登陆注册模块测试. 57
7.1.2 信息发布模块测试. 58
7.1.3 信息交流模块测试. 59
7.1.4 即时通信模块测试. 60
7.3 性能测试. 60
7.4 安全测试. 61
7.5 交叉事件测试. 61
7.6 兼容性测试. 61
8 结论. 62
9 谢辞. 63
参考文献. 64
基于Android的家校联系平台开发
社会的发展,智能手机的普及让各类各样的手机应用APP成为咱们生活中必不可少的一部分,教育行业也搭上了这趟车,走上了“互联网+”教育,为了方便学生、家长、学校三体互动,让家长和学生能及时收到学校发送的消息,知足用户以前的实时交流,“爱吖校推”应运而生。
“爱吖校推”是一款基于Android的家校互动平台。随着社会的发展,各类APP在手机行业发展的助推下应用愈来愈普遍。某权威调研机构表示,2016年,Android系统已经占领市场份额高达81.3%,而大名鼎鼎的iPhone屈居第二,仅占17.8%,更使人惊奇的是,Android的市场份额还在持续增多。
社交是人类社会性群体的基本属性。而“爱吖校推”就是一款基于教育行业的社交类APP。它支持全部的即时通信应该包含的功能,文件发送、位置发送、音视频通话、图片、视频等,一样也支持校方和教师发送公告做业并推送到相应群体的Android智能终端。在当前微信用户如日中天的基础上,“爱吖校推”采用微信朋友圈的方式,支持消息发送、点赞、评论、拍照、秒拍、微视频等群体社交,真正进入微社交时代。这是一件很是有意义的事情。
家校互动的需求长期已有,它的研究和设计从本世纪初就开始了,并且也取得了不小的成效。但在早期因为技术的限制,因此存在信息的单项沟通,好比早期的“校讯通”。它就是单纯的经过收发短信来达到家校信息交流,教师得不到任何的反馈。以后随着移动互联网的发展,微信平台如鱼得水,其双向沟通性让一线教师感受是雪中送炭,但其信息筛选性一直为人诟病。虽然微信等即时通信软件必定意义上解决了家校互动的问题,但这样的处理,无疑是增长了教师的工做量。
近年来,有 “爱上学”、“和校园”、“爱学习”、“校讯通”等已经运行的家校互动支持平台20多个,这些平台主要实现信息发布查看等功能,对于信息的及时推送功能匮乏,加之在校大学生多用QQ群或者微信群做为沟通平台,经常使得通知公告信息错过,致使了学生之间的信息不对等,而国内超高量的外出打工家长,想看到没有手机的孩子实在困难。因此“爱吖校推”在操做简单的基础上,优化了拍照和微视频,让老师能够把学生的学校状况实时地分享给你们。消息的离线推送也使得信息的准确到达率迅速提高,而附带音视频通话的及时通信板块,也是拉近了学生、家长、教师之间的距离。
该论文分十个部分进行逐一讲解:
首先把概述做为了第一部分,该系统平台的研究背景和意义以及国内现状做为主要讲述内容。
第二部分是研究方案和架构概述,主要阐述了本课题预计花费时间的设计方案、软件开发设计方案以及设计目标,最后作了架构概述。
第三部分是需求分析,主要从用户需求、性能需求和功能需求三方面阐述了需求板块须要具有的东西。本部分还用了用例图、用例说明增长相关人员的理解。
第四部分是概要设计,主要从Android端和服务器端分别阐述了功能整体设计,而后画了数据库E-R图,最后是系统类图和界面设计。
第五部分是详细设计,主要从数据库设计、CS协议通讯、时序图三个方面阐述。
第六部分是系统实现,主要介绍了本次系统实现所用到的开发工具,并展现了开发界面总览和核心功能代码的讲解。
第七部分是软件测试,分版块进行功能、性能、安全、交叉事件以及兼容性板块进行测试并修改系统bug。
第8、九部分是本次毕业设计中的收获和结论以及本身的感想。
最后是本文所参考的各类有价值的资料列表。
1)花费7天查阅了关于即时通信的资料以及小米推送的官方文档,并对其进行分析整理。
2)花费10天查阅了一些技术博客和相关论坛以及GitHub上比较火的框架和项目。
3)花费15天进行数据库设计,并对系统框架作一个全局性思考;
4)花费10天编写后台API数据接口,并作简单测试;
5)花费1个月编写Android端代码,并对后台数据可行性进行验证修改;
6)最后进行常规测试,并在各大机器上运行,以保证不会出现致命Bug。
采用MVC开发模式,按照功能可划分为:发通知,发做业,互评点赞,图片并茂,即时通信,小米推送等模块。
功能模块细化:
1)班级圈:班级圈包含教师可发放通知、做业,基本支持图文并茂社区化和微视频上传。家长可查看本身班级的每一条信息,以及进行互评回复点赞。
2)即时通信:即时通信板块主要依赖于环信,在环信SDK的大前提下,引入基本的即时通信和音视频通话。
3)社区板块:社区板块是用户只要在一个班级便可进行相似朋友圈的交流,依然能够进行互评点赞回复。
4)发现板块:发现板块主要是为加载一些广告和活动。
5)个人板块:个人板块主要是提供用户信息的更改设置等。
6) 推送板块:当前推送继承了Google推送、华为推送和小米推送,以最大的可能提升推送接收率。
模块功能实现的目标:
1)班级圈:保证班级圈数据的正常显示,非本班人员应该不具有查看该班信息权限的能力。采用广播、接口回调及其其它方式完成数据的传递和更新。
2)即时通信:保证音视频通话的离线呼起,保证长链接的引用,保证用户能正常收发消息。
3)社区:同班级圈。
4)发现:保证广告的通畅性和可行性。
5)个人板块:保证用户信息的修改处理正常,作到信息不泄漏。
6)推送:保证推送成功率与正确率。
7)交互性良好:采用material design 风格设计,以及动画效果的引用,使用户和软件具备更加青睐的交互体验,并经过信息圈子推送,增长了用户粘性。
8)代码风格佳:在编码过程当中,严格要求分包逻辑,采用模块化分包,并对代码进行合理的封装处理,使代码更加模块化,让其余人能更易上手。
9)实用性:经过不断的更新产品功能和接收用户反馈,让该产品更加地符合消费者思惟。
本系统采用C/S架构,分为客户端和服务器端。
客户端被分为了表现层、业务逻辑层和数据访问层三个层面。
1.表现层:主要经过Android应用页面来展现数据,以及一系列事件响应的UI控件。
2.业务逻辑层:主要用于业务逻辑的处理。一般由业务服务Service类和业务实体类Entity组成。
3.数据访问层:本系统采用的数据库是MySQL,采用XAMPP进行服务器搭建,采用PHP做为后台数据接口编写,用花生壳作域名解析,以达到Android客户端与服务器之间的访问。
需求分析是“爱吖校推”应用分析的必要阶段,下面分软硬件需求、功能需求和用户需求三方面作介绍,
本系统的软硬件需求以下:
(1) 在Android平台上运行,系统在4.0以上;
(2) 后台数据库:MySQL
(3) 开发环境:Java JDK1.7 ,Windows 10
(4)开发工具:Android Studio、Eclipse For PHP、XAMPP、
(5) 我的计算机:华硕飞行堡垒笔记本
“爱吖校推”做为一款功能性软件,其功能需求至关重要。如下为“爱吖校推”的功能需求:
1)发通知、发做业
发通知和发做业,是学校教师特有的功能,教师能够经过“爱吖校推”平台进行通知和做业的发放,每当发一条信息,该班的全部人员即可以收到来自服务器的信息推送,提醒家长打开APP查看。每一条通知和做业家长均可以点赞和互评和回复。这样让家长和学校的关系更贴切,也增长了信息筛选机制,从而避免了QQ群、微信群等多余信息的影响。
2)传视频、传照片
传视频是在社区和通知做业板块均具有的功能,紧跟微视频的时代步伐,教师能够把孩子在学校的精彩表演,录制下来发到班群里,家长即可以看到。家长也能够把孩子在家里作的有意义的事情放到社区,让同一个班级的家长朋友们借鉴。良好的图文并茂社区化,不只增进了家长和学校的交流,还增进了家长之间的联系和友谊。
3)即时通信
即时通信板块是一个总体的板块,基本包含QQ微信的全部功能,依然能够发图片、发消息、发语音、发定位、音视频通话等。意在增长朋友之间的联系和家长和学校教师的一对一交流和多对多交流。
4)发现板块
发现板块主要是轮播的一些优秀且有利于教师家长的APP功能板块,而且会组织一些活动,邀请你们参加。
5)离线推送
离线推送在家校互动平台软件中是一个必备功能,也算是一个核心功能,有它才能保证用户真正收到来自教师发放的信息,以及即时通信过来的消息。同时音视频通话等即时性要求较高的功能,也得依赖它。而且,推送信息到通知栏的方式向用户传递信息,也是能够增长用户粘性。
在“爱吖校推”应用的开发过程当中,为了尽可能知足学校老师和家长用户的要求。目前获得的需求有:
1) 图片显示清晰,但不能太大,以避免浪费流量;
2) 微视频的压缩要处理好,不能太浪费流量;
3) 即时通信要通畅;
4) 要具有离线推送,确保家长用户能收到教师发送的做业和通知;
5) 要有权限管理,不能让外班人员看到本班的消息;
6) 公告和做业不能插广告;
7) 应用不能常常闪退;
8) 应用不能太大,也不能太占内存;
9) 运行要流畅,不能出现卡顿现象;
图1 登陆模块用例图
图2 班圈模块用例图
图3 消息模块用例图
图4 发现模块用例图
图5 个人模块用例图
表1 UC1用户登陆用例
UC1用户登陆 |
|
参与者 |
全部用户、管理员能够登陆 |
触发条件 |
用户点击登陆按钮 |
前置条件 |
用户打开了APP |
后置条件 |
登陆到主页,进入APP各大功能使用 |
正常流程 |
一、 打开APP; 二、 输入帐号密码开始登陆; 三、 登陆成功则进入主页面 |
扩展流程 |
2a.输入信息有误
|
表2 UC2用户注册用例
UC2用户注册 |
|
参与者 |
全部用户 |
触发条件 |
用户点击注册帐号 |
前置条件 |
用户打开了APP,并点击注册帐号 |
后置条件 |
注册成功,能够登陆。 |
正常流程 |
1. 打开APP; 2. 点击用户注册; 3. 输入手机号; 4. 验证成功,进入注册页面; 5. 输入注册信息 6. 注册成功; |
扩展流程 |
3a.输入信息有误
4a.验证码验证失败
5a.输入信息不正确
|
表3 UC3找回密码用例
UC3找回密码 |
|
参与者 |
全部使用APP的教师和家长 |
触发条件 |
该用户忘记了本身的密码并但愿能找回 |
前置条件 |
用户在登陆页面或者个人页面点击了找回密码按钮 |
后置条件 |
新密码成功上传服务器,找回密码成功,能够用新密码登陆 |
正常流程 |
|
扩展流程 |
2a.输入信息不符合产品提供的正确的逻辑规范
4a.验证码输入不匹配;
|
表4 UC4发布信息用例
UC4发布信息 |
|
参与者 |
教师和发布公告和做业,其余用户只能够发布圈子 |
触发条件 |
用户点击发布信息按钮 |
前置条件 |
用户已经登陆成功 |
后置条件 |
发布信息到对应的班级,而且班级的用户都能收到信息,信息类型包括公告、做业、社区。其中教师发布的公告和做业会推送到家长的手机上。 |
正常流程 |
|
扩展流程 |
6a.输入信息有误
|
表5 UC5查看全部信息用例
UC5查看全部信息 |
|
参与者 |
全部用户、管理员 |
触发条件 |
用户滑动tab |
前置条件 |
用户已经登陆成功 |
后置条件 |
当前班级的用户能够查看到该班级的公告做业和社区 |
正常流程 |
|
扩展流程 |
暂无 |
表6 UC6查看信息详情用例
UC6查看信息详情 |
|
参与者 |
全部用户、管理员 |
触发条件 |
用户点击一条信息 |
前置条件 |
|
后置条件 |
用户查看到指定信息详情 |
正常流程 |
|
扩展流程 |
4a.信息访问错误,不存在,提示用户该条信息不存在。 |
表7 UC7点赞评论回复用例
UC7 点赞评论回复 |
|
参与者 |
全部用户、管理员 |
触发条件 |
用户点击点赞或者输入信息评论或回复 |
前置条件 |
|
后置条件 |
|
正常流程 |
|
扩展流程 |
3a. 该信息不存在; 一、该信息已经被做者删除,但前段未下拉刷新,弹出相应提示; |
表8 UC8查看联系人和会话用例
UC8 查看联系人和会话 |
|
参与者 |
全部用户、管理员 |
触发条件 |
用户点击消息 |
前置条件 |
用户已经登陆成功; |
后置条件 |
无 |
正常流程 |
|
扩展流程 |
3a.获取消息或联系人失败,提示用户数据获取失败,请稍后再试。 |
表9 UC9聊天用例
UC9 聊天 |
|
参与者 |
全部用户、管理员 |
触发条件 |
用户点击会话或者联系人 |
前置条件 |
|
后置条件 |
发起聊天,聊天对象收到本身发送的消息 |
正常流程 |
|
扩展流程 |
暂无 |
表10 UC10音视频用例
UC10 音视频通话 |
|
参与者 |
全部用户、管理员 |
触发条件 |
用户发起音视频通话 |
前置条件 |
|
后置条件 |
发起音视频通话,聊天对象能接收到本身的音视频呼起,对象能够选择接听或者拒绝。 |
正常流程 |
|
扩展流程 |
4a.用户可能收不到;
|
表11 UC11修改我的信息用例
UC11 修改我的信息 |
|
参与者 |
全部用户 |
触发条件 |
用户点击个人页面的头像或者点击个人信息按钮 |
前置条件 |
该教师或者家长已经登陆成功; |
后置条件 |
修正后的信息成功同步更新到服务器,提示用户信息更改为功。 |
正常流程 |
|
扩展流程 |
11a.数据更新失败,提示用户稍后再试。 |
表12 UC12修改孩子信息用例
UC12 修改孩子信息 |
|
参与者 |
全部用户 |
触发条件 |
用户点击个人页面的孩子信息入口 |
前置条件 |
用户已经登陆成功; |
后置条件 |
孩子信息修改为功,并同步更新到服务器。 |
正常流程 |
|
扩展流程 |
5a.更新失败,提醒用户稍后再试。 |
表13 UC13退出登陆用例
UC13 退出登陆 |
|
参与者 |
全部用户 |
触发条件 |
用户点击个人页面再点击退出登陆 |
前置条件 |
用户已经登陆成功; |
后置条件 |
用户退出登陆,回到登陆页面; |
正常流程 |
|
扩展流程 |
3a.退出登陆失败,提醒用户。 |
图6 Android端功能整体设计图
图7 服务器端功能整体设计图
图8 数据库设计E-R图
图9 APP端登陆类图
图10 APP端主页类图
图11 APP端班圈类图
图12 APP端发布类图
图13 APP端消息类图
图14 APP端发现类图
图15 APP端个人板块类图
图16 图片选取界面设计
图17 登陆界面设计
图18 手机号验证界面设计
图19 主界面设计
图20 课程表界面设计
图21 联系人列表界面设计
图22 聊天界面设计
图23 音频呼叫界面设计
图24 发布信息界面设计
图25 发现界面设计
图26 个人板块界面设计
图27 按住拍界面设计
本软件的数据库为MySQL数据库,主要是搭建在XAMPP上结合PHP存在。主要分为如下几个数据表:
表14 用户表设计
字段 |
属性 |
备注 |
username |
varchar(20)(主键) |
帐号(手机号) |
password |
varchar(20) |
密码 |
nickname |
varchar(20) |
用户昵称 |
type |
int(1) |
用户类型 (1教师、2 家长、3管理员) |
classid |
int(10)(外键) |
班级id |
avatar |
Varchar(100) |
用户头像地址 |
birthday |
date |
生日,实际存储为时间戳 |
address |
text(null) |
用户地址 |
child_name |
varchar(20) (null) |
孩子姓名 |
child_avatar |
text(null) |
孩子头像地址 |
表15 班级信息表设计
字段 |
属性 |
备注 |
classid |
int(10)(主键自增) |
班级id |
classname |
varchar(50) |
班级名称 |
schoolname |
text |
学校名称 |
表16 主贴表设计
字段 |
属性 |
备注 |
mainid |
int(10)(主键自增) |
帖子id, |
classid |
int(10)(外键) |
班级id |
username |
varchar(20)(外键) |
用户名 |
time |
timestamp |
发布时间,实际存储至关于long型时间戳 |
infotype |
int(1) |
主贴类型(1 表明公告 2 表明做业 3 表明动态) |
content |
text |
帖子内容 |
表17 评论表设计
字段 |
属性 |
备注 |
infoid |
int(11)(主键自增) |
信息id |
mainid |
int(10)(外键) |
主贴id,用于识别隶属于哪一条帖子的评论 |
username |
varchar(20)(外键) |
用户名,用于识别发布人信息 |
time |
bigint(20) |
发布时间,long型时间戳 |
content |
text |
发布内容 |
reply |
varchar(20)(外键) |
用户表username做为外键,用于回复@功能 |
表18 点赞表设计
字段 |
属性 |
备注 |
praiseid |
int(10)(主键自增) |
点赞信息id |
mainid |
int(10)(外键) |
主贴表外键,用于识别赞的是哪一条主贴 |
username |
varchar(20) |
用户表外键,用于识别是谁点赞了 |
表19 用户表设计
字段 |
属性 |
备注 |
picid |
int(10)(主键自增) |
图片id |
mainid |
int(10)(主贴表外键) |
主贴id |
url |
text |
图片存放地址 |
说明:返回格式为code,msg,data三个字段,code为0是表明请求逻辑正确,-1为请求异常;
一、获取用户是否注册APP
接口地址: /user/usable_mobile.PHP
方式和返回: GET JSON
请求参数:
表20 获取用户是否注册APP接口
名称 |
类型 |
说明 |
mobile |
string |
用户手机号 |
二、注册
接口地址: /user/register.PHP
方式和返回: POST JSON
请求参数:
表21 注册APP接口
名称 |
类型 |
说明 |
username |
string |
用户手机号 |
password |
string |
用户密码 |
nickname |
string |
昵称 |
birthday |
string |
生日,传递long型时间戳 |
avatar |
string |
头像上传的地址 |
三、登陆
接口地址: /user/login.PHP
方式和返回: POST JSON
请求参数:
表22 登陆接口
名称 |
类型 |
说明 |
username |
String |
用户手机号 |
password |
string |
用户密码 |
四、重置密码
接口地址: /user/reset_pwd.PHP
方式和返回: POST JSON
请求参数:
表23 重置密码接口
名称 |
类型 |
说明 |
username |
string |
用户手机号 |
password |
string |
用户新密码 |
五、上传头像
接口地址: /user/avatar.PHP
方式和返回: POST JSON
请求参数:
表24 上传头像接口
名称 |
类型 |
说明 |
file |
File |
须要上传的文件 |
六、更新头像url:
接口地址: /user/update_avatar.PHP
方式和返回: GET JSON
请求参数:
表25 更新头像URL接口
名称 |
类型 |
说明 |
username |
string |
用户名 |
iconUrl |
string |
头像地址 |
type |
int |
类型 1 为本身 2 为孩子 |
一、异步获取主贴等信息
接口地址: /info/info_main.PHP
方式和返回: GET JSON
请求参数:
表26 异步获取主贴接口
名称 |
类型 |
说明 |
|
classid |
int |
班级id,用于识别可见度 |
|
infotype |
int |
信息类型 1公告2做业3动态 |
|
count |
int |
信息起始数,默认一次获取10条,须要更改联系后台 |
|
二、获取发布信息人的信息
接口地址: /info/get_user.PHP
方式和返回: GET JSON
请求参数:
表27 获取发布信息人的信息接口
名称 |
类型 |
说明 |
username |
string |
用户名 |
三、评论信息
接口地址: /info/insert_comment.PHP
方式和返回: POST JSON
请求参数:
表28 评论信息接口
名称 |
类型 |
说明 |
mainId |
int |
主贴id |
username |
string |
用户名 |
content |
string |
评论内容 |
reply |
string |
回复人用户名 |
四、更新点赞信息
接口地址: /info/praise.PHP
方式和返回: GET JSON
请求参数:
表29 更新信息接口
名 |
类型 |
说明 |
mainId |
int |
主贴id |
username |
string |
用户名 |
该时序图是实现用例UC1用户的登陆。
1.用户进入LoginActivity登陆界面后按照提示输入帐号名(必须为正确的手机号)和密码(很多于6位)。
2.先采用StringUtil工具类对输入数据进行验证,再把LoginPresenter把输入的数据传递给网络交互类AppService,让其与服务器进行数据交互并返回给LoginPresenter,经过回调机制让View层显示相关信息,如果登陆成功则正确跳转到应用主页面,不然显示相关错误信息。
图28 登陆时序图
该时序图是实现用例UC4发布信息。
1.用户进入发布页面,能够输入相关话题信息,也可上传附件(微视频和图片不共存)。
2.若是上传附件,则调用压缩相关的工具类进行附件压缩,若是压缩失败,则显示相关错误信息。
3.未输入信息没法点击发布,若是点击发布按钮,则让ReleasPresenter处理相关逻辑,并把发布话题的信息传递给AppService类作网络访问处理,服务器返回相关信息,采用回调机制让View显示出相关信息。
4.若是发布成功,则返回到主页面,并发送广播提示主页面进行数据刷新。
图29 发布时序图
该时序图是实现用例UC6查看信息详情。
1.用户在主页面能够看到话题相关信息(包括通知、做业、社区)。
2.若是点击任何一条信息,则能够跳转到详情页面,能够查看到相关点赞信息和评论信息。
3.点击评论能够对该条话题信息进行评论,点击评论人可对该用户进行回复。
图30 圈子信息时序图
该时序图是实现用例UC9聊天。
1.用户能够从会话页面或者联系人页面进入聊天页面ChatActivity。
2.能够发送任何的文本消息,也能够点击下方“加号”按钮进行语音图片视频等文件的发送。
3.能够直接调用音视频通话,向对方发起通话。
4.任何的与服务器交互逻辑均交给EMClient类进行处理。
5.被呼叫的用户能够选择拒绝音视频通话并把相关信息返回给EMClient类。
6.监听类收到EMClient返回的信息后处理相应回调,显示相关信息。
图31 聊天时序图
Android Studio :Android Studio 是Google推广的一款全新的Android开发工具,采用全新的Gradle方式进行编译,同时对原有的Eclipse开发的项目进行了支持。在2016年年末,Google宣布中止对Eclipse的支持与维护,完全地宣布了Android Studio做为“Google亲儿子”的地位。其强大的市场占有率成为了使用趋势,咱们不能墨守成规,须要向着新趋势看齐。
XAMPP: XAMPP(Apache+MySQL+PHP+PERL)原来的名字叫 LAMPP,但最新的几个版本被改名为XAMPP,主要是为了不误解。它做为一款建站集成软件包,功能很是完善,其强大的兼容性更是征服了用户,不只提供了Windows、Mac等主流操做系统,更是对Linux、Solaris等其它操做系统作了支持。更完美的是,它还支持包含简体中文、繁体中文、英文、韩文等多国语言包。但XAMPP最著名的仍是它的便捷性,使用XAMPP只须要下载、解压、启动三个步骤就能让Apache服务器运行在机器上,而且还支持读取PHP文件以及集成了MySQL的使用。 Eclipse For PHP:这款软件是Eclipse分支下专用于开发PHP的一款IDE,支持PHP5和PHP7,在这里,咱们主要用它来开发后台接口板块。
图32 Android 源码分包预览
图33 Android 资源文件预览
图34 PHP端代码总体预览
图35 数据库操截图
项目中的图片压缩来源于我GitHub已经开源的一个开源库,目前项目已经获得超 700 Stars,主要采起BitmapFactory的内部类Options以及Bitmap下的createScaleBitmap方法对图片进行质量压缩和尺寸压缩。
思路:
1)Bitmap是一个至关大的对象,特别容易致使OOM,因此咱们在压缩的时候并不能直接采用Bitmap,而采用BitmapFatory.Options。它有一个至关强大的属性:inJustDecodeBounds,当这个属性为true的时候,调用decode前缀的方法返回的就不是一个完整的Bitmap对象,而是null。由于它禁止这些方法为Bitmap分配内存,当设置这个属性为true时,便会复制Options的三个属性,它们分别是outWidth,outHeight和outMimeType。至关于不读取这个图片,却获取到了它的参数,的确很厉害。
2)另一个不得不说的属性就是inSampleSize了,能够理解为压缩比率,设置好这个比率,就能调用decodeXXXX方法得到缩略图了,若是图片大小都一致,则能够定死它。可问题是咱们的图片大小一般是不一致的,那咱们压缩的重中之重就是得到这个正确的比率。所以,我们彻底可以通过咱们想要的长宽,经过屡次循环比对,从而达到等比例压缩。
3)然而, inSampleSize官方注释告诉咱们一个必须注意的点:由于inSampleSize只能是2的整数次幂,意味着如何咱们经过循环算出来inSampleSize为6的话,这时候只能向下取得整数次幂,也就是4。这样明显是达不到咱们想要求的标准的。
4)Bitmap的createScaleBitmap这个方法成功消除了咱们的焦虑,咱们能够借用这个方法把咱们以前获得的较大的缩略图进行二次缩小,直到彻底符合咱们的要求。
核心代码为:
【图片太长,这里不截图,请异步GitHub】
图片选取来自于我维护的一个开源库ImagePicker,目前GitHub Star数超过1300+,主要经过从数据库读取全部图片信息并返回到一个List中,该List将把全部图片的path存储在一块儿,而后把这些图片放在RecyclerView中显示,项目UI彻底仿照微信作处理。为了解决Intent传值限制,我在项目中采用单例加锁的方式得以解决。
针对Android的适配上也是下了很多功夫,主要表如今Android 6.0 的动态权限处理,以及Android 7.0的相机打开限制,固然还有必不可少的MIUI系统坑和三星机器的图片旋转问题。
下面谈下解决方案:
1) 6.0动态权限处理:在Android 6.0 (API 23)开始,Android开始引入动态权限处理,即除了在以前的AndroidManifest.xml文件中申明权限,还须要在使用到权限的时候弹出用户是否受权的框。只须要重写onRequestPermissionsResult方法便可。示例代码以下:
【图片太长,这里不截图,请异步GitHub】
2) 对于调用系统相机拍照后图片旋转:
常常会遇到一种状况,拍照的时候看到照片是正的,可是当APP获取到这张图片的时候,却发现旋转了90度(也有多是180,270,不过90度比较多见,这应该是手机传感器致使的)。为了解决这种不必定在全部机器上都出现的问题,咱们能够引入Android系统提供的ExifInterface类来解决各个属性的操做。ExifInterface能够不用加载图片就获取到图片的长宽、旋转角度等多种属性,咱们能够经过ExitInterface获取图片的旋转角度degree来进行处理,当知足degree不为0的时候,调用Matrix的postRotate进行角度旋转,核心代码为:
【图片太长,这里不截图,请异步GitHub】
3)对于部分机型调起相机会回不去APP的适配处理(拍完照闪退问题):
这也是相机适配中必须处理的地方,因为Android系统厂商的ROM不一致,会让一些ROM对自带相机应用作优化,当某个APP经过Intent进入相机拍照界面时,系统会把这个APP最上层的Activity销毁回收,只须要重写onSaveInstanceState和onRestoreInstanceState方法对数据进行恢复和保存便可,核心代码为:
【图片太长,这里不截图,请异步GitHub】
4)Android 7.0调用系统相机的处理:
因为Android 7.0 手机开始推广,因此咱们也不得不处理7.0的权限问题。在Android 7.0 之后,file://不被容许做为一个附件的Uri的意图,不然会抛出FileUriExposedException,在这样的状况下,咱们只须要用FileProvider便可解决。核心代码以下:
<provider
Android:authorities="${APPlicationId}.provider"
Android:name=".ImagePickerProvider"
Android:exported="false"
Android:grantUriPermissions="true">
<meta-data
Android:name="Android.support.FILE_PROVIDER_PATHS"
Android:resource="@xml/provider_paths"/>
</provider>
【图片太长,这里不截图,请异步GitHub】
基于Android等移动终端平台的APP软件测试与传统的软件测试不一样,它不只要求兼容性良好,并且要求响应时间要在必定的限制范围。好比用户的操做响应时间通常不能超过3-5秒,APP启动时间也不能太长。而对于Android操做系统,庞大的第三方厂商定制,致使Android系统各有差别。一个APP软件必须知足不用的屏幕分辨率都能正常显示,而且可以正确的完成相应功能。若是在某个环境下,界面功能显示不全,则会致使软件功能没法正确使用,也就失去了安装此软件的意义,因此对其兼容性的要求也是很重要的一个方面。
功能模块的测试是最基本的测试。我经过找出APP的测试点,而后采用两款手机,小米3S(Android 5.0)和小米5S(Android 7.0)以及Windows抓包工具Fidder分别对“爱吖校推”的功能模块和网络接口进行完整测试,在测试过程出现了几个小问题。
1)图片选择页面出现选择异常,然后得以解决,由于导包错误,致使指向了另一个文件。
2)发布信息后没有刷新页面的Bug,后面采用广播提醒UI刷新得以解决。
在解决完相关bug后,进行了新一轮的测试,下面是简单的测试状况:
该模块测试主要是验证用户的注册登陆是否能正常使用,任何不正确逻辑都应该给出相应的提示。在注册时,手机号必须符合规范,密码不得少于6位,不然提示输入不规范。注册时须要输入两次密码,而且密码相同,验证码输入必须正确,不然提示相应错误。登陆板块,第二次登陆应该自动登陆。
表30 用户登陆注册模块测试
测试项目 |
测试方法 |
预期结果 |
结论 |
用户注册 |
在注册界面输入用户名,密码,其余信息(符合要求) |
注册成功 |
与预期结果一致 |
用户注册 |
在注册界面不输入内容或者输入信息不符合要求 |
注册失败 |
与预期结果一致 |
用户登陆 |
在登陆界面输入用户名,密码,且用户名和密码匹配 |
登陆成功 |
与预期结果一致 |
用户登陆 |
在登陆界面不输入内容或者输入信息不正确 |
登陆失败 |
与预期结果一致 |
用户登陆 |
没有退出当前帐号,第二次进入该系统 |
自动登陆成功 |
与预期结果一致 |
该模块测试主要是验证可否正常发布信息和上传图片及微视频,当没有输入信息时候应当不能点击发送按钮。附件上传前要注意压缩,而且上传后应该在班圈信息中获得正常显示,中间有任何出错须要提示相应错误。并且在6.0以上系统的手机应该动态申请权限。在发布通知或者做业页面,应当发起推送到该班级圈子下的家长手机中。
表31 信息发布模块测试
测试项目 |
测试方法 |
预期结果 |
|
结论 |
信息发布 |
不输入任何文字点击发布 |
发布按钮不能点击 |
|
与预期结果一致 |
信息发布 |
输入信息点击发布 |
发布成功,班圈显示刷新显示本条内容 |
|
与预期结果一致 |
信息发布 |
点击图片上传,进入图片选择页面,选择后点击肯定返回 |
选择图片后在信息发布页面能显示正常的图片信息,而且首次使用该功能应该弹出申请权限的对话框 |
|
与预期结果一致 |
信息发布 |
点击微视频上传,进入微视频录制页面,点击上传后返回 |
信息发布页面正常显示该条微视频的缩略图,点击缩略图能正常播放视频,首次使用该功能应该弹出动态申请权限的对话框 |
|
与预期结果一致 |
信息发布 |
发布信息,查看Fidder抓包状况 |
Fidder抓包信息应当显示和接口预期一致 |
|
与预期结果一致 |
信息发布 |
发布班级通知或者做业的时候,查看Fidder抓包状况和该班级圈子的家长用户手机状况 |
Fidder抓包信息应该和接口预期一致,而且该班级圈下的家长应该收到信息推送 |
|
与预期结果一致 |
该模块测试主要是测试信息可否正常地点赞评论回复,在该功能中,若是本用户以前未点赞(灰色),应当把点赞按钮置为点赞状态(红色),点赞数+1。点击班圈某条信息,能够正常进入到该信息的详情页面,并能够评论,返回后正常显示相关信息。
表32 信息交流模块测试
信息交流 |
测试方法 |
预期结果 |
结论 |
信息交流 |
点击班圈的某条信息 |
应该能正常进入详情页面 |
与预期结果一致 |
信息交流 |
点击点赞按钮 |
在未点赞的时候应该为灰色,点赞后应该为红色,能够取消点赞,相应数目应该变化 |
与预期结果一致 |
信息交流 |
点击评论按钮 |
进入信息详情页面,而且弹出键盘 |
与预期结果一致 |
信息交流 |
点击评论的人 |
应该直接开始弹出软键盘,而且置为回复该用户的状态 |
与预期结果一致 |
信息交流 |
点击返回 |
若是该条信息详情有所更新,应当提醒班级圈正常显示点赞状况和评论数目状况 |
与预期结果一致 |
即时通信模块测试主要是测试添加好友,音视频通话,聊天,发送附件,好友列表等可否正常显示,以及APP置于后台可否正常收到离线推送的即时通信消息。
表33 即时通信模块测试
即时通信 |
测试方法 |
预期结果 |
结论 |
即时通信 |
点击消息Tab |
能查看到最近联系人 |
与预期结果一致 |
即时通信 |
点击联系人Tab |
能正常显示联系人相关信息 |
与预期结果一致 |
即时通信 |
点击某条会话或者联系人 |
能正常进入聊天页面,并能正常显示信息和聊天 |
与预期结果一致 |
即时通信 |
点击音视频通话 |
进入音视频通话页面,被呼叫用户应当能正常收到此信息,并可选择挂断,发起者能够收到用户B接受或者拒绝的反馈,如果接受,应当正常进行音视频聊天 |
与预期结果一致 |
即时通信 |
用户B应用置于后台,用户A给用户B发送文本消息 |
用户B手机能收到信息推送 |
与预期结果一致 |
即时通信 |
用户B应用置于后台,用户A向用户B发起音视频呼叫 |
用户B应当直接呼起音视频通话页面,并能选择接受或者拒绝 |
与预期结果一致 |
性能测试须要验证APP在各类外界压力下是否能正确响应;在执行单一操做时候的响应时间;重复操做一功能,系统资源占用状况;咱们在项目中采用了LeakCanary开源框架,并把它移植到项目中检查内存泄漏状况。而且使用Android内存泄漏分析工具(MemoryAnalyzer)检测内存使用状况,最终经过分析优化了下面两个方面:
1)图片压缩不要将整个图片以Bitmap读入内存,防止OOM的发生,替换为ExitInterface类获取图片信息,并采用BitmapFatory的decodeXXX方法以及Bitmap的createScaleBitmap进行尺寸压缩,最后再进行质量压缩得以解决。
2)项目中有些地方采用了static静态对象,持有Context等致使内存久久不能释放,后面替换了ApplicationContext得以解决。
3)测试过程当中发现启动白屏现象较为严重,因此增长闪屏页得以缓解。
随着移动互联网的飞速发展,而做为产业模式下的移动平台,天然备受关注,依托此平台的APP的安全性进而成为人们的焦点。因此我对软件权限等进行了细致检查,获得如下结果:
1)没有任何的泄密权限或者非法访问状况;
2)没有出现任何的自启动,没有捆绑其余任何软件;
3)数据加密均正常,不存在泄密危险。
交叉事件测试,又叫事件或者冲突测试。意思是当APP在运行中,与此同时被另外的事件干扰,好比接入电话,查看短信后是否会致使APP崩溃或者数据丢失等异常。若是执行干扰的冲突事件后,应用APP依然能正常运行,不会出现崩溃、终端死机或者丢失数据等问题,则视为咱们的交叉事件测试经过。
在交叉事件测试中,我着重检查了几个方面:
APP运行时,前台后切换或者横竖屏切换出现了数据的丢失,通过修改后得以解决;
APP运行时,能正常接收电话和短信;
运行“爱吖校推”,并不会影响其余功能的使用,依然能正常的查看QQ消息、微信消息等。
在Android众多的第三方定制系统的大背景下,各类各样奇葩的兼容性问题必定存在,虽然在咱们开发中采用的测试真机是公认最容易出问题的MIUI手机,但依然不能以偏概全,在兼容性测试阶段,我采用腾讯云真机租用作了基本全部定制系统的兼容性测试。在兼容性测试中,我着重处理了:
Android 7.0 后不能直接经过Uri调用系统相机,检查出问题后,采用了文件FileProvider得以解决。
在三星手机的测试中,出现了拍照后旋转问题,最后在代码中经过ExitInterface等操做解决了这个问题。
8 结论
本次毕业设计针对愈来愈被看好的“互联网+”教育,着眼于促进教育现代化发展,增强学校与家长的沟通交流。设计过程当中采用较多的Design美学理念和动画效果,增长用户粘性。提供推送服务,极大的知足了用户不丢失重要班级信息。社区化的设计,帮助用户群体更好的交流。
因为各方面的缘由和经验匮乏等问题,本应用的一些细节处理还不那么完美,但我依然会完善下去。开发这款应用,让我学到不少,好比不少当前Android火热的框架,Retrofit、Rx、即时通信、推送以及图片压缩等,尤为是后台板块的学习,PHP做为当前比较热门的语言,我直接从零学习到一步一步搭建起本身的后台,收获巨大。
9 谢辞
感谢本身最近一学期来的努力与付出,让本身按时完成了毕业设计和毕业论文的撰写。
感谢个人指导老师夏羽老师,夏羽老师一贯严谨认真的工做态度深深的影响了我,是他,在百忙中还与我从论文选题就开始共同讨论,最后咱们共同选择了家校互动这个项目。夏老师的成熟稳重把我从遇到问题就如热锅上的蚂蚁引入到本身冷静分析问题。在毕业设计的编写中,在我遇到难题迟迟不能解决的时候,又是夏羽老师的自告奋勇为我答疑解惑,并为我提供相关资料。
感谢四年来全部教过个人老师,感谢大家的不辞劳苦,辛勤教诲,让我从计算机文盲走到如今。
同时,感谢个人同窗们,四年同学,终身为友,今天咱们在此同窗,明天咱们团结向上!
参考文献
[1] 明日科技.Android从入门到精通[M].北京:清华大学出版社,2012.9
[2] 郭霖.第二行代码[M].北京:清华大学出版社,2016.11
[3] 李刚.疯狂Android讲义(第3版)[M].北京:电子工业出版社,2015.
[4] 郭金尚.Android经典项目案例开发实战宝典[M].北京:清华大学出版社,2013.9
[5] 刘金桥. 基于web的贝佳宠物医院管理系统设计与实现 2015-06-03
[6] 许瑾.第一次开发Android程序的历程[J]. 科技资讯,2014.29.20
[7] 丁丽萍.Android操做系统的安全性分析[J].信息网络安全,2012.3:58-60
[8] 王珊.数据库系统概论.北京:电子工业出版社,2015
[9] (美)赞德斯彻.深刻PHP:面向对象、模式与实践(第3版)[M].机械工业出版社,2009.4
[10] 杨宇.PHP典型模块与项目实战大全[M].清华大学出版社,2012.1
[11] (美)林恩.贝伊利,迈克尔·莫里森着苏金国,徐阳译O’Reilly:HeadFirst PHP & MySQL(中文版)中国电力出版社2010 386
[12] 马千里. 基于安卓手机的“视界”应用程序的设计和实现2016-05-31