内蒙古科技大学通信工程专业实训报告

时间:2024.4.7

 成绩:     

通信工程专业实训报告

项目名称: 基于Android的视频播放器

学    号:            

姓    名:            

班    级: 11级通信2班

指导教师:   赵 瑛   

时间:20##年 6 16 日-20##年 6 27


基于Android的多功能视频播放器

摘 要

如今,随着基于Android操作系统的智能手机的广泛应用,视频播放器已成为智能手机的一个必不可少的程序,广大用户迫切需要一个贴近用户、方便用户、个性化的视频播放器。因此,设计一个基于Android手机的多功能播放器,具有重要的实际意义。 

本次实训我们主要使用Google 提供的Android Developer Tools集成开发环境进行开发,使用的编程语言是Java+xml语言。该程序主要由4个不同Activity来实现,每个Activity实现相应的功能模块,能够有效满足Android手机用户在视频播放中的基本需求。 本论文详细介绍了播放器程序的设计思路、设计方案、系统结构和项目工程结构,对系统的可行性与需求性进行了详细的分析,阐述了系统各个模块功能的设计与实现。对程序主要的Activity都进行了相应的介绍和分析,包括对其使用的布局文件的基本介绍。在最后进行了程序测试,对每一个实现的模块功能都做了测试,并且记录了相应截图用来展示测试结果,以观察程序应有的功能是否正常运行,以及发现程序中可能存在的问题。所开发的程序界面追求简洁,操作容易上手,节约了用户的学习成本。

关键字:Android;视频播放;Activity;Mediaplayer


目  录

第一章 引言. 4

1.1 软件开发背景. 4

1.2 Android简介. 4

1.2.1 Android基本架构. 4

1.2.2 Android开发基本知识. 5

1.2.3 Android平台优势. 6

1.3 软件简介. 6

1.3.1 开发环境:. 6

1.3.2 基本功能:. 6

1.3.3 操作方法:. 7

第二章 软件的总体设计. 8

2.1 设计思路. 8

2.2 设计框图. 8

 


第一章 引言

1.1 软件开发背景

在这个信息化的时代, IT业已经成为世界发展的主流,我们对信息技术的依赖远远超过了对我们自己的依赖,计算机和手机已经成为我们日常生活中不可缺少的获得信息的渠道。正因为如此,各种各样的软件层出不穷,我们的生活也因为各种各样的软件变的更有滋有味。不缺乏娱乐性,也不缺乏教育意义,让我们从这些软件中受益匪浅,使我们看到了相比以前的巨大进步。同时,随着科技的发展,计算机越来越精致,手机也越来越智能化,所以我们的依赖性也越来越大,越来越离不开这些给我们提供日常信息的工具。手机也已不再仅仅是简单的人与人通话的工具,而是在很大程度上成为了我们获取信息的一个更好的渠道。一个好的软件,能够标志一个手机品牌的地位。所以,开发一款好的手机软件是相当必要的。以前我们看电影,看视频,都要去电影院或者是影吧,而且时间有限,很不方便;而现在是在电脑上或者手机上看视频,看小说,文档等等。以此看来,一个好的手机视频播放器软件的开发是相当有必要的。

1.2 Android简介

Android是Google于20##年宣布的一种基于Linux的自由及开放源代码的移动设备操作系统,可用于智能手机、平板电脑等,随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机HTC G1发布于20##年10月。2014第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS,Android系统成为了全球通信与娱乐消费的第一大入口。具有开源特性的Android平台也打破了之前Symbian、iOS等操作系统封闭或付费授权的模式,使得智能手机成本大大的降低。而正是由于它开放源代码,使得手机产生更多个性化的应用。现如今Android操作系统的应用可以说是琳琅琅满目,但是良莠不齐。怀着对Google这一伟大公司的崇敬,我们决定在本次实训中尝试做一个基于Android的视频播放器,因为播放器是智能手机中必不可缺的重要功能,一个贴近用户,方便用户的多功能的播放器也是用户所渴望的。

1.2.1  Android基本架构

Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,结构图如下:

1.2.2  Android开发基本知识

Android开发四大组件“

(1)Activity: Android 中,Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似。

