您的位置:首页 > 其它

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

2016-04-22 08:52 393 查看

实验报告

课程名称

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

实验日期

2016.4.15

实验项目名称

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

实验地点

S30010

实验类型

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

学 时

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

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

实验要求:

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被运行");

}

}

运行结果:(截图)



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

此次实验学会了如何在安卓项目中播放视频和音乐,可以优化游戏界面设计,直接使用,很方便

实验评语

实验成绩

指导教师签名: 年 月 日

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: