APP下载

基于Android的视频播放系统的设计与实现

2018-01-25刘利强刘朝辉

关键词:控件菜单好友

刘利强, 刘朝辉



基于Android的视频播放系统的设计与实现

刘利强, 刘朝辉

(湖南理工学院 计算机学院, 湖南 岳阳 414006)

为了让人们更有效地利用碎片化时间, 本文设计开发了一款移动视频播放客户端. 该系统主要为用户提供本地视频管理与播放, 网络视频观看与下载, 以及用户个人信息管理、好友管理、视频分享、好友点赞、评论等功能. 相较其他视频播放器而言, 该系统具有结构完整、功能完备、交互性好、视频资源管理便捷以及好友实时分享视频等特点, 并且通过集成Vitamio实现多种视频格式解码, 更方便用户浏览各种视频.

Android; 视频播放器; 微视频分享

随着科技的进步和计算机网络的快速发展, 计算机越来越微型化, 手机也越来越智能化, 而人们更是越来越离不开这些功能强大和使用便捷的智能设备. 智能设备的广泛运用和迅速发展, 使得各种音频视频资源在网络上广泛传播, 欣赏和传播音频视频资源已经渐渐成为人们生活中必不可少的一部分[1, 2]. 现在网络上的手机播放器品种繁多, 但是大部分播放器一味追求功能齐全, 外观过于花哨, 造成了用户手机资源的巨大浪费, 因此开发一款好用的手机播放器具有较好的应用前景[3, 4].

1功能需求分析

视频播放器的主要功能主要包括: 本地视频的查看、播放、排序、删除、重命名, 网络视频的播放以及下载, 用户发表带有视频的动态消息到好友圈并在朋友圈显示出来, 好友点赞以及评论, 用户对个人信息进行管理以及对好友列表进行管理等.

首页展示用户所有好友分享的视频动态, 通过服务器从数据库中获取数据并通过下拉或上拉刷新视图. 用户可对好友视频动态进行点赞和评论; 点击评论图标或者动态描述文字可以进入该动态详情页; 可浏览视频所有评论; 可以点击视频播放按钮进行在线播放或者点击全屏按钮进入播放页播放; 可以点击好友头像进入该好友视频动态中心页查看该好友所有视频动态; 点击顶部的菜单按钮可以发布视频动态到该页面中.

本地视频页展示所有本地视频. 通过顶部菜单按钮可对这些视频资源按名称、时间、大小进行排序重新显示; 单击视频可进入播放页面; 点击视频右上角的菜单按钮可对视频进行打开、移除、重命名、查看详情等操作.

网络视频页展示所有服务器端视频资源. 通过下拉或上拉刷新视频资源; 点击视频可以转到播放页在线播放; 点击视频右上角下载图标可下载该视频到本地; 通过顶部菜单按钮可以刷新该页面或者进入下载页面.

视频播放页用来播放本地视频或者网络视频. 该页由视频播放控件和控制面板组成. 视频播放控件可以播放本地视频以及网络视频, 播放的视频格式要满足网络上流行的大部份格式; 控制面板由两部分组成, 上部分可以显示播放视频的名字、电源电量、系统时间、音量; 下部分用来控制视频的播放, 可以点击返回按钮返回主界面, 可以点击播放上一个视频按钮或者下一个视频按钮来实现播放视频的切换; 可以通过点击视频播放暂停按钮或者长按屏幕实现视频播放暂停功能; 可以通过点击全屏按钮实现播放视频的全屏播放和默认播放; 点击屏幕可实现控制面板的显示隐藏效果.

2系统功能设计

视频播放器共分为登录模块、主界面模块、本地视频模块、网络视频模块、个人中心模块和朋友圈模块6个模块, 系统功能结构模块图如图1所示.

图1 系统功能模块图

登录模块包括登录和注册页面, 用户可在此页面进行登录或注册操作, 手机需要联网. 登录成功后跳转到主页面并显示首页模块. 首页加载好友动态列表, 并通过下拉或上拉进行刷新. 用户可对每条动态点赞或者评论, 也可以点击视频在线观看.

点击本地视频按钮可切换至本地视频页面, 用户可以对本地视频进行管理以及播放. 网络视频模块用来显示服务器上的所有视频资源, 用户可在线观看以及下载.

个人中心模块显示用户信息并且对好友进行管理.

3界面设计

3.1 本地视频模块

本地视频页面用来展示所有本地视频, 用户可对这些视频进行管理. 页面用ListView构造, 每个Item显示一条视频信息, 包括视频缩略图、名字、大小、时间、菜单. 页面截图如图2所示.

(1) 布局

用帧布局(FrameLayout)包裹一个用相对布局(RelativteLayout)写的local_video页面, 该页面显示三个控件ListView、TextView和ProgressBar. 用相对布局为ListView的Item写一个item_local_video页面, 页面显示视频的基本信息以及一个菜单按钮. 页面控件在LocalVideoAdapter类中初始化并使用. 用菜单页面实现点击菜单按钮弹出菜单.

(2) 加载本地的视频

在子线程中加载视频, 用getLocalVideo()方法读取本地视频资源, 读取的视频放入ArrayList集合中. 写一个VideoItem类来存储视频信息, 包括视频名称、大小、时长和在SD卡中的绝对地址.

要在主线程设置适配器, 用Handler设置适配器, 部分源码如下:

private Handler handler=new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

