android实训报告[2]

时间:2024.3.27

实习报告

实习性质:                                

学    院:        信息工程学院             

班    级:                                 

学生姓名:                                 

学    号:                                 

指导老师:                                 

实习时间:                                 

一、        实训目的和任务

1、  实训任务

android视频播放器系统的设计与实现

2、实训目的

本学期我们学习了JAVA课程和Android应用程序开发课程。而Android应用程序是利用Java语言开发的,本次实训能够对我们所学的Java语言和Android应用程序开发的一次综合实践,使我们能够更好的掌握Java语言在实际开发中的应用,同时也为了使我们能够更好的掌握和学习Android应用程序开发,对所学的知识进一步牢固。培养运用所学知识解决实际课程的能力,培养开发Android应用程序的思想和方法。同时在实训过程中也能不断学习新的知识。

二、        实训设计思路

1、  工程图

图2-1 工程图

2、  流程图

1)输入文件模块:在该模块中采用EditText控件来实现。

2)播放视频模块:该模块是用MediaPlayer类通过surfaceView来实现。

3)暂停播放模块:该模块是用MediaPlayer.push()方法来实现。

4)重播模块:该模块通过MediaPlayer.reset()方法来实现。

5)停止播放模块:该模块通过MediaPlayer.stop()方法实现。

6)快进模块:该模块通过MediaPlayer.seekTo()方法来实现。

7)后退模块:该模块通过MediaPlayer.seekTo()方法来实现。

8)退出模块:该模块通过调用finish()方法来实现,并释放资源。

图2-2 流程图

3、总体设计思路

该系统是一个能够在Android平台下运行的视频播放器。能够实现一下功能:

1)播放功能:

       能够实现mp4、avi格式文件的播放。

2)暂停功能:

       点击暂停按钮时能够暂停播放视频,再次点击暂停按钮时能够继续播放。

3)重播功能:

       点击重播按钮时能够从头开始播放视频。

4)停止功能:

       点击停止按钮时能够停止播放视频,再点击播放按钮时能够从头开始播放。

5)快进功能:

       点击快进按钮时能够向前跳跃5秒播放。

6)后退功能:

       点击回退按钮时能够向后跳跃5秒播放。

7)显示进度条:

       能够显示文件播放进度。

       拖动进度条能够实现视频快进、快退功能。

8)退出功能:

       点击退出按钮时能够正常退出程序。

三、具体代码及实现

3.1  main.xml布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    <TextView

        android:id="@+id/textview"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/filename"

        />

    <EditText

        android:id="@+id/filename"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="yueshen.mp4"

        />

       该部分是在主界面上放置一个EditText看控件,在本程序中用于接收输入的文件名。

    <SurfaceView

        android:id="@+id/surfaceView"

        android:layout_width="fill_parent"

         android:layout_height="300dp"

        />

SurfaceView控件是用于播放视频的控件

    <SeekBar

           android:id="@+id/move"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content"

           />

       进度条控件

    <LinearLayout

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:orientation="horizontal" >

           <ImageButton

               android:id="@+id/play"

               android:layout_width="wrap_content"

               android:layout_height="wrap_content"

               android:src="@drawable/play"

               android:layout_weight="1"

                />播放按钮

           <ImageButton

               android:id="@+id/suspend"

                  android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/suspend"

               android:layout_weight="1"

               />暂停按钮

           <ImageButton

               android:id="@+id/reset"

                  android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/reset"

                    android:layout_weight="1"

               />复位按钮

           <ImageButton

               android:id="@+id/stop"

                  android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/stop"

                android:layout_weight="1"

               /> 停止按钮

           <ImageButton

               android:id="@+id/back"

                  android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/back"

                android:layout_weight="1"

               />    后退按钮

           <ImageButton

               android:id="@+id/quick"

                  android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/quick"

                android:layout_weight="1"

               />   快进按钮

           <ImageButton

               android:id="@+id/exit"

                  android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:src="@drawable/exit"

                android:layout_weight="1"

               />退出按钮

    </LinearLayout>

</LinearLayout>

3.2 Activity_main.java文件

