实验6 在应用程序中播放音频和视频

实验报告

课程名称

基于Android平台移动互联网开发

实验日期

2016.4.15

实验项目名称

实验6 在应用程序中播放音频和视频

实验地点

S30010

实验类型

□验证型    √设计型    □综合型

学  时

2

一、实验目的及要求(本实验所涉及并要求掌握的知识点)

实验目的:实现在应用程序中处理音频和视频。

实验要求:

1.实现播放音频,音频播放控制;

2.实现播放视频,视频播放控制;

3.使用Service服务播放项目源文件中的音乐。

 

二、实验环境(本实验所使用的硬件设备和相关软件)

(1)PC机

(2)操作系统:Windows XP

(3)软件: Eclipse, JDK1.6,Android SDK,ADT

三、实验内容及步骤

1)新建工程

 2)修改布局文件main.xml

 

3)完善Activity类

 

/***

 * 这个类主要用来测试调用Andriod.media.MediaPlayer包里面的函数实现音乐播放的功能,

 * 分别播放了工程中资源文件中的音乐文件、本地文件系统中的文件,以及网络上的音乐;

 * 视频播放功能,使用了VideoView控件;

 * 代码中指定了本地文件系统中音频和视频文件的路径,在测试本程序前请按照代码中的路径和音频、视频文件的名称在手机中添加文件;

(4)新建Service类,使用Service服务播放项目源文件中的音乐,实现后台继续能播放音频

四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)

 

代码:

musicandvideo_layout.xml

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

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

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

 

    <Button

        android:id="@+id/playSourceMusic"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="播放源文件中的音乐" />

 

    <Button

        android:id="@+id/playLocalMusic"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="播放本地文件系统中的音乐" />

 

    <Button

        android:id="@+id/playOnlineMusic"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="播放网络上的音乐" />

 

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >

 

        <Button

            android:id="@+id/stopPlay"

            android:layout_width="112dp"

            android:layout_height="wrap_content"

            android:text="停止播放" />

 

        <Button

            android:id="@+id/playVideo"

            android:layout_width="108dp"

            android:layout_height="wrap_content"

            android:layout_weight="0.67"

            android:text="播放视频" />

 

        <Button

            android:id="@+id/exitPlay"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="退出" />

    </LinearLayout>

 

    <VideoView

        android:id="@+id/video"

        android:layout_width="match_parent"

        android:layout_height="wrap_content" />

 

</LinearLayout>

MusicAndVideoPlay:

public class MusicAndVideoPlay extends Activity {

   private Button playSourceMusicbt, playLocalMusicbt, playOnlineMusicbt,stopPlaybt,

          playVideobt, exitPlaybt;

   private MediaPlayer myPlayer1 = new MediaPlayer();

   private VideoView video;

   protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.musicandvideo_layout);

       playSourceMusicbt = (Button) findViewById(R.id.playSourceMusic);

       playLocalMusicbt = (Button) findViewById(R.id.playLocalMusic);

       playOnlineMusicbt=(Button) findViewById(R.id.playOnlineMusic);

       stopPlaybt = (Button) findViewById(R.id.stopPlay);

       playVideobt = (Button) findViewById(R.id.playVideo);

       exitPlaybt = (Button) findViewById(R.id.exitPlay);

       video=(VideoView) findViewById(R.id.video);

      

       playSourceMusicbt.setOnClickListener(new MyClickListener());

       playLocalMusicbt.setOnClickListener(new MyClickListener());

       stopPlaybt.setOnClickListener(new MyClickListener());

       playVideobt.setOnClickListener(new MyClickListener());

       exitPlaybt.setOnClickListener(new MyClickListener());

       

   }

 

   class MyClickListener implements OnClickListener {

       @Override   

        public void onClick(View v) { 

           // TODO Auto-generated method stub   

           switch (v.getId()) {     

           case R.id.playSourceMusic:

               startService(new Intent(MusicAndVideoPlay.this, MusicService.class));

               break;

           case R.id.playLocalMusic:

               try

                  {

                     if(myPlayer1.isPlaying()==true)

                        {

                            /*把 MediaPlayer重设*/

                            myPlayer1.reset();

                        }

                     /*设定 MediaPlayer读取SDcard的档案*/

                    myPlayer1.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/nan.mp3");

                     myPlayer1.prepare();

             

                     /*把 MediaPlayer开始播放*/

                     myPlayer1.start();

      

                  }catch (Exception e) {

                     // TODO: handle exception

                 }

 

               break

           case R.id.playOnlineMusic:

               if(myPlayer1.isPlaying()==true)

                 {

                     /*把 MediaPlayer重设*/

                     myPlayer1.reset();

                 }

              /*设定 MediaPlayer读取SDcard的档案*/

              myPlayer1.create(MusicAndVideoPlay.this, Uri.parse("http://www.mingribook.com/sound/bg.mp3"));

      

              /*把 MediaPlayer开始播放*/

              myPlayer1.start();

               break;

           case R.id.stopPlay:

                 if(myPlayer1.isPlaying()==true)

                    {

                        /*把 MediaPlayer重设*/

                        myPlayer1.stop();

                    }

               break;    

           case R.id.playVideo

               File file=new File(Environment.getExternalStorageDirectory().getPath()+"/nan.mp3");

               MediaController mc=new MediaController(MusicAndVideoPlay.this);

               if(file.exists()){

                  video.setVideoPath(file.getAbsolutePath());

                  video.setMediaController(mc);

                  video.requestFocus();

             

               try{

                 video.start();

               }catch(Exception e){

                  

               }

               video.setOnCompletionListener(new OnCompletionListener() {

                 @Override

                 public void onCompletion(MediaPlayer arg0) {

                     // TODO Auto-generated method stub

                     Toast.makeText(MusicAndVideoPlay.this, "视频播放完毕!", Toast.LENGTH_SHORT).show();

                 }

              });

          }else{

              Toast.makeText(MusicAndVideoPlay.this, "要播放的视频文件不存在", Toast.LENGTH_SHORT).show();

          }

               break;    

           case R.id.exitPlay

               break;    

          default:      

              break;   

          }   

       }  

      

       }

  

 

}

MusicService:

public class MusicService extends Service {

//系统使用MediaPlayer播放音乐,定义对象mp

private MediaPlayer mp;

private String TAG="Main";

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null;

    }

@Override

public void onCreate() {

super.onCreate();

//初始化MediaPlayer对象,准备播放音乐,音乐文件放在文件夹/res/raw中

mp=MediaPlayer.create(this,R.raw.nan);

        Log.i(TAG, "MusicService onCreate被运行");

    }

 

@Override

   public int onStartCommand(Intent intent, int flags, int startId) {

       // TODO Auto-generated method stub

   //开始播放音乐

       mp.start();

        Log.i(TAG, "MusicService onStartCommand被运行");

       return super.onStartCommand(intent, flags, startId);

   }

 

 

@Override

public void onDestroy() {

super.onDestroy();

//停止播放音乐

mp.stop();

        Log.i(TAG, "MusicService onDestroy被运行");

    }

 

}

运行结果:(截图)

 

 

五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)

    此次实验学会了如何在安卓项目中播放视频和音乐,知道许多启动的动画其实是可以直接用视频来展示的。非常方便。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

           

 

posted @ 2016-04-20 11:36  25洁如  阅读(272)  评论(0编辑  收藏  举报