一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以通过intent进行相互跳转(通信),和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值。

(2)Service :Service 是Android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service是一种程序,它可以运行很长时间,但是它却没有用户界面。Service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录地理信息位置的改变等等,总之服务总是在后台运行的。

    (3)Broadcast:在Android 中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。

    (4)Content Provider :Content Provider 是Android提供的第三方应用数据的访问方案。在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生Content Provider类, 封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识。

1.2.3 Android平台优势

(1)开放性

在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

(2)不受束缚

在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从20##年iPhone上市后,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。

(3)丰富的硬件

这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。

(4)方便开发

Android的开发语言是java,java曾经可是开发行业的龙头,随着互联网的发展,java的开发方向有所转变,从平台开发转到了移动互联网中的Android开发,这也就是说Android也是属于开源的开发,他的开源性使得他占据了众多的优势。

1.3 软件简介

1.3.1 开发环境:

Android 用的是Linux内核,本系统在开发过程中,主要用到的就是当前Android应用层编程技术,因此,在编程环境上的选择是windows + Eclipse + java +Android SDK + Android Development Tools。

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。

Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。

在Eclipse编译IDE环境中,需安装ADT Plug-in,这是Android在Eclipse上的开发工具。

    开源使一切都成为了可能。

1.3.2 基本功能:

1、 硬件解码播放视频,支持视频播放基本的控制。

2、 支持流媒体播放,浏览器调用播放器播放。

3、 通过WampServer服务可以无线播放电脑端的视频。

4、 自适应分辨率设计,简洁风格的操作设计。

1.3.3 操作方法:

    1、全屏切换:双击屏幕

    2、播放/暂停:长按屏幕

    3、静音/恢复:长按音量按钮

    4、播放列表:控制面板最右边的按钮(暂不支持编辑功能)

5、音量调节:单击音量按钮,在弹出的音量显示区域触摸改变音量

1.3.4 软件界面:

注:控制面板可隐藏

第二章 软件的总体设计

2.1 总体设计思路

我们采用通过使用系统默认的解码器进行硬件解码播放视频的方式,因此它只支持系统默认的视频格式,如MP4、3GP等格式,一方面原因是如果通过软解码的话,播放视频的效率会很受影响,另一方面原因是我们的时间和编程经验有限,这也是主要原因。Android框架提供了videoview类来封装 MediaPalyer,我们通过调用videoview组件来实现应用中视频的播放,为了达到目的,我们对videoview做了相应的的修改,使之实现了我们需要的功能。视频文件的扫描采用最基本的扫描文件系统的方法来扫描视频文件。音量调节可以采用触摸操作的方式通过调用Android.Media 包中的AudioManager类来调节。

另外我们加入过网络播放的功能,可以支持HTTP协议的流媒体,基于此,我们想到了可以通过本地搭建服务器的方法可以实现手机端通过无线局域网的连接播放电脑端的视频文件,可以突破手机存储空间的限制,也省去了将视频必须将视频拷贝到手机的时间。这一功能的实现不是很难,但是有一定的创新性,也是我们的视频播放器的一个小亮点。

2.2 设计结构框图

第三章 软件详细设计

3.1 播放控制的调用(部分)

3.1.1 播放/暂停控制

  相应程序代码(含注释):

bn3.setOnClickListener(new OnClickListener(){      //监听bn3按钮的动作

              publicvoid onClick(View v) {           //点击bn3键后

                   // TODO Auto-generated method stub  

                   cancelDelayHide();          //播放控制面板取消隐藏

                   if(isPaused){               //如果暂停状态

                       vv.start();                 //开始

                       bn3.setImageResource(R.drawable.pause);        //按钮变成暂停

                       hideControllerDelay();               //隐藏控制面板

                   }else{                                        //如果是播放状态

                       vv.pause();                          //暂停

                       bn3.setImageResource(R.drawable.play);    //按钮变成播放

                   }

                   isPaused = !isPaused;            //改变播放状态    

              }

        });

