当前位置:首页 >> 计算机软件及应用 >>

基于Android的糗事百科项目文档


物联网应用开发实践大作业

学院名称: 计算机与信息工程学院 班级名称: 学生姓名:XXX 学 题 号: 目:基于 Android 的糗事百科 APP 设计与实现

指导教师 姓 名:

一、引言
1.1 开发背景 随着社会的进步和经济的繁荣,手机己经成为人们日常生活工作中一种必不 可少的娱乐通讯工具,其制造成本不仅越来越低,而且它所提供的功能也越来越 丰富强大,成为名副其实的智能手机。手机的使用日渐多功能化,形式多样化, 无论是视觉上还是使用上, 越来越符合用户需求。移动互联网技术逐渐渗透到人 们生活、工作的各个领域,俨然已是人类社会必不可少的一部分,为满足用户更 好的体验,手机已经从过去单一的通话工具变成功能齐全的个人移动平台产品。 2011 年 4 月,苹果公司在自主研发的手机终端上推出了划时代的手机应用产品 —Siri, 这一应用将语音识别技术成功应用在移动终端的人机交互中,取的了巨 大的成功,随后,类似 Siri 的语音助理产品蜂拥而至。众所周知,苹果公司的 iOS 系统是非开源的,Google 互联网公司于 2007 年 11 月正式推出一款免费、开 放源代码、 支持第三方开发的智能手机操作系统 Android 系统,因其开放源代码 的优势,越来越受到广大爱好者以及软硬件开发商的青睐,到 2010 年末,在市 场占有率上,Android 系统超过诺基亚 Symbian 系统。2015 年 9 月 30 号,谷歌 首席执行官桑达尔宣布了一组数据,Android 操作系统的使用者仅仅 16 个月就 增加了 4 亿, 市场占比达到 80%, 在智能手机中占有率达到 85%。 与此同时, Android 系统平台下的各种应用软件也在不断出现、更新、优化。 1.2 研究意义 手机使用频率的明显提高, 很大一部分是因为用户可以随时随地方便快捷的 通过手机查找到自己需要的信息。调查表明搞笑视频或者笑话可以让人心情愉 悦,生活工作的压力大,难免会心情烦操,看搞笑视频或者笑话也成为一些人生 活的调剂品, 缓解工作的疲劳, 舒缓烦躁的心情, 有时候也用于打发无聊的时光。 所以在休闲的时候手机用户会使用手机上网搜索一些糗事信息以供娱乐, 但是上

网查找的信息比较单一, 还有一点就是只能看别人发的搞笑事情,不能在此平台 上分享自己遇到的搞笑事情。 基于这种情况,我们小组经研究决定开发一款集合 纯图糗事、纯文糗事、视频糗事等等的糗事大全 APP 名为糗事百科,此系统不仅 仅方便用户根据自己的喜好查看相关糗事,而且还可以让用户分享糗事、评论糗 事以及查看评论,值得一提的还有另一个亮点就是集成了直播模块。本款 APP 就是为了喜爱看糗事的用户设计的,是其休闲娱乐的头号选择。 1.3 研究现状 作为一种有趣的亚文化的形式,“糗”正在悄悄地芡延。从糗事百科到电影 《泰囧》,从暴走漫画到恶搞视频,这样一种看、读、硒糗事的文化正在兴旺。中 国社会从来没有一个时期如此疯长糗事的言说狂欢,也从来没有一个时期人们会 在这种换享的叙卒狂欢里面表达着愤怒、不满、委屈、沮丧和吊诡的快感。 2011 年初数据显示, 仅正式上市两年的操作系统 Android 以其极大优势,发 展空间更胜一筹, 超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机 平台。众所周知,中国拥有潜力巨大的安卓手机市场。2012 年 11 月数据显示, Android 占据全球智能手机操作系统市场 76%的份额,中国市场占有率为 90%。 Android 系统,拥有低廉的引入成本,良好的用户体验开放性较强的特点, 加上 Android Market 和众多第三方应用商店做后盾, 在应用方面的资源也非常

丰富;虽然 Android 目前存在安全性和版本混乱等问题,但由于其适应了移动互 联网的发展趋势, 切合了移动互联网产业链各方的发展变化需求,所以取得了迅 猛的发展。

