android 学习笔记 播放音频 和视频

在Android 中播放音频文件一般都是使用MediaPlayer类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了 
MediaPlayer类中一些较为常用的控制方法。 

     方法名                                功能描述 

  setDataSource()              设置要播放的音频文件的位置。 

     prepare()            在开始播放之前调用这个方法完成准备工作。 

      start()                      开始或继续播放音频。 

     pause()                         暂停播放音频。 

      reset()             将MediaPlayer对象重置到刚刚创建的状态。 

     seekTo()                   从指定的位置开始播放音频。 

      stop()     停止播放音频。调用这个方法后的MediaPlayer对象无法再播放音频。 

     release()              释放掉与MediaPlayer对象相关的资源。 

    isPlaying()            判断当前MediaPlayer是否正在播放音频。 

   getDuration()                获取载入的音频文件的时长。 

简单播放音乐的代码 如下所示

public class MainActivity extends Activity implements OnClickListener { 

    private Button play; 

    private Button pause; 

	private Button stop; 

    private MediaPlayer mediaPlayer = new MediaPlayer(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 

        play = (Button) findViewById(R.id.play); 
        pause = (Button) findViewById(R.id.pause); 

        stop = (Button) findViewById(R.id.stop); 
        play.setOnClickListener(this); 

        pause.setOnClickListener(this); 
        stop.setOnClickListener(this); 

        initMediaPlayer(); // 初始化MediaPlayer 
    } 

    private void initMediaPlayer() { 

        try { 
            File file= new File(Environment.getExternalStorageDirectory(),"music.mp3"); 
            mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径 

            mediaPlayer.prepare(); // 让MediaPlayer进入到准备状态 
        } catch (Exception e) { 

            e.printStackTrace(); 
        } 

    } 

    @Override 
    public void onClick(View v) { 

        switch (v.getId()) { 
        case R.id.play: 

            if (!mediaPlayer.isPlaying()) { 
                mediaPlayer.start(); // 开始播放 

            } 
            break; 

        case R.id.pause: 
            if (mediaPlayer.isPlaying()) { 

                mediaPlayer.pause(); // 暂停播放 
            } 
            break; 
        case R.id.stop: 

            if (mediaPlayer.isPlaying()) { 
                mediaPlayer.reset(); // 停止播放 

                initMediaPlayer(); 
            } 

            break; 
        default: 

            break; 
        } 

    } 

    @Override 
    protected void onDestroy() { 

        super.onDestroy(); 
        if (mediaPlayer != null) { 

            mediaPlayer.stop(); 
            mediaPlayer.release(); 

        } 
    } 

} 



    简单了解了上述方法后,我们再来梳理一下MediaPlayer的工作流程。首先需要创建出一个MediaPlayer对象,然后调用setDataSource()方法来设置音频文件的路径,再调用prepare() 方法使MediaPlayer进入到准备状态,接下来调用start()方法就可以开始播放音频,调用pause() 方法就会暂停播放,调用reset()方法就会停止播放。 


 播放视频

   播放视频文件其实并不比播放音频文件复杂,主要是使用VideoView类来实现的。这个类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器。 VideoView的用法和MediaPlayer也比较类似,主要有以下常用方法: 


         方法名                                功能描述 


      setVideoPath()               设置要播放的视频文件的位置。 


         start()                      开始或继续播放视频。 


         pause()                         暂停播放视频。 


        resume()                      将视频重头开始播放。 


        seekTo()                    从指定的位置开始播放视频。 


        isPlaying()                 判断当前是否正在播放视频。 


       getDuration()                获取载入的视频文件的时长。 


简单的播放视频代码 如下所示


public class MainActivity extends Activity implements OnClickListener { 

    private VideoView videoView; 

    private Button play; 

    private Button pause; 

    private Button replay; 

    @Override 

    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 

        setContentView(R.layout.activity_main); 
        play = (Button) findViewById(R.id.play); 

        pause = (Button) findViewById(R.id.pause); 
        replay = (Button) findViewById(R.id.replay); 

        videoView = (VideoView) findViewById(R.id.video_view); 
        play.setOnClickListener(this); 

        pause.setOnClickListener(this); 
        replay.setOnClickListener(this); 

        initVideoPath(); 
    } 

    private void initVideoPath() { 

        File file = new File(Environment.getExternalStorageDirectory(), "movie.3gp"); 

        videoView.setVideoPath(file.getPath()); // 指定视频文件的路径 
    } 

    @Override 

    public void onClick(View v) { 
        switch (v.getId()) { 

        case R.id.play: 
            if (!videoView.isPlaying()) { 

                videoView.start(); // 开始播放 
            } 
            break; 

        case R.id.pause: 
            if (videoView.isPlaying()) { 

                videoView.pause(); // 暂时播放 
            } 

            break; 
        case R.id.replay: 

            if (videoView.isPlaying()) { 
                videoView.resume(); // 重新播放 

            } 
            break; 

        } 
    } 

    @Override 

    protected void onDestroy() { 
        super.onDestroy(); 

        if (videoView != null) { 
            videoView.suspend(); 

        } 
    } 

} 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值