3.1.2  错误信息代码

            publicboolean onError(MediaPlayer mp, int what, int extra) {

                   vv.stopPlayback();

                   isOnline = false;

                   new AlertDialog.Builder(VideoPlayerActivity.this)

                .setTitle("对不起")       //弹出消息的标题

                .setMessage("您所播的视频格式不正确,播放已停止。")   //弹出消息

                .setPositiveButton("知道了",       //弹出按钮

                        new AlertDialog.OnClickListener() {

                                @Override

                                 publicvoid onClick(DialogInterface dialog,

                                          int which) {

                                     vv.stopPlayback();

                                 }

                        })

                .setCancelable(false)

                .show();

                   returnfalse;

              }

3.2 音量的调节及优化

3.2.1 调用audiomanager方法

     privatevoid init(){

bm = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sound_line);

bm1 = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sound_line1);

         bitmapWidth = bm.getWidth();

         bitmapHeight = bm.getHeight();

         //setIndex(5);

         //音量控制

AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);//调用audiomanager我们定义的控制声音的对象

         setIndex(am.getStreamVolume(AudioManager.STREAM_MUSIC));    

     }

3.2.2 变量n的引用

设计思路:我们将声音的控制分为了15个等级,n的值代表了声音的大小,n的值和当前音量值index相关

privatevoid setIndex(int n){

        if(n>15){

            n = 15; //触摸超过范围,n为最大值

        }

        elseif(n<0){

            n = 0;  //触摸范围过小时,n为零

        }

        if(index!=n){

            index = n;  //如果当前的音量值不等于n令index为n

            if(mOnVolumeChangedListener!=null){ //监测音量监听器状态,

            mOnVolumeChangedListener.setYourVolume(n);    //如果音量键激活,音量改变

            }

        }

        invalidate();       //重绘音量调节窗口

    }

}

3.3 本地服务器的搭建

3.3.1 准备工作

当初学习PHP的时候曾经安装过WampServer集成开发环境,于是想到将它了用到我们的无线播放器上,Windows下的Apache+Mysql/MariaDB+Perl/PHP/Python,是一组常用来搭建动态网站或者服务器的开源软件,我前面讲过的:开源使这一切成为了可能,使用WampServer,既简单易用又节省时间。WampServer集成了世界使用排名第一的Web服务器软件Apache HTTP Server(以下简称Apache),Apache是我们要用到的核心组件。Apache是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

我们下载了WampServer的最新版本并安装,安装过程十分简单。准备工作做好后,服务器的搭建就已经完成了一半。

3.3.2 WampServer的基本配置

WampServer的操作界面:

由于WampServer默认是禁止外网访问Apache服务器,我们需要在它的配置文件里修改一下。使用记事本打开上图中所示的httpd.conf文件,查找关键字 “deny from “,会发现一处 “deny from”将其下的一行”Allow from 127.0.0.1″ 之前加一个 #号,表示注释掉,新插入一行,手动输入Allow from all ,然后重新启动服务。

3.3.3 WampServer的使用方法

       通过WampServer的Apache服务器可以访问上图中www directory里的内容,该文件夹作为一个电脑端的视频库,可以在桌面上建立一个该文件夹的快捷方式。

       查看电脑在局域网中的IP地址,如果IP地址是192.168.253.1的话,想要播放电脑里的视频文件名为Test.MP4,在Wamplayer的URL中输入192.168.253.1/Test.MP4然后按回车即可播放。

第四章 实训心得

当听到老师说可选的题目时,我十分得惊讶,因为给的题目都是和安卓相关的,之前我没怎么接触过,只是因为喜欢Google这家公司和对智能手机感兴趣,曾经尝试着搭建了一下Android的开发环境而已,并没有开发过软件,也没有相关的经验。但是我还是选择了做安卓相关的课题。因为是自己喜欢的事所以能尽力的去做。

