第八章 多媒体音视屏播放

<!-- 读取外部储存(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  阅读(197)  评论(0编辑  收藏  举报