1seekbar拖动控件监听器

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

                     @Override

                     public void onStopTrackingTouch(SeekBar arg0) {

                            // TODO Auto-generated method stub

                     }

                     @Override

                     public void onStartTrackingTouch(SeekBar arg0) {

                            // TODO Auto-generated method stub

                     }

                     @Override

                     public void onProgressChanged(SeekBar seekBar, int progcess, boolean fromUser) {

                            // TODO Auto-generated method stub

                            int process = seekBar.getProgress();

                            int max = seekBar.getMax();

                            if (mediaPlayer != null) {

                         mediaPlayer.seekTo(mediaPlayer.getDuration() * process / max);

                     }

                     }

              });

       }

2播放、停止、暂停、重播、快进、后退、退出按钮监听器

private final class ButtonClickListener implements View.OnClickListener

       {

              @Override

              public void onClick(View v) {

              if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

                     {

                            Toast.makeText(ZhaoActivity.this, R.string.sdcarderror, 1).show();

                            return;

                     }

                        filename=filenameText.getText().toString();

                        try {

                            switch(v.getId())

                               {

                                 case R.id.play:

                                    play();

                                      break;

                                 case R.id.suspend:

                                        if(mediaPlayer.isPlaying())

                                        {

                                               mediaPlayer.pause();

                                        }else{

                                               mediaPlayer.start();

                                        }

                                        break;

                                   case R.id.reset:

                                        if(mediaPlayer.isPlaying())

                                        {

                                               mediaPlayer.seekTo(0);

                                        }else{

                                               play();

                                        }

                                        break;

                                   case R.id.quick:

                                          if(mediaPlayer.isPlaying())

                                          {

                                                 int i=mediaPlayer.getCurrentPosition()+5000;

                                                 mediaPlayer.seekTo(i);

                                          }

                                 break;

                                   case R.id.back:

                                          if(mediaPlayer.isPlaying())

                                          {

                                                 int i=mediaPlayer.getCurrentPosition()-5000;

                                                 mediaPlayer.seekTo(i);

                                          }

                                 break;

                                   case R.id.stop:

                                        if(mediaPlayer.isPlaying())

                                        {

                                               mediaPlayer.stop();

                                        }

                                        break;

                                   case R.id.exit:

                                          mediaPlayer.release();//释放资源

                                          finish();

                                           break;

                               }

                     } catch (Exception e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                            Log.e(TAG, e.toString());

                     }

              }

       }

3播放功能方法

private void play() throws IOException {

                 File videoFile = new File(Environment.getExternalStorageDirectory(),filename);

                 mediaPlayer.reset();//重置为初始状态

                 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

                 mediaPlayer.setDisplay(surfaceView.getHolder());

                 if(!videoFile.exists())

                 {

                            Toast.makeText(ZhaoActivity.this, R.string.fileerror, 1).show();

                            return;

                 }

                 mediaPlayer.setDataSource(videoFile.getAbsolutePath());

                 mediaPlayer.prepare();//缓冲

                 mediaPlayer.start();//播放

       }

}

4、结果截图

4.1 在模拟器中运行结果

图4.1.1 文件不存在时报错信息

图4.1.2文件播放成功

4.2 在手机中运行结果

图4.2.1 程序安装成功

图4.2.2 要播放的视频不存在

图4.2.3 播放成功

四、实训总结

一周的《android应用程序开发实训》已经结束了,同时也使我们对我们所学的Java和android应用程序开发的知识有了更深的认识和理解,同时也锻炼了我们把所学的知识运用到实际开发中的能力,在这个过程中也使我深深感受到了自己所掌握的知识是远远不够的。

在刚开始的时候我并没有详细的做一个模块实际图,只是把想当然的几个功能加了进来,只是简单想实现播放器的播放、重播、暂停、停止功能,而忘了考虑快进、后退和进度条的问题。现将在整个过程中遇到的问题总结如下:

1、  主界面设计问题

在设计主界面的之前我参考了一些常用的android视频播放的主界面,只设置了播放、停止、暂停、重播、退出的按钮,然后再老师的指导下又加进了快进和后退按钮,在最后程序成型之后又发现没有显示播放进度的按钮。在添加上播放、停止、暂停、重播、退出的ImageButton之后,在添加播放界面时又遇到了问题不知道用什么控件去实现播放功能,后来通过学习达内的教学视频采用了surfaceview控件。而播放进度条通过网上查资料决定采用SeekBar控件来实现。

