1.引言
1.1目标
本说明书主要用来说明”北航学堂android客户端1.0版“的软件内部设计规范
1.2术语
- MoocApp 在本说明书中特指由
歪果仁带你灰
团队开发的北航学堂android客户端v1.0 - 课程 在本说明书中特指发布在北航学堂中的网络公开课
- tab页 在本说明书中指可以滑动切换的一组选项卡页面
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层、业务逻辑层、数据层的形式进行整合,届时会更新本设计文档。