Android MediaPlayer应用及代码分享

Android 04/14 阅读 314 views次 人气 0
摘要:

--------------------------------------------------------------------------------------------------------------------------------------

Android MediaPlayer应用

1、MediaPlayer方法

--------------------------------------------------------------------------------------------------------------------------------------

(1) MediaPlayer创建

直接调用构造函数,利用setDataSource方法设置资源。

MediaPlayer mp = new MediaPlayer();
// path可以是本地路径,也可以是网络地址
mp.setDataSource(String path);

--------------------------------------------------------------------------------------------------------------------------------------

调用create方法,create方法会直接调用prepare方法。

MediaPlayer.create(Context context, int resid)
MediaPlayer.create(Context context, Uri uri)

--------------------------------------------------------------------------------------------------------------------------------------

(2) MediaPlayer的控制方法

prepare/prepareAsync:提供了同步和异步两种方式设置播放器进入prepare状态 start:启动播放器播放 pause:暂停播放器播放 stop:停止播放器播放 getCurrentPosition:当前播放器的时间 seekTo:从指定位置开始播放 release:释放播放器暂用资源 reset:是播放器重回到Idle状态 setLooping:设置是否循环播放

(3) MediaPlayer的监听器

OnPreparedListener:prepare/prepareAsync结束时调用 OnCompletionListener:播放结束时调用 OnSeekCompleteListener:seekTo结束时调用

(4) MediaPlayer状态间的转换

2、MediaPlayer播放音频

在onCreate方法中创建MediaPlayer,在onDestroy方法中销毁。

public class MediaPlayerAudioActivity extends Activity implements View.OnClickListener {
    private MediaPlayer mMediaPlayer;

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

        setContentView(R.layout.activity_media_player_audio);

        findViewById(R.id.btn_create).setOnClickListener(this);
        findViewById(R.id.btn_start).setOnClickListener(this);
        findViewById(R.id.btn_pause).setOnClickListener(this);
        findViewById(R.id.btn_stop).setOnClickListener(this);

        mMediaPlayer = new MediaPlayer();
        MediaPlayerListener listener = new MediaPlayerListener();
        mMediaPlayer.setOnPreparedListener(listener);
        mMediaPlayer.setOnCompletionListener(listener);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMediaPlayer.release();
		mMediaPlayer = null;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_create:
                createMediaPlayer();
            case R.id.btn_start:
                startMediaPlayer();
                break;
            case R.id.btn_pause:
                pauseMediaPlayer();
                break;
            case R.id.btn_stop:
                stopMediaPlayer();
                break;
        }
    }

    private void createMediaPlayer() {
        mMediaPlayer.reset();
        String filePath = "/sdcard/demo.mp3";

        try {
            mMediaPlayer.setDataSource(filePath);
            mMediaPlayer.prepare();
            mMediaPlayer.start();
        } catch (IOException e) {
        }
    }

    private void startMediaPlayer() {
        try {
            mMediaPlayer.start();
        } catch (IllegalStateException e) {
        }
    }

    private void pauseMediaPlayer() {
        try  {
            mMediaPlayer.pause();
        } catch (IllegalStateException e) {
        }
    }

    public void stopMediaPlayer() {
        try {
            mMediaPlayer.stop();
        } catch (IllegalStateException e) {
        }
    }

    private class MediaPlayerListener implements MediaPlayer.OnPreparedListener,
            MediaPlayer.OnCompletionListener {

        @Override
        public void onPrepared(MediaPlayer mp) {
			Toast.makeText(MediaPlayerAudioActivity.this, "onPrepared",
					Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCompletion(MediaPlayer mp) {
            Toast.makeText(MediaPlayerAudioActivity.this, "onCompletion",
					Toast.LENGTH_LONG).show();
        }
    }
}

--------------------------------------------------------------------------------------------------------------------------------------

3、MediaPlayer播放视频

MediaPlayer要和SurfaceView配合播放视频,控制的方法和音频相同。 在SurfaceView的SurfaceHolder中添加一个回调类Callback,在Callback.surfaceCreated方法中调用MediaPlayer的setDisplay方法。

SurfaceView mSurfaceView = (SurfaceView) findViewById(R.id.surface_view);
SurfaceHolder holder = mSurfaceView.getHolder();

holder.addCallback(new SurfaceHolder.Callback() {
	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		createMediaPlayer();
	}

	@Override
	public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
	}

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		stopMediaPlayer();
	}
});

private void createMediaPlayer() {
	mMediaPlayer.reset();
	String filePath = "/sdcard/viedo.3pg";

	try {
		mMediaPlayer.setDataSource(filePath);
		mMediaPlayer.prepare();
		mMediaPlayer.setDisplay(mSurfaceView.getHolder());
		mMediaPlayer.start();
	} catch (IOException e) {
	}
}

--------------------------------------------------------------------------------------------------------------------------------------

小奋斗文章

--------------------------------------------------------------------------------------------------------------------------------------

评论

该文章不支持评论!

分享到: