实验6 在应用程序中播放音频和视频
实验报告
课程名称 |
基于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被运行"); }
}
|