技术规格说明书
2.整体架构
2.1物理设计框架

2.2程序设计框架

2.3对外交互
MoocApp采用http方式与北航学堂服务器端进行交互,获取到的json数据通过统一的接口进行解析
3.软件与第三方支持
| 类型 | 软件和第三方支持 |
|---|---|
| 开发工具 | android studio |
| android版本 | android SDK 5.1(API22) |
| android最低支持版本 | android SDK 4.0(API5) |
| Database | SQLite |
| 代码托管平台 | github |
| 项目任务管理 | github milestone、issue |
| bug管理 | github issue |
| 服务器接口 | 北航学堂 |
4.详细设计
4.1UI设计
























4.2服务器API文档(北航学堂开发团队提供)
出于安全性考虑,服务器的API文档隐藏了服务器地址、参数和返回值
| API地址 | 类型 | 说明 |
|---|---|---|
| server_addr/init | GET | 初始化连接获得token和服务器参数 |
| server_addr/login | POST | 登录,获取登录时服务器返回的状态 |
| server_addr/courses | GET | 获取课程列表 |
| server_addr/course_about | POST | 获取特定课程的课程信息 |
| server_addr/course_courseware | POST | 获取特定课程的课程章节列表 |
| server_addr/course_enroll | POST | 获取用户是否选课的信息 |
| server_addr/get_course_enrollment | GET | 获取当前登陆用户的选课列表 |
4.3MoocApp的服务器交互模块设计
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| MOOCInit | 无 | int | 初始化连接获得token和服务器参数,0表示连接失败,1表示连接成功 |
| MOOCLogin | string username, string password | JSONObject | 登录,获取登录时服务器返回的状态 |
| MOOCCourse | 无 | JSONArray | 返回全部课程的JSON数组 |
| MOOCCourseAbout | string course_id | JSONObject | 获取课程信息JSON |
| MOOCCourseware | string course_id | JSONObject | 获取课程章节列表 |
| MOOCCourseEnroll | string course_id, int enrool | boolean | 获取是否选课成功,1表示成功,0表示失败 |
| MOOCGetCourseEnrollment | 无 | JSONObject | 获取已选课程的JSON |
4.4MoocApp的数据库设计
| 表名 | video_watched | ||
|---|---|---|---|
| 字段 | id | user | video_url |
| 类型 | bigint | string | string |
| 是否为主键 | 1 | 0 | 0 |
| 默认值 | null | null | null |
4.5MoocApp主界面设计(MoocMainActivity)
主界面中的三个tab页采用ViewPager实现,每个ViewPager中为一个课程列表的Fragment,点击课程列表中的某个课程会通过Intent跳转到课程详细信息的Activity
4.6MoocApp课程详细信息界面设计(CourseDetailActivity)
课程详细信息中的两个tab页(讨论区暂不实现)依然采用ViewPager实现。
其中,课程介绍的view中包含一个WebView,用于展示从服务器获取到的课程介绍;视频目录采用了三级列表的形式(与UI设计略有差别,考虑到MOOC的数据格式进行了修改)。
打开某个视频后会全屏播放该视频,视频播放器参考了网上的一个基于VideoView的自定义视频播放器,支持用手势进行调整亮度、音量,以及对播放进度的控制。
4.7MoocApp账户设置界面设计(UserInformationActivity)
该界面较为简单,使用了几个平铺的Fragment作为选项,点击某个选项后会进入相应的Activity
4.8备注
其他的Activity均比较简单,这里不再一一列举。
由于MoocApp暂时未将UI模块与业务逻辑模块分开,一些逻辑无法有条理的陈述出来,我们打算在beta版本中对程序逻辑进行重构,按照经典的UI层、业务逻辑层、数据层的形式进行整合,届时会更新本设计文档。

浙公网安备 33010602011771号