二、相关技术概述
2.1 Android 平台概述 Android 是谷歌公司于 2007 年 11 月 5 日宣布的基于 Linux 平台的开源手机 操作系统的名称, 号称是首个为移动终端打造的真正开放和完整的移动软件,该

平台包括移动电话工作所需的全部软件, 而且不存在任何以往阻碍移动产业创新 的专有权障碍。 Android 操作系统主要包括如下特性: 应用框架:用于开发可重用可替代的组件。 Dalvik 虚拟机:Android 采用的 Java 虚拟机是自主开发的代号为 Dalvik 的 虚拟机,在保证 API 方面兼容的同时 Dalvik 针对移动手机进行了大幅优化,占 用资源更小,运行效率更高。 SQLite 数据库:SQLite 提供结构化的数据存储。它是一款轻型免费的且开 源的数据库,设计目标是嵌入式的。它具备占用资源低、需要的内存空间少、处 理速度较快,并且还支持事务处理功能等优点。 多媒体支持: 支持各种通用的音视频和静态图像格式(MPEG4、 MP3、 JPG、 PNG、 GIF、AAC、H.264、AMR)。 强大的开发环境:包括一个设备模拟器,调试工具,内存和性能检测,以及 Eclipse IDE 的开发插件。Eclipse 是个集成开发环境。 2.2 开发工具概述 Android Studio 是一个 Android 集成开发工具,基于 IntelliJ IDEA。类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调 试。 2013 年 5 月 16 日,在 I/O 大会上,谷歌推出新的 Android 开发环境—— Android Studio, 并对开发者控制台进行了改进, 增加了五个新的功能。 Android Studio 是谷歌推出了新的 Android 开发环境,开发者可以在编写程序的同时看 到自己的应用在不同尺寸屏幕中的样子。谷歌对开发者控制台进行了改进,增加 了五个新的功能,包括优化小贴士、应用翻译服务、推荐跟踪、营收曲线图、用 版测试和阶段性展示。

1)优化小贴士:在主体中打开你的应用,点击小贴士,会得到这样的建议: 为你的应用开发平板电脑版本。 2)应用翻译服务:允许开发者直接在开发主体中获得专业的翻译。上传你 的需求,选择翻译,其会显示翻译方和价格,并在一周内发回译本。 3)推荐跟踪:允许开发者找出最有效的广告 4)营收曲线图:向开发者展示其应用营收,以国家进行划分 5)试用版测试和阶段性展示:开发者可以对应用进行测试,然后向测试用 户推出,测试结果不会对外公布。当一个版本的测试结束,开发者可以向特定比 例用户推出。 Android Studio 这款开发工具被首次公布,这也是为了方便开发者基于 Android 开发。首先解决的一个问题是多分辨率。Android 设备拥有大量不同尺 寸的屏幕和分辨率,根据新的 Studio,开发者可以很方便的调整在各个分辨率 设备上的应用。 同时 Studio 还解决语言问题, 多语言版本 (但是没有中文版本) 、 支持翻译都让开发者更适应全球开发环境。Studio 还提供收入记录功能。最大 的改变在于 Beta 测试的功能。Studio 提供了 Beta Testing,可以让开发者很方 便试运行。 2015 年 5 月 29 日, 在谷歌 I/O 开发者大会上,谷歌发布 AndroidStudio 1.3 版, 支持 C++编辑和查错功能。Android Studio 1.3 版开发码代码变得更加容易, 速度提升,而且支持 C++编辑和查错功能。 2.3 数据库系统

在 Android 系统开发中,存储数据时使用 Android 自带的数据库——SQLite 数据库。SQLite 是轻量级的、嵌入式的、关系型数据库,目前已经在 iPhone、 Android 等手机系统中使用,SQLite 可移植性好,很容易使用,很小,高效而且 可靠。SQLite 嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是