通过这次课题设计,不仅了解到了Android的一些没接触过的知识,也巩固了原有的 java基础知识,并且对java语言,软件开发环境和硬件平台搭建有了新的认识。

       这两周以来感觉自己过得十分充实,从一开始一集一集地看教学视频,到后来整天的泡开发者论坛向大家请教,以及和老师的沟通,最终我们完成了预期的基本目标。

       从这次实训中我还了解到了许多学习方法,面对没有接触过的东西,我们要有快速的自学能力,因为没人给你讲解如何做,只有自己翻阅资料和上网查询,所以必须具备这种能力.另外,做软件最总要的就是要有耐心,我们可以学习网络上的代码和思路,只要学到了自己能应用到就可以。

       但是我们的软件还存在许多缺陷,有许多需要改进的地方,比如说手机与电脑连接方法较复杂,没有播放列表,因此学习成本较高。还有许多功能可以添加,比如随着智能手机硬件的提升,我们还可以加入软件解码,播放更多的视频格式等。

       这次实训也为我将来的毕业设计打下了一定的基础,我觉得十分有意义。

更多相关推荐:
通信工程实习报告

工程实训实习报告20XX~20XX学年第一学期学院:信息与控制工程学院专业班级:通信工程10-01姓名:**实习日期:20XX年10月21日~11月22日实习成绩:评阅教师:评阅日期:目录1.实习计划11.1.…

通信工程实习报告

信息与电气工程学院实习报告二14年3月22日1实习目的1巩固通信工程专业的主业知识提高对实际操作生产技能的认识加深对通信相关产品和生产流程的具体了解2了解更多的关于通信方面课本以外的知识为以后对本专业课的学习有...

通信工程实习报告

中南大学通信工程20xx级认识实习总结实习单位:中南大学网络中心等实习地点:长沙、株洲实习时间:20xx.9.3—20xx.9.8带队老师:班级:通信工程班学号:姓名:这次的认识实习为期五天。在本次实习中,我们…

通信工程专业实习报告

毕业实习报告姓名学号班级实习时间实习地点带队老师郑州市神阳科技有限公司实习报告一实习目的通过在公司信息管理部四十多天的实习对程控机房的各种设备的调试有一定的认识和理解打好了日后学习工作的入门基础同时实习电话机的...

通信工程生产实习报告

第1章引言11实习背景通信十多年的发展电话手机短消息传真网上邮件网页浏览网上聊天等业务已经深入我们的生活围绕业务实现网络运营公司设备研发生产公司设备安装公司网络管理机构网络及设备维护公司等构成了一个相互依存的产...

通信工程实训报告

通信工程实训班级通信131姓名谢伟强学号37指导老师吴芳洪军前言在NII国家信息基础设施的建设中大容量高速率的通信网是主干NII的目标在很大程度上依通信网实现因此通信网的发展倍受瞩目通信网技术的发展制约着计算机...

通信工程毕业实习报告

实习报告学生姓名学号学院专业指导教师实习单位杭州尚灵信息科技有限公司二O一二年六月一实习基本情况实习时间20xx年3月至20xx年5月实习单位杭州尚灵信息科技有限公司实习地点浙江杭州实习部门技术支持部杭州尚灵信...

通信工程 生产实习报告

实习报告学院名称专业通信工程班级学号学生姓名序言通信技术是以现代的声光电技术为硬件基础辅以相应软件来达到信息交流目的上个世纪末多媒体的广泛推广互联网的应用极大地推动了通信工程专业的发展展望这个世纪初期宽带技术光...

通信工程专业实习报告

目录1前言711实习单位简介712实习目的72实习内容83实习总结2731实习中遇到的问题2732实习收获2733实习建议2834实习总结28太原工业学院毕业实习报告1前言11实习单位简介12实习目的1通过实习...

通信工程毕业实习报告

成绩重庆邮电学院通信与信息工程学院毕业实习报告专业班级姓名学号填写时间20xx年03月19日重庆邮电学院通信与信息工程学院制

通信工程实习报告

本学院学生姓名专业学号1043031426年级10指导教师科实习报告电气信息学院陈柚羽通信工程级杜勤建黄宏光教务处制表20xx年2月20日附件课程名称毕业实习课程号码30301303001实习周数3学分3实习单...

通信工程实习报告

福建工程学院通信工程20xx级实习总结实习单位厦华电子厦门ABB开关有限公司等实习地点厦门漳州实习时间20xx111220xx1117带队老师班级通信工程班学号姓名这次的认识实习为期五天在本次实习中我们首先在一...

通信工程实训报告(31篇)