实验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被运行"); } }
|
相关文章推荐
- PHP 无限极分类
- yii2后台上传图片,前台也能显示 的方法
- Android——浅谈HTTP中Get与Post的区别(转)
- %type和% rowtype 的区别
- 第一个开源控件:Google官方下拉刷新控件SwipeRefreshLayout强化版,支持上拉刷新
- Mybatis中Collection集合标签的使用
- hgroup元素
- Jsoup抓取数据实现为一个网站做第三方Android客户端
- Android Studio导入.so库文件方法
- 项目中的一些函数总结
- CSS快速入门例子
- 古典加密方法(三)转轮机
- 关于微信支付
- 基于UITextView的UITextField功能效果(有占位符功能)
- MAC OS下OpenSSL生成私钥和公钥以及RSA加密
- 【Light】[1048]Conquering Keokradong
- 详解Java程序读取properties配置文件的方法
- leetcode 5. Longest Palindromic Substring
- 细说C#多线程那些事 - 线程同步和多线程优先级
- 【CodeForces】554A - Kyoya and Photobooks(思维)