2、  视频播放器程序设计问题

在设计完主界面之后通过学习达内的教学视频采用MediaPlayer类来控制播放,然而在写完程序之后发现没有退出功能,在添加了退出功能之后,程序能够退出,但新的问题出现了,程序退出之后但声音还在继续播放,这是由于资源没有被释放的原因,后添加了mediaPlayer.release()方法解决了此问题

3、  进度条拖动问题

在添加了SeekBar之后虽然能拖动但并不能实现视频文件的快进。在查找资料之后,发现时由于SeekBar监听器方法出了问题。经修改之后问题得以解决。

4、  程序改善

虽然程序已经完成,但功能好不够完善,首先进度条不能自动更新显示动态,只能实现拖动快进、后退的功能。没有添加音量控制,不能实现文件扫描,只能手动输入文件。这些问题我会在以后的学习中去解决。

实训已经结束了,在整个过程中是我感触最深的是自己掌握的知识在实际应用开发中,还远远不够,虽然学习了达内的视频,但最初并没有真正理解代码的含义,只知其然而不知其所以然。整个过程我最大的收获就是对MediaPlayer类有了更深的认识。在今后的学习过程中我会加倍努力积累知识。

更多相关推荐:
Android实训报告

通信与电子信息专业实训报告项目名称基于Android的游戏开发班级10通信1班姓名学号指导教师成绩实训时间年月日目录一实训目的及其意义311目的及意义312研究现状3二实训主要任务重点及难点421任务422重点...

android实习报告

实习报告实习目的:生产实习是计算机科学与技术专业重要的实践性教学活动,其目的是使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学…

android实训报告

android实训报告学号09090103姓名冯超洁南京师范大学泰州学院题目学姓班信息工程学院Android实训报告AndroidGPS系统号09090103名冯超洁级信工09120xx年6月1AndroidG...

Android实训实验报告

报告编号第5组综合课程设计报告基于Android平台的记事本的设计与实现学生姓名指导教师所在系电子工程系所学专业计算机科学与技术班级20xx年12月摘要基于Android平台的记事本的设计与实现随着科学技术的不...

android实训报告

多媒体技术综合实训课题名称多媒体展示系统的设计与开发计算机与软件学院计算机多媒体游戏软件设计与开发计媒10211002553224学号10025532061002553218院系专业班级100255321210...

Android实训报告

Android学院班级学号姓名实训报告目录一实训背景及目的要求311背景简介312实训目的及要求3二设计思路321设计题目322功能分析423模块划分4三设计实现及代码分析431第一个Activity4311布...

android实训设计报告

实训报告学生姓名李佳奇学号33专业班级网络091课程名称学年学期指导教师2012年12月实训成绩评定表目录一实训背景及目的要求111背景简介112实训目的及要求1二设计思路221设计题目222功能分析223模块...

Android实验格式简易计算器实验报告

实验报告20xx20xx学年第2学期课程名称嵌入式操作系统实验题目简易计算器的设计与实现专业计算机科学与技术信息处理是什么专业写什么专业班级计算本1101按自己班级填写日期填写20xx年4月8日实验题目简易计算...

Android 实验报告三

浙江农林大学暨阳学院实验报告三课程名称实验类别姓名班级学号Service实验目的1熟悉service和broadcast实验题目熟悉service的生命周期启动方式和停止方式Broadcast几种不同注册方式实...

android实训报告

实训总结通过这为期三周的android实训我们学会了用eclipse的android编程方法以及开发用的MVC变成开发模式和团队开发所使用的SVN团队编程版本控制器在以后学习过程中希望大家多多提点我和我们组的组...

Andriod毕业实习报告

毕业实习报告专业班级学号学生姓名指导教师实习时间实习成绩说明1实习指导教师由学院校内教师担任负责组织实习学生管理参加实习答辩实习成绩评定给出实习评语等工作2实习报告由武汉工程大学计算机科学与工程学院提供基本格式...

android实习报告

实习项目名称3GAndriod实习学时同组学生姓名实习地点实习日期成绩批改教师批改时间实习报告一实习目的1掌握android系统开发的一些常用知识2拥有独立解决开发中遇到问题的能力3熟悉android软件开发流...

android实训报告(31篇)