MediaPlayer播放音频

来源:互联网 发布:数据仿真 原始数据 编辑:程序博客网 时间:2024/06/08 01:08

MediaPlayer提供的常用方法

方法说明MediaPlayer构造方法create创建一个要播放的多媒体getCurrentPosition得到当前播放位置getDuration得到文件的时间getVideoHeight得到视频的高度getVideoWidth得到视频的宽度isLooping是否循环播放isPlaying是否正在播放pause暂停prepare准备(同步)prepareAsync准备(异步)release释放MediaPlayer对象相关的资源reset重置MediaPlayer对象为刚刚创建的状态seekTo指定播放的位置(以毫秒为单位的时间)setAudioStreamType设置流媒体的类型setDataSource设置多媒体数据来源(位置)setDisplay设置用SurfaceHolder来显示多媒体setLooping设置是否循环播放setOnButteringUpdateListener网络流媒体的缓冲监听setOnErrorListener设置错误信息监听setOnVideoSizeChangedListener视频尺寸监听setScreenOnWhilePlaying设置是否使用SurfaceHolder来保持屏幕显示setVolume设置音量start开始播放stop停止播放

如何获得MediaPlayer实例

1、create的方式
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
2、直接new的方式
MediaPlayer mp = new MediaPlayer();

对应以下两个例子

如何设置要播放的文件

1、 用户在应用中事先自带的resource资源
mp.create(this, R.raw.test);
2、存储在SD卡或其他文件路径下的媒体文件
mp.setDataSource(“/sdcard/test.mp3”);
3、网络上的媒体文件
mp.setDataSource(“http://www.xyxywxh.com/user/xyxygyw/webimg/mp3/danqu/02%E6%98%A5%E6%B1%9F%E8%8A%B1%E6%9C%88%E5%A4%9C.mp3“);

栗子1

布局代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical"              tools:context=".MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent" >        <Button            android:id="@+id/play"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="Play" />        <Button            android:id="@+id/pause"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="Pause" />        <Button            android:id="@+id/stop"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="stop" />    </LinearLayout></LinearLayout>

java代码

public class MainActivity extends Activity implements View.OnClickListener {    private Button play;    private Button pause;    private Button stop;    private MediaPlayer 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();    }    private void initMediaPlayer() {        try {            mediaPlayer = MediaPlayer.create(this,R.raw.test);            mediaPlayer.prepare();        }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();        }    }}

注意

其中R.raw.test是res下的一个mp3文件,需自己创建

这里写图片描述

栗子2

xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              xmlns:tools="http://schemas.android.com/tools"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical"              tools:context=".MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent" >        <Button            android:id="@+id/play"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="Play" />        <Button            android:id="@+id/pause"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="Pause" />        <Button            android:id="@+id/stop"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="stop" />    </LinearLayout></LinearLayout>

java代码

public class MainActivity extends Activity implements View.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();    }    private void initMediaPlayer() {        try {            String path = Environment.getExternalStorageDirectory() + File.separator;//sd根目录            final File file = new File(path, "test" + ".mp3");            if (file.exists()) {                Toast.makeText(this,"存在",Toast.LENGTH_SHORT).show();            }            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();        }    }}

AndroidManifest.xml增加权限

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

注意

1、如何在模拟机中放入文件

2、这就是个坑,一定要戳以下链接看一下!

MediaPlayer: start called in state 0报错处理

原创粉丝点击