单独的一个进程。从外部看,它并不像一个 RDBMS,但在进程内部,它却是完整 的,自包含的数据库引擎。 本数据库支持功能如下: (1)自动建表,支持属性来自继承类:可根据注解自动完成建表,并且对于继 承类中的注解字段也支持自动建表。 (2)自动支持增删改,增改支持对象化操作:增删改是数据库操作的最基本单 元,不用重复写这些增删改的代码,并且添加和更新支持类似于 hibernate 中的 对象化操作。 (3)查询方式灵活:支持 android 框架提供的方式,也支持原生 sql 方式。 (4)查询结果对象化:对于查询结果可自动包装为实体对象,类似于 hibernate 框架。 (5)查询结果灵活:查询结果支持对象化,也支持结果为 List<Map<String,String>>形式,这个方法在实际项目中很实用,且效率更好些。 2.4 所用知识点 (1)RecyclerView/SwipeRefreshLayout 该控件用于在有限的窗口中展示大量数据集,RecyclerView 架构提供了一种插 拔式的体验, 高度的解耦, 异常的灵活, 通过设置它提供的不同 LayoutManager, ItemDecoration , ItemAnimator 实现令人瞠目的效果。SwipeRefreshLayout 顾名思义此组件就是一个布局,只不过只能有一个直接子 View。在 SwipeRefreshLayout 中有一个接口,通过此接口可以监听滑动手势,使用此组件最重要 的是实现其中的 onRefresh()方法,在这个方法中实现加载数据。 (2)ViewPager/TabLayout/Gson 这个类可以让用户左右切换当前的 view,ViewPager 继承自 ViewGroup,也 就是 ViewPager 是一个容器类,可以包含其他的 View 类。TabLayout 提供了一 个水平的布局用来展示 Tabs。Gson 是 Google 开发的 Java API,用于转换 Java 对象和 Json 对象,是把前后台传输的 JSON 字符串数据,解析成对象的形式,方 便引用。

(3)Volley Volley 是用于请求网络数据的第三方框架, 可以有效的解决图片缓存和请求 调度等问题。Volley 的优点有自动调度网络请求、多个并发的网络连接、可以 取消单个或多个请求、便于正确的更新 UI 和获得数据等等。 (4)获取网络数据,HTTP 联网下载数据,Json 解析数据,HTTP 是 web 浏览器 和服务用来交换信息的一种 Internet 应用协议,该协议允许用户使用一个客户 端程序通过 URL 在 web 服务器上检索文本、图像、声音等信息。JSON,全称是 JavaScript Object 务器进行交换数据。 Notation,是一种轻量级的数据交换格式,主要用于跟服

三、系统实现
3.1 界面实现 界面是实现 App 的第一步,也是 App 比较重要的组成,界面实现与用户 的交互。本系统主要包括五个界面,分别是“我的”、“糗事”、“直播”、 “小纸条”、“糗友圈”,“糗事”界面有分为“专享”、“视频”、“纯 文”、“纯图”、“精华”和“穿越”六个子页面,“糗友圈”界面分为“隔 壁”、“已粉”、“视频”和“话题”四个子界面。系统框架图如图 3-1。 主界面

我的

糗事

直播

小纸条

糗友圈

专 享

视 频

纯 文 频

纯 图

精 华

穿 越

隔 壁

已 粉

视 频

话 题

图 3-1 系统框架图

3.1.1 主界面布局 主界面有五个子页面分别是“我的”、 “糗事”、 “直播”、 “小纸条”、 “糗友圈”。完成这个页面使用的 Android 知识点有 LinearLayout、 RadioGroup、RadioButton、FrameLayout、selector 和 Fragment,每一个 子页面均使用 Fragment 实现,Fragment 是轻量级的 Activity,适合于页面 的跳转; RadioButton 单选按钮的作用是实现主页面五个 Fragment 页面的跳 转;FrameLayout 是盛放子页面 Fragment 的容器;为了区分子页面是否被选 中所以 RadioButton 使用了选择器 selector,界面效果如图 3-1。

图 3-1 主页面布局效果图

3.1.2 “糗事”和“糗友圈”页面布局 这两个页面均使用 Fragment 实现,且布局原理是相同的。页面的布局是 线性布局的嵌套使用,页面滑动效果使用的是滑动视图 ViewPager,标题栏 是自定义的其中嵌套了 Tablayout,使用 TabLayout 是因为 TabLayout 和 ViewPager 可以方便的实现联动,界面效果如图 3-2。

图 3-2 “糗事”和“糗友圈”页面布局效果图