if(videoItems!=null&&videoItems.size()>0){

//有数据就设置适配器

videoPagerAdapter=new VideoPagerAdapter(context,videoItems);

listView.setAdapter(videoPagerAdapter);

//把文本隐藏

tv_novideo.setVisibility(View.GONE);

}else {

//没有数据就文本显示

tv_novideo.setVisibility(View.VISIBLE);

}

//ProgressBar隐藏

pb_loading.setVisibility(View.GONE);

}

};

图2 本地视频页面截图

(3) 设置item的点击事件

点击视频Item可以直接进入播放页播放此视频. 用Intent类和Bundle类实现不同Activity之间的数据传递. 视频菜单点击事件用来管理该视频.

3.2 网络视频模块

网络视频页面用来展示所有服务器端视频, 用户可对这些视频进行查看和播放. 页面用ListView构造, 每个Item显示一条视频信息, 包括视频缩略图、名字、大小、时间、菜单. 页面截图如图3所示.

图3 网络视频页面截图

(1) 布局

用帧布局包裹一个用相对布局写的net_video页面, 该页面显示三个控件ListView、TextView和ProgressBar. 页面控件在NetVideoPager类中初始化并使用. 用相对布局为ListView的Item写一个item_net_video页面, 页面显示视频的基本信息以及一个菜单按钮. 页面控件在NetVideoAdapter类中初始化并使用.

(2) 加载网络的视频

在子线程中加载视频, 用getNetVideo()方法获取网络视频资源, 读取的视频放入ArrayList集合中. 用VideoItem类来存储视频信息, 包括视频名称、大小、时长和在服务器中网络中的Uri地址.

(3) 设置item的点击事件

点击视频Item可以直接进入播放页播放此视频. 视频菜单点击事件用来管理该视频.

3.3 朋友圈模块

朋友圈页面用来实时显示用户好友视频动态, 用户可以对动态点赞和评论. 页面用ListView来构造, 从服务器读取所有好友动态数据并用适配器加载到该页面, 每条好友动态包括头像图标、用户名、视频描述、分享日期、视频、点赞按钮、评论按钮. 朋友圈页面截图如图4所示.

(1) 布局

用帧布局包裹一个用相对布局写的dynamic_video页面. 该页面控件在DynamicVideoPager类里初始化并使用. 用相对布局为ListView的Item写一个item_dynamic_video页面, 页面显示分享视频的用户头像ImageView、用户名TextView、视频描述TextView、分享的视频VideoView、分享日期TextView、点赞Button以及评论Button. 页面控件在DynamicVideoAdapter类中初始化并使用.

(2) 加载动态消息

在子线程中加载动态消息, 用getDynamicVideo()方法获取服务器端数据库里的动态视频资源, 读取的动态视频放入ArrayList集合中. 写DynamicVideoItem类来存储视频信息.

(3) 设置item的点击事件

点击动态视频Item可以进入动态视频详情页查看该动态消息的详情. 点击视频可在线播放, 点击全屏按钮可以进入播放页播放此视频, 点击点赞按钮可以点赞该动态消息, 点击评论可以进入动态视频详情页查看该动态消息的详情并评论. 菜单点击事件用来发布动态消息.

图4 朋友圈页面截图

4 结束语

开发出一款移动端视频应用能够帮助人们更好利用碎片化时间并向好友分享精彩生活瞬间. 本系统实现了本地视频管理、网络视频播放及下载、分享本地视频并点赞、评论等功能, 同时为用户提供了良好的界面交互体验. 今后会尽量扩展相应的功能, 达到真正的移动端微视频分享客户端.

[1] Zhiwu Zhu, Xu Liu, Xiangyu Li.:[J].Polymers & Polymer Composites, 2014, (221): 45~230

[2] 叶晓静, 黄俊伟.基于Android系统的多媒体播放器解决方案[J].现代电子技术, 2011

[3] Xin Chen, Songwei Ma, Bingli Guo, etc.[J]. Optical Switching and Networking, 2014(12): 6~22

[4] 姚昱旻, 刘卫国. Android的架构与应用开发研究[J]. 计算机系统应用, 2008

Design and Implementation of Video Player System Based on Android

LIU liqiang, LIU Zhaohui

(College of Computer Science, Hunan Institute of Science and Technology, Yueyang 414006, China)

To make it more efficient to use fragmentation time, it is essential to develop a mobile video playback client. The system is mainly to provide users with local management of video and broadcast, network video to watch and download, as well as the users' personal information management, management, video sharing and thumb up friends, reviews and other functions. Compared with other video player, the system has good structure complete, fully functional, interactive, real-time video resource management convenient and the friends share video etc, and realizes a variety of video formats through integrated Vitamio decoding, more convenient for users to browse all kinds of video.

Android, video player, Micro video shares

2017-09-08

湖南省教育厅科学研究项目 (16C0721)

刘利强(1972− ), 男, 湖南桃江人, 湖南理工学院计算机学院高级实验师. 主要研究方向: 计算机应用

TP311.52

A

1672-5298(2017)04-0020-04

猜你喜欢

控件菜单好友
基于.net的用户定义验证控件的应用分析
中国新年菜单
属羊
关于.net控件数组的探讨
删除好友
本月菜单
一个“公海龟”的求偶菜单
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
雪花特快专递
Spreadsheet控件在Delphi数据库系统中的编程与应用