android中使用MediaPlayer和SurfaceView播放视频
2014-03-11 15:44
627 查看
package com.test.video; import java.io.IOException; import android.media.AudioManager; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.SurfaceHolder.Callback; import android.view.View.OnClickListener; import android.widget.ImageButton; public class MainActivity extends Activity implements OnClickListener { private MediaPlayer player; private SurfaceView view ; private int position = 0; private ImageButton paly, pause, stop; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); view = (SurfaceView) findViewById(R.id.surfaceView); player = new MediaPlayer(); paly = (ImageButton) findViewById(R.id.play); pause = (ImageButton) findViewById(R.id.pause); stop = (ImageButton) findViewById(R.id.stop); // 设置SurfaceView自己不管理缓冲区 view.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); // 设置播放时打开屏幕 view.setKeepScreenOn(true); view.getHolder().addCallback(new Surfacelistener()); paly.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this); } @Override public void onClick(View v) { try { switch (v.getId()) { // 单击播放按钮 case R.id.play: play(); break; // 暂停按钮 case R.id.pause: if (player.isPlaying()) { player.pause(); position = player.getCurrentPosition(); } else { if (position > 0) player.seekTo(position); player.start(); } break; // 停止按钮 case R.id.stop: if (player.isPlaying()) { player.stop(); } break; default: break; } } catch (Exception e) { e.printStackTrace(); } } private void play() throws Exception { player.reset(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); // 设置需要播放的视频 Uri uri = Uri.parse("android.resource://com.test.video/" + R.raw.video ); player.setDataSource(this, uri); // 把视频画面输出到SurfaceView player.setDisplay(view.getHolder()); player.prepare(); player.start(); } private class Surfacelistener implements Callback { @Override public void surfaceCreated(SurfaceHolder holder) { if (position > 0) { try { // 开始播放 play(); // 并直接从指定位置开始播放 player.seekTo(position); position = 0; } catch (Exception e ) { } } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {} @Override public void surfaceDestroyed(SurfaceHolder holder) {} } // 当其他的Activity被打开时,暂停播放 @Override protected void onPause() { if (player.isPlaying()) { position = player.getCurrentPosition(); // 暂停播放 player.stop(); } super.onPause(); } @Override protected void onDestroy() { if (player.isPlaying()) { player.stop(); } player.release(); super.onDestroy(); } }
相关文章推荐
- Android:使用MediaPlayer和SurfaceView播放视频
- Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android里面使用MediaPlayer通过SurfaceView播放视频的示例
- 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- 4.10 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频
- Android移动开发-使用MediaPlayer和SurfaceView播放视频的实现
- 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- 28、从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- Android 使用MediaPlayer与SurfaceView进行视频播放
- MediaPlayer简单使用,绑定surfaceView实现播放视频的功能
- [OpenGL]从零开始写一个Android平台下的全景视频播放器——2.2 使用GLSurfaceView和MediaPlayer播放一个平面视频(中)
- Android 使用 MediaPlayer + SurfaceView 播放视频
- [OpenGL]从零开始写一个Android平台下的全景视频播放器——2.3 使用GLSurfaceView和MediaPlayer播放一个平面视频(下)
- MediaPlayer使用SurfaceView播放视频的时它们的主要配置
- 使用MediaPlayer和SurfaceView结合播放视频
- 使用SurfaceView&MediaPlayer播放视频