3.1.3 “直播”页面布局 直播页面的效果是界面顶端有一个标题栏, 标题栏的下方有一个轮播图, 在往下就是各个直播间,直播间的展示效果是两列若干行。基于这种界面效 果我们采用的实现方法把界面分成两部分,一部分是标题,采用自定义标题 栏实现,较简单不多赘述;另一部分是视频展示,也是重点要实现的,这里 采用的控件是 RecyclerView,轮播图部分是通过给 RecyclerView 添加头视 图的方式实现的,轮播图通过 ViewPager 和 Handler 结合实现,布局效果如 图 3-3。 3.1.4 “小纸条”页面布局 这个页面可以添加一些纸条,记录一些事情,页面采用 RecyclerView 展示数据,布局效果如图 3-4。 3.1.5 “我的”页面布局 LinearLayout 和 RelativeLayout 嵌套使用,结合简单 UI 控件实现布局 效果,布局效果如图 3-5。

图 3-3 “直播”页面布局效果图

图 3-4 “小纸条”页面布局效果图图 3-5 “我的”页面布局效果图

3.2 数据展示/功能实现 3.2.1 “糗事”页面数据展示 完成“糗事”页面的数据展示, “糗事”页面数据包括六部分,分别是专享、 视频、纯文、纯图、精华、穿越,展示这些数据使用的控件是 RecyclerView, 页面的切换效果使用 TabLayout 和 ViewPager 实现。 (1) 子页面间的切换效果 “糗事”页包括很多子页面,这些子页面可以通过滑动切换还可以通过点击 标题栏切换,并且标题栏和页面是同步的。页面滑动效果使用的是 ViewPager, 标题栏是 TabLayout,切换效果是 ViewPager 和 TabLayout 的联动。 实现代码:
// TabLayout 和 ViewPager 双向、交互联动。 tabLayout.setupWithViewPager(viewPager);

(2) “专享”页数据展示 “专享”页包括纯图、纯文和视频糗事,使用 RecyclerView 控件展示数据, 因为展示的数据不同,所以需要使用 RecyclerView 的多布局。实现方法是,首 先针对每一种样式写一个布局文件,然后自定义一个适配器类继承自 RecyclerView.Adapter,重写 getItemViewType()方法,确定对应位置 item 项 的布局样式, 重写 onCreateViewHolder()方法根据 getItemType()方法的返回值 创建对应的布局, 重写 onBindViewHolder()方法根据 getItemType()方法的返回 值绑定对应的数据。数据是使用第三方网络请求框架 Volley 获得的,得到的数 据是 JSON 字符串,然后使用 Gson 解析成对象集合。 “视频”、“纯图”和“纯文”页数据展示同上。 (3) 下拉刷新和上拉加载

下拉加载最新,就是在下拉的时候请求最新的数据。SwipeRefreshLayout 本身就实现下拉刷新的功能。上拉加载也称之为分页加载,在一个应用的运行过 程中数据会越来越多, 服务器端为了解决一次请求数据过多对数据进行了分页处 理, 结合 SwipeRefreshLayout 和 RecyclerView 的相关知识就可以实现数据的分 页加载,可以起到节省手机空间、提示 APP 运行速度以及节省手机流量的作用。 分页加载的原理,服务端提供的接口设置一个 page 参数,page 值的改变决 定了加载的数据,http://m2.qiushibaike.com/article/list/latest?page=%d 这个网址便是一个网络接口; 手机端通过 RecyclerView.OnScrollListener 监听 器中的方法判断加载的数据是否显示全部完全展示给用户, 以及用户是否在继续 上拉准备查新一页的数据,如果是就调用 SwipeRefreshLayout 的 setRefreshing(true)方法,系统就会回调已经重写的 SwipeRefreshLayout. OnRefreshListener 中的 onRefresh()方法,实现加载更多。 3.2.2“话题”界面功能 完成糗友圈中的“话题”界面的功能,此页面分为上下两个部分,一部分是 头视图用于展示浏览过的话题标题,另一部分展示推荐的话题的标题,点击每一 个话题项都会跳转到话题的详情页面。本周比较复杂的问题是给 RecyclerView 添加展示数据列表的头视图。 (1)完成“话题”页布局 “话题”页面的数据展示样式不为上下两部分,经讨论我们确定了一种实现 方法,就是使用 RecyclerView 控件实现下部分数据的展示,因为 RecyclerView 没有添加头视图的方法,所以这里使用另一个类 RecyclerViewHeader 实现给 RecyclerView 添加头视图的效果,实现方法是通过 FrameLayout 布局,将 RecyclerViewHeader 布局放在 RecyclerView 的上层,代码如下: <FrameLayout android:layout_width="match_parent"

