安卓学习之音频视频

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓学习之音频视频相关的知识,希望对你有一定的参考价值。

播放音频

  android中播放音频可以使用MediaPlayer类来实现,一下是它的一些方法:

      

              方法名             功能描述
            setDataSource()        设置要播放的音频文件的位置。
            prepare()            在开始播放之前调用这个方法完成准备工作。
            start()               开始或继续播放音频。
            pause()               暂停播放音频。
            reset()              将 MediaPlayer 对象重置到刚刚创建的状态。
            seekTo()             从指定的位置开始播放音频。
            stop()                     停止播放音频。调用这个方法后的 MediaPlayer 对象无法再播放音频。
            release()             释放掉与 MediaPlayer 对象相关的资源。
            isPlaying()             判断当前 MediaPlayer 是否正在播放音频。
            getDuration()           获取载入的音频文件的时长。

 现在给出一段代码:

public class MainActivity extends Activity implements View.OnClickListener {

    private Button play;
    private Button pause;
    private Button stop;

    /*
        MediaPlayer class can be used to control playback
        of audio/video files and streams.
     */
    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);

        //初始化mediaPlayer
        initMediaPlayer();

        //设置响应
        play.setOnClickListener(this);
        pause.setOnClickListener(this);
        stop.setOnClickListener(this);
    }

    @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() {
        if(mediaPlayer != null){
            mediaPlayer.release();
        }
        super.onDestroy();
    }

    private void initMediaPlayer() {

        File file = new File(Environment.getExternalStorageDirectory(), "test.mp3");
        try {
            mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径
            mediaPlayer.prepare(); // 让MediaPlayer进入到准备状态
            //Toast.makeText(MainActivity.this, "succeed", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

 

 

  先MediaPlayer.setDataSource设置音频的具体位置,然后调用mediaPlayer.prepare()方法,表明MediaPlayer已经准备好。然后可以调用MediaPlayer的start()、pause()、reset()分别开始音频、暂停音频、重置MediaPlayer到创建状态。

  当然要注意的是,我们读取的是SD卡上的数据,要设置

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

 

播放视频

  播放视频可以使用VideoView类实现,这个类显示和控制都有。

  

                  方法名         功能描述
                setVideoPath()     设置要播放的视频文件的位置。
                start()         开始或继续播放视频。
                pause()         暂停播放视频。
                resume()         将视频重头开始播放。
                seekTo()          从指定的位置开始播放视频。
                isPlaying()       判断当前是否正在播放视频。
                getDuration()        获取载入的视频文件的时长。

 

VideoView使用方法和MediaPlayer类似。

 

以上是关于安卓学习之音频视频的主要内容,如果未能解决你的问题,请参考以下文章

安卓音视频之-媒体提取器MediaExtactor

慕课网/安卓攻城狮视频学习及练习

安卓输入子系统之inotify与epoll机制学习笔记原创

java 代码片段【安卓】

Mediaplayer在切换片段时没有暂停

安卓手机录制屏幕视频小妙招