public class VideoActivity extends Activity {private static final String TAG = "VideoActivity";private EditText filenameText;private SurfaceView surfaceView;private MediaPlayer mediaPlayer;@Overridepublic void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  ButtonClickListener listener = new ButtonClickListener();  ImageButton playButton = (ImageButton) this.findViewById(R.id.play);  playButton.setOnClickListener(listener);  ImageButton pauseButton = (ImageButton) this.findViewById(R.id.pause);  pauseButton.setOnClickListener(listener);  ImageButton resetButton = (ImageButton) this.findViewById(R.id.reset);  resetButton.setOnClickListener(listener);  ImageButton stopButton = (ImageButton) this.findViewById(R.id.stop);  stopButton.setOnClickListener(listener);  // 重点这个地方需要设置回调函数  继承Callback 类实现三个方法  surfaceView.getHolder().addCallback(new myCallback());  filenameText = (EditText) this.findViewById(R.id.filename);  surfaceView = (SurfaceView) findViewById(R.id.surfaceView);  surfaceView.getHolder() .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  // 设置这个大小  surfaceView.getHolder().setFixedSize(176, 144);  mediaPlayer = new MediaPlayer();}private class myCallback implements android.view.SurfaceHolder.Callback {  @Override  public void surfaceChanged(SurfaceHolder holder, int format, int width,    int height) {   // TODO Auto-generated method stub  }  @Override  public void surfaceCreated(SurfaceHolder holder) {   // TODO Auto-generated method stub  }  @Override  public void surfaceDestroyed(SurfaceHolder holder) {   // TODO Auto-generated method stub  }}// 当来电话的时候需要停掉播放业务@Overrideprotected void onPause() {  if (mediaPlayer.isPlaying())   mediaPlayer.pause();  super.onPause();}@Overrideprotected void onResume() {  if (mediaPlayer.isPlaying())   mediaPlayer.pause();  super.onResume();}@Overrideprotected void onDestroy() {  if (mediaPlayer.isPlaying())   mediaPlayer.stop();  // 注意这个地方是释放  mediaPlayer.release();  super.onStop();}private class ButtonClickListener implements View.OnClickListener {  @Override  public void onClick(View v) {   try {    String filename = filenameText.getText().toString();    switch (v.getId()) {    case R.id.play:     // 得到文件名称 重点代码     String filenames = filenameText.getText().toString();     // 第一步对给对象进行重设     mediaPlayer.reset();     // 设置流的类型 关键代码     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);     // 设置数据来源     mediaPlayer.setDataSource("/sdcard/" + filenames);      // 设置需要播放的视频     // 把视频输出到显示控件上 重点代码     mediaPlayer.setDisplay(surfaceView.getHolder());     // 播放时前需要缓冲一下     mediaPlayer.prepare();     mediaPlayer.start();     break;    case R.id.pause:     if (mediaPlayer.isPlaying()) {      mediaPlayer.pause();     } else {      mediaPlayer.start();     }     break;    case R.id.reset:     if (!mediaPlayer.isPlaying()) {      mediaPlayer.start();     }     // 跳回到起始的地方重新播放     mediaPlayer.seekTo(0);     break;    case R.id.stop:     if (mediaPlayer.isPlaying()) {      mediaPlayer.stop();     }     break;    }   } catch (Exception e) {    Log.e(TAG, e.toString());   }  }}}

za

更多相关文章

  1. Android(安卓)打开Activity后,不显示键盘
  2. webrtc android 打包成aar
  3. android 用VideoView播放本地视频文件
  4. 进度条及拖动条背景颜色设置(progressDrawable)
  5. Android(安卓)WebView总结
  6. Android不让弹出键盘挡住View
  7. android 如何在对话框中获取edittext中的数据
  8. Android(安卓)SpannableStringBuilder改变某部分字体
  9. android原生音乐播放器界面字体显示不全

随机推荐

  1. 【前端词典】几个有益的 CSS 小知识
  2. 这个jQuery相册很特别
  3. 一组强大的CSS3 Material 按钮
  4. HTML5粒子螺旋线条3D动画
  5. 为NetBeans添加Andriod平台
  6. 【前端词典】有趣的大厂算法面试题
  7. 【前端词典】4 个实用有趣的 JS 特性
  8. 3组24个CSS3分享图标,可旋转和悬停
  9. Android振动系统学习
  10. 【前端词典】CDN 带来这些性能优化(进阶必