android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|top" /> <com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader android:id="@+id/header" android:layout_width="match_parent" android:layout_height="100dp" android:layout_gravity="center_horizontal|top">

</com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader>

</FrameLayout> (2)完成“话题”页头视图 头视图中显示的数据列表是用户查看的过的话题的标题,样式是两行若干 列,小组讨论决定选择 RecyclerView 控件展示数据,因为 RecyclerView 的 setLayoutManager()方法可以很方便的设置 RecyclerView 的列表样式,这里使 用网格布局管理器 GridLayoutManager,代码如下: <com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader android:id="@+id/header" android:layout_width="match_parent" android:layout_height="100dp" android:layout_gravity="center_horizontal|top"> //头视图中添加 RecyclerView 用于展示数据 <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent"

android:layout_height="wrap_content"/> </com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader>

//设置网格布局管理器
1. GridLayoutManager girdLayoutManager=new GridLayoutManager(this,4); 2. recyclerView_one.setLayoutManager(girdLayoutManager);

(3)话题详情页面 话题详情页面是通过点击话题列表项实现的跳转,话题详情页是 Activity, 之所以使用 Activity 是因为页面跳转的时候会携带数据, Fragment 向 Activity 传值比较方便实现。点击跳转到话题详情页的效果是通过 RecyclerView 的点击 事件实现的, 但是 RecyclerView 没有为 Item 开放 onItemClick 等点击事件,所 以这里要自己实现。 实现思路,因为 ViewHolder 我们可以拿到每个 Item 的根布 局,所以如果我们为根布局设置单独的 OnClick 监听并将其开放给 Adapter,那 不就可以在组装 RecyclerView 时就能够设置 ItemClickListener,只不过这个 Listener 不是设置到 RecyclerView 上而是设置到 Adapter, 自定义 Item 点击监 听器的主要代码如下: //自定义条目点击监听器接口
1. public interface MyItemClickListener { 2. 3. } 4. public interface MyLongItemClickListener { 5. 6. } public void onItemClick(View view,int postion); public void onItemClick(View view,int postion);

