第八章 多媒体音视屏播放
<!-- 读取外部储存(sdcard)权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
===============================音频的播放======================================
MediaPlayer类:可以处理音频,和视频。
MediaPlayer mp = new MediaPlayer();
生命周期:
当调用reset()时,或者刚创建是 为Idel状态。
之后调用setDataSource()方法绑定音频文件
之后调用prepare()方法进入准备状态。
方法名: 功能描述:
setDataSource() 设置要播放的音频文件的位置。
prepare() 在开始播放之前调用这个方法完成准备工作。
start() 开始或继续播放音频。
pause() 暂停播放音频。
reset() 将 MediaPlayer 对象重置到刚刚创建的状态。
seekTo(int) 从指定的位置开始播放音频。
stop() 停止播放音频。调用这个方法后的 MediaPlayer 对象无法再播放音频。
release() 释放掉与 MediaPlayer 对象相关的资源。
isPlaying() 判断当前 MediaPlayer 是否正在播放音频。
getDuration() 获取载入的音频文件的时长。
getCurrentPosition() 获取当前播放进度。
是否播放到最后--------监听: setOnCompletionListener()的onCompletion();当播放到最后时,会触发监听时间。
//Completion n. 完成,结束;实现
获取SD卡的绝对路径的方法: Environment.getExternalStorageDirectory().getAbsolutePath();
//environment n. 环境,外界 external adj. 外部的;表面的
//storage n. 存储;仓库;贮藏所 directory n. [计] 目录
//absolute adj. 绝对的;完全的
判断Sd卡是否存在:
1 String state = Environment.getExternalStorageState(); 2 if (state.equals(Environment.MEDIA_MOUNTED)) 3 { 4 …… //SD卡存在 5 }
实例代码:
1 public class MainActivity extends Activity 2 { 3 private MediaPlayer mediaPlayer = new MediaPlayer(); 4 5 @OnClick({R.id.btn_play, R.id.btn_pause, R.id.btn_stop}) 6 private void onClick(View v) 7 { 8 switch (v.getId()) 9 { 10 case R.id.btn_play: 11 mediaPlayer.start();//开始播放 12 break; 13 case R.id.btn_pause: 14 mediaPlayer.pause();//暂停播放 15 break; 16 case R.id.btn_stop: 17 mediaPlayer.reset();//停止播放 18 initMediaPlayer(); 19 break; 20 } 21 } 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) 25 { 26 super.onCreate(savedInstanceState); 27 setContentView(R.layout.activity_main); 28 29 ViewUtils.inject(this); 30 31 initMediaPlayer();//初始化MediaPlayer 32 } 33 34 @Override 35 protected void onDestroy() 36 { 37 super.onDestroy(); 38 if(mediaPlayer != null) 39 { 40 mediaPlayer.stop(); 41 mediaPlayer.release();//释放资源 42 } 43 } 44 45 private void initMediaPlayer() 46 { 47 //Environment.getExternalStorageDirectory() 获取sdcard绝对路径 48 File file = new File(Environment.getExternalStorageDirectory(), "Orion.mp3"); 49 try 50 { 51 mediaPlayer.setDataSource(file.getPath());//指定音频文件路径 52 mediaPlayer.prepare();//让mediaPlayer进入到准备状态 53 } catch (IOException e) 54 { 55 e.printStackTrace(); 56 } 57 58 mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 59 { 60 @Override 61 public void onCompletion(MediaPlayer mp) 62 { 63 mediaPlayer.start(); 64 Log.e("播放完成", "再播放一次"); 65 } 66 }); 67 } 68 }
=================================视频播放==================================
VideoView控件;无需prepare().
生命周期:
初始化的时候为Idel、
setVideoPath(path) 绑定视频源
start()方法 开始播放视频。
pause()视频暂停
stopPlayback() 清空图像。
绑定播放控制条:
MediaController mediaCtrl = new MediaController(view);
videoView.setMediaController(mediaCtrl);
方法名: 功能描述:
setVideoPath() 设置要播放的视频文件的位置
start() 开始或继续播放视频
pause() 停止要播放的视频
resume() 将视频重头开始播放
seekTo() 从指定的位置开始播放视频
isPlaying() 判断当前是否在播放视频
getDuration() 获取载入的视频文件的时长 //duration n. 持续,持续的时间,期间
实例代码:
1 public class MainActivity extends Activity 2 { 3 @ViewInject(R.id.video_view) 4 private VideoView videoView; 5 6 @OnClick({R.id.play, R.id.pause, R.id.replay}) 7 private void onClick(View v) 8 { 9 switch (v.getId()) 10 { 11 case R.id.play: 12 if (!videoView.isPlaying()) 13 { 14 videoView.start(); // 开始播放 15 } 16 break; 17 case R.id.pause: 18 if (videoView.isPlaying()) 19 { 20 videoView.pause(); // 暂时播放 21 } 22 break; 23 case R.id.replay: 24 if (videoView.isPlaying()) 25 { 26 videoView.resume(); // 重新播放 27 } 28 break; 29 } 30 } 31 32 @Override 33 protected void onCreate(Bundle savedInstanceState) 34 { 35 super.onCreate(savedInstanceState); 36 setContentView(R.layout.activity_main); 37 38 ViewUtils.inject(this); 39 40 initVideoView(); 41 } 42 43 private void initVideoView() 44 { 45 File file = new File(Environment.getExternalStorageDirectory(), "zhangxingyu.wmv"); 46 videoView.setVideoPath(file.getPath()); // 指定视频文件的路径 47 48 //添加控制条 49 MediaController mediaCtrl = new MediaController(this); 50 videoView.setMediaController(mediaCtrl); 51 52 videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 53 { 54 @Override 55 public void onCompletion(MediaPlayer mp) 56 { 57 videoView.start(); 58 Log.e("播放完成", "再播放一次"); 59 } 60 }); 61 } 62 63 @Override 64 protected void onDestroy() 65 { 66 super.onDestroy(); 67 if (videoView != null) 68 { 69 videoView.suspend();//释放资源 vt. 延缓,推迟;使暂停;使悬浮 70 } 71 } 72 }
posted on 2015-12-13 17:53 starFarming 阅读(199) 评论(0) 编辑 收藏 举报