Android播放音频

播放音频用到MediaPlayer类,具体用法如下:

MediaPlayer mp = new MediaPlayer();//新建一个的实例
mp.setDataSource();//设置要播放文件的路径
mp.prepare();//播放 准备完成,开始播放前要调用
mp.start();//播放
mp.pause();//暂停
mp.reset();//将mp对象重置到刚创建的状态
mp.stop();//停止播放,使用后当前mp对象无法再播放
mp.release();//释放播放相关资源,一般在活动的onDestroy()方法里调用
mp.isPlaying();//判断mp对象是否正在播放
mp.seekTo();//调转到指定位置播放
mp.getDuration();//获得载入的音频的播放时长

我们写一个简单的例子,播放手机存储的根目录下motto.mp3文件。定义三个按钮play、pause、stop来控制播放。

public class MainActivity extens AppCompatActivity implements View.OnClickListener{
    private Button playButton;
    private Button pausebutton;
    private Button stopButton;
    private MediaPlayer mp = new MediaPlayer();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        playButton = (Button)findViewById(R.id.button_play);
        pauseButton = (Button)findViewById(R.id.button_pause);
        stopButton = (Button)findViewById(R.id.button_stop);
        initMP();//初始化mp对象
        //三个按钮设置监听器
        playButton.setOnClickListener(this);
        pauseButton.setOnClickListener(this);
        stopButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button_play:
                    if (!mp.isPlaying()) {
                        mp.start();//播放音频
                    }
                    break;
            case R.id.button_pause:
                    if (mp.isPlaying()) {
                        mp.pause();//暂停播放
                    }
                    break;
            case R.id.button_stop:
                    mp.reset();//将mp重置为创建状态
                    initMP();//初始化mp,这样保证按下stop按钮后再按play按钮可以播放
                    break;
            default:
                    break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mp != null) {
            //释放mp
            mp.stop();
            mp.release();
        }
    }
    
    //初始化mp
    private void initMP() {
        File file = new File(Envirometn.gerExternalStorageDirectory(), "motto.mp3");
        try {
            mp.setDataSource(file.getPath());//设置播放音频文件的路径
            mp.prepare();//mp就绪
        } catch(Exceprion e) {
            e.printStackTrace();
        }    
    }
}

另外,本范例涉及到SD卡的读取,还要在在Manifest.xml注册写SD卡的权限。

你可能感兴趣的:(Android播放音频)