//在 MyViewHolder 中调用点击事件
1. 2. 3. 4. public MyViewHolder(View rootView,MyItemClickListener listener,MyItemLongCl ickListener longClickListener) { super(rootView); iv = (ImageView)rootView.findViewById(R.id.item_iv); tv = (TextView)rootView.findViewById(R.id.item_tv);

5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. } /** } /** }

this.mListener = listener; this.mLongClickListener = longClickListener; rootView.setOnClickListener(this); rootView.setOnLongClickListener(this);

* 点击监听 */ @Override public void onClick(View v) { if(mListener != null){ mListener.onItemClick(v,getPosition()); }

* 长按监听 */ @Override public boolean onLongClick(View arg0) { if(mLongClickListener != null){ mLongClickListener.onItemLongClick(arg0, getPosition()); } return true;

//Adapter 中对外开放相关方法
1. /** 2. 3. 4. 5. 6. 7. 9. 10. 11. } } this.mItemLongClickListener = listener; Adapter 中 * 设置 Item 点击监听 * @param listener */ public void setOnItemClickListener(MyItemClickListener listener){ this.mItemClickListener = listener;

8. public void setOnItemLongClickListener(MyItemLongClickListener listener){

//给 RecyclerView 设置监听
1. this.mAdapter.setOnItemClickListener(this);

2. this.mAdapter.setOnItemLongClickListener(this); 3. 4. @Override 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. how(); 17. 18. } } @Override public void onItemLongClick(View view, int postion) { MyItemBean bean = mData.get(postion); if(bean != null){ Toast.makeText(this, "LongClick "+bean.tv, Toast.LENGTH_SHORT).s } } public void onItemClick(View view, int postion) { MyItemBean bean = mData.get(postion); if(bean != null){ Toast.makeText(this, bean.tv, Toast.LENGTH_SHORT).show();

3.2.3 “直播”界面功能 完成“直播”界面的功能,直播页面展示的是美女主播的信息,包括主播的 照片、用户名和观看直播的人数,展示样式两行若干列,点击每一个主播的照片 都会跳转到直播详情界面。基于直播页面的功能效果,我们小组经研究决定,直 播界面的数据展示使用 RecyclerView 实现, 因为 RecyclerView 没有开放的 Item 点击监听器, 所以需要自定义 RecyclerView 的点击监听器, 然后给 RecyclerView 设置 Item 点击监听器,实现界面跳转的功能;界面跳转使用 Intent 实现, Fragment 向 Activity 传值使用回调接口实现;直播详情页的用户交互组件使用 Activity 实现,使用第三方框架 Vitamio 实现播放直播的视频流。 (1)完成“直播”页布局 “直播” 页采用两行若干列的形式展示直播信息。使用 RecyclerView 实现这 种展示效果,实现分为两部分,一部分是在布局中添加 RecyclerView 控件,另 一部分是在代码中利用 RecyclerView 的网格布局管理器设置 RecyclerView 的列 数。代码如下:

//布局中添加 RecyclerView 控件
<android.support.v7.widget.RecyclerView android:id="@+id/recyclerViewFound" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal|top" />

//代码中设置 RecyclerView 的列数
gridLayoutManager= new GridLayoutManager(context,2); recyclerView.setLayoutManager(gridLayoutManager);

(2)界面跳转和传值 界面跳转是通过 Intent 实现的,Android 中提供了 Intent 机制来协助应用 间的交互,Intent 负责对应用中一次操作的动作进行描述,Android 根据此 Intent 的描述找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调 用,界面跳转代码如下: Intent intent = new Intent(); //这里用 getActivity().startActivity(intent); intent.setActivity(getActivity(), TargetActivity.class); startActivity(intent); Fragment 向 Activity 传值,需要借助回调接口实现。实现步骤: 1.在 Fragment 中写一个回调接口; 2.在 activity 中实现这个回调接口; 3.在 Fragment 中 onAttach 方法中得到 activity 中实现好的实例化接口对象; 4.用接口的对象进行传值。 (3)播放直播视频流 播放直播视频流使用的是第三方视频框架 Vitamio。 Vitamio 全面支持硬件解 码与 GPU 渲染, 而且还支持各种常见的流媒体协议, 可以点播或者直播音频和视 频,能无缝支持 MMS、RTSP (RTP, SDP), RTMP、HTTP progressive streaming、 HLS - HTTP live streaming (M3U8)等常见的协议。 使用 Vitamio 播放视频流的步骤: 1) 导入 library_vitamio 库 2) AndroidManifest.xml 中加入这个代码 <!-- Don't forgot InitActivity -->

<activity android:name="io.vov.vitamio.activity.InitActivity" android:configChanges="orientation|screenSize|smallestScreenSiz e|keyboard|keyboardHidden|navigation" android:launchMode="singleTop" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden" /> 3) AndroidManifest.xml 中加入这个代码 修改库中的 gradle 中的代码: compileSdkVersion 23 buildToolsVersion "24.0.3" 4) AndroidManifest.xml 中加入这个代码 /** 播放视频* */ voidplayfunction(VideoViewmVideoView, String path) { mVideoView.setVideoPath(path); mVideoView.setMediaController(new MediaController(context)); mVideoView.requestFocus(); mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer1) { mediaPlayer = mediaPlayer1; mediaPlayer.setPlaybackSpeed(1.0f); mediaPlayer.setLooping(true); mediaPlayer.start(); } });}

5) 重要的一步 MyApplication 中,一定要注册 //初始化 Vitamio 播放器视频 Vitamio.isInitialized(getApplicationContext()); 3.3 分享信息 完成第三方分享的功能,大家一起开心才会更快乐。点击分享,弹出可以分 享到的社交平台,平台有 QQ、微信、微博等,选中一个输入账号密码分享。 (1)完获取 ShareSDK 的 AppKey 1) 打开 http://mob.com/ ,在官网首页选择登录或注册,新用户先注册, 老用户直接登录。 2) 注册或登录完成后,会返回至首页,点击右上角的小头像图标,选择“进 入后台” , 会跳转至产品中心页面, 点击进入 ShareSDK 即社会化分享 SDK。 3) 点击应用然后点击添加应用,弹出“添加应用”的弹窗,填写您应用的 名称(应用如果还在开发阶段,名称也还不确定的话,可以先随便写一 个名称,日后可以修改),选择相应的 Android 或 iOS 版本,点击“确 定”即可,应用创建完成。如果您一个应用同时有 Android 和 iOS 版本, 请在后台分别创建两个应用。 4) 创建应用完成后会自动跳转至该应用的概况页面,此时会获得该应用的 App Key 和 App Secret。App Secret 默认隐藏显示,点击右边的眼睛图 标即可展开显示。 (2)下载 SDK 下载页如图 2-1 所示:

图 2-1 下载页面

选择下载,下载完之后的解压目录如图 2-2 所示:

图 2-1 SDK 解压目录

(3)快速集成 进入 ShareSDK 解压目录,打开“Share SDK for Android”目录,可以找到 “QuickIntegrater.jar”,这个就是快速集成 ShareSDK 的工具。Windows 下首 先确定您已经安装了 JDK,并且正确配置了 JAVA_HOME 和 PATH 系统变量,此时 您可以双击 QuickIntegrater 启动程序,如图 3-1。

图 3-1 集成开发

(4)快配置 AndroidManifest.xml 1)添加权限
<uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/> <uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/> <!--蓝牙分享所需的权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

2)添加 Activity 的信息
<activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" >

<intent-filter> <data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>

<!--调用新浪原生 SDK,需要注册的回调 activity --> <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <!--微信分享回调 --> <activity android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" />

3)替换 mob 后台申请的 key 和各个平台申请的 key,如图 4-1。

图 4-1 替换 key

(5)添加分享代码

在程序启动的时候添加初始化代码(注:不要等调用 ShareSDK 功能之前才初 始化),ShareSDK.initSDK(this)。 在您的代码中调用此方法,即可打开一键分享功能进行分享:
private void showShare() { OnekeyShare oks = new OnekeyShare(); //关闭 sso 授权 oks.disableSSOWhenAuthorize(); // title 标题,印象笔记、邮箱、信息、微信、人人网、QQ 和 QQ 空间使用 oks.setTitle("标题"); // titleUrl 是标题的网络链接,仅在 Linked-in,QQ 和 QQ 空间使用 oks.setTitleUrl("http://sharesdk.cn"); // text 是分享文本,所有平台都需要这个字段 oks.setText("我是分享文本"); //分享网络图片,新浪微博分享网络图片需要通过审核后申请高级写入接口,否则请注释掉测 试新浪微博 oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg "); // imagePath 是图片的本地路径,Linked-In 以外的平台都支持此参数 //oks.setImagePath("/sdcard/test.jpg");// 确保 SDcard 下面存在此张图片 // url 仅在微信(包括好友和朋友圈)中使用 oks.setUrl("http://sharesdk.cn"); // comment 是我对这条分享的评论,仅在人人网和 QQ 空间使用 oks.setComment("我是测试评论文本"); // site 是分享此内容的网站名称,仅在 QQ 空间使用 oks.setSite("ShareSDK"); // siteUrl 是分享此内容的网站地址,仅在 QQ 空间使用 oks.setSiteUrl("http://sharesdk.cn"); // 启动分享 GUI oks.show(this); }

四、结果分析

最后,分别对系统的糗事页、话题页、直播页和分享页进行测试,验证了该 系统的稳定性、可用性,能够为用户提供更加完善的服务,经测试系统可用,实 现了事先设定的功能。 4.1 糗事页 糗事页展示的糗事信息有专享、纯文、视频、纯图、精华和穿越糗事,经验 证展示数据正确,如图 4-1 所示。 4.2 话题页 话题页上一部分展示的是查看过的话题标题, 下一部分展示的是所有的话题 标题,经验证数据显示正确,如图 4-2 所示。

图 4-1 糗事页数据展示图 4-2 话题页数据展示

4.3 直播页 直播页展示美女直播的简单信息,点击可以跳转到相应的直播界面,经测试 数据展示正确,功能正常,如图 4-3。 4.4 分享页 点击分享,弹出可以分享的平台,选择平台完成分享,经测试功能正常,如 图 4-4。

图 4-3 直播数据页面图 4-4 分享功能展示

五、总结
本文是以基于 Android 的 APP 原型设计为研究对象,在研究的过程中,以糗 事百科为研究对象,在研究的过程中,首先,对糗事百科的用户群进行了分析和 定位,在定位的基础上,获得用户的需求,为了让用户对需求更加清晰明了,采

取用用户实例的方式, 对用户的各种属性特征进行了分析和总结。通过对用户需 求整体和总结,整理出了糗事百科的功能模块,主要由热门、图片、文字、视频 等菜单组成,进而设置出糗事百科的功能点,以便更好地满足用户的需求。在交 互设计方面,糗事百科采取了良好的交互设计,保障了用户较好的用户体验。在 交互设计时,糗事百科采取了“少即是多”、“快即是慢”的设计原则,保障用 户较好体验,在设计交互体验时,采取“别让我等”、“别让我想”以及“别让 我烦”的设计准则,保证糗事百科 APP 版在设计方面较好的用户体验。

六、参考文献
[1]陈为.用户体验设计要素及其在产品设计中的应用[J].包装工程,2011(10). [2]刘毅.中国市场中的用户体验设计现状[J].包装工程,2011(4). [3]欧阳波,贺赟.用户研究和用户体验设计[J].江苏大学学报:自然科学版, 2006(S1). [4]李仪凡.互联网用户体验结构模型[D].上海:复旦大学,2009. [5]马鹏.基于用户体验的产品设计方法研究[D].上海:东华大学,2009. [6] 欧阳零.Android 核心技术与实例详解(第 2 版)[M].北京:电子工业出 版社,2013.4. [7] 王向辉,张国印,沈洁.Android 应用程序开发[M].清华大学出版社,2010 年 3 月. [8] Android SDK 开发范例大全[M].北京:机械工业出版社,2010.6.

[9] 韩万江.软件工程案例教程[M].机械工业出版社,2008. [10] 刘卫国,姚昱禹.Android 的架构与应用开发研究[J].中南大学:信息科 学与工程学院 计算机系统应用 2008-11:110-112.

[11]卿斯汉. Android 安全的研究现状与展望[J]. 电信科学, 2016(10).


相关文章:
基于Android的糗事百科项目文档_图文.doc
基于Android的糗事百科项目文档_计算机软件及应用_IT/计算机_专业资料。
糗事百科APP体验分析报告_图文.pdf
暂无评价|0人阅读|0次下载 | 举报文档 糗事百科APP体验分析报告_互联网_IT/计算机...糗事百科APP( android版)简介: 糗事百科APP( android版)于2012年与iO S版...
糗百文化:糗事百科的运营哲学_图文.pdf
暂无评价|0人阅读|0次下载 | 举报文档 糗百文化:糗事百科的运营哲学_互联网_...移动端的发力 糗事百科开发了Android和IO S移动客户端,并针对移动设备访问的糗...
爱糗事百科_图文.ppt
暂无评价|0人阅读|0次下载 | 举报文档糗事百科_语文_高中教育_教育专区。...糗事百科开发了Android和IOS移动客户端, 糗百网页做了优化 糗百的娱乐价值 ? ...
糗事百科的运营哲学 从无名小站成长为日PV过千万.doc
暂无评价|0人阅读|0次下载 | 举报文档 糗事百科的运营哲学 从无名小站成长为日...移动端的发力 糗事百科开发了 Android 和 IOS 移动客户端,并针对移动设备访问的...
3的个人空间 - 糗事百科.unkown
Android 客户端 iPhone 客户端 关注 微信 手机扫描...糗事百科账号登录 登录 忘记密码? ...
娃儿第一次学古筝就淘醉其中! - 糗事百科.unkown
糗事百科加入收藏夹 iOS 下载 Android 下载 扫码下载糗事百科app
老年人摔跤后吃什么好 - 糗事百科.unkown
"老年人摔跤后吃什么好"的糗事 女生个性签名搞笑 爆笑校园手机漫画 幽默而又有内涵...iOS 下载 Android 下载 扫码下载糗事百科app 爆笑糗事精选 优秀如我 逆流而...