首先,要在AndroidManifest.xml文件中添加相应的权限:

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

第二步,布局文件:

<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">    <SurfaceView          android:id="@+id/surfaceView"          android:layout_width="match_parent"          android:layout_height="360dp" />    <LinearLayout          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:gravity="center_horizontal"          android:orientation="horizontal" >          <ImageButton              android:id="@+id/btnplay"              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:src="@drawable/play" />          <ImageButton              android:id="@+id/btnpause"              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:src="@drawable/pause" />          <ImageButton              android:id="@+id/btnstop"              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:src="@drawable/stop" />      LinearLayout>   <TextView       android:id="@+id/textView1"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:text="TextView" />LinearLayout >

第三步,主代码部分:

package com.example.teltplay;import java.io.File;import java.io.IOException;import android.app.Activity;import android.content.res.AssetFileDescriptor;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.media.MediaPlayer.OnErrorListener;import android.media.MediaPlayer.OnPreparedListener;import android.media.MediaPlayer.OnSeekCompleteListener;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{     private ImageButton btnplay, btnstop, btnpause;       private SurfaceView surfaceView;       private MediaPlayer mediaPlayer;     private int position;       TextView textView1;     private String filename = Environment.getExternalStorageDirectory().getPath()+"/TestLog/test.mp4";;     public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);             btnplay=(ImageButton)this.findViewById(R.id.btnplay);           btnstop=(ImageButton)this.findViewById(R.id.btnstop);           btnpause=(ImageButton)this.findViewById(R.id.btnpause);           textView1=(TextView)this.findViewById(R.id.textView1);         btnstop.setOnClickListener(this);           btnplay.setOnClickListener(this);           btnpause.setOnClickListener(this);           mediaPlayer=new MediaPlayer();           surfaceView=(SurfaceView) this.findViewById(R.id.surfaceView);           mediaPlayer.setOnCompletionListener(new OnCompletionListener() {                @Override                public void onCompletion(MediaPlayer mp) {                    textView1.setText("播放完毕!...");                }         });         mediaPlayer.setOnErrorListener(new OnErrorListener() {                @Override                public boolean onError(MediaPlayer mp, int what, int extra) {                    textView1.setText("播放出错!...");                    return false;                }         });         mediaPlayer.setOnPreparedListener(new OnPreparedListener() {                @Override                public void onPrepared(MediaPlayer mp) {                    textView1.setText("准备就绪!...");                }         });         mediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() {                @Override                public void onSeekComplete(MediaPlayer mp) {                    textView1.setText("进度拖放完毕!...");                }         });         //设置SurfaceView自己不管理的缓冲区           surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);                  surfaceView.getHolder().addCallback(new Callback() {             @Override               public void surfaceDestroyed(SurfaceHolder holder) {             }               @Override               public void surfaceCreated(SurfaceHolder holder) {                 if (position>0) {                     try {                         //开始播放                           play();                           //并直接从指定位置开始播放                           mediaPlayer.seekTo(position);                           position=0;                     } catch (Exception e) {                              // TODO: handle exception                       }                   }               }                          @Override               public void surfaceChanged(SurfaceHolder holder, int format, int width,                     int height) {               }          });            }       @Override       public void onClick(View v) {         switch (v.getId()) {         case R.id.btnplay:             play();               break;               case R.id.btnpause:               if (mediaPlayer.isPlaying()) {                   mediaPlayer.pause();               }else{                   mediaPlayer.start();               }               break;           case R.id.btnstop:               if (mediaPlayer.isPlaying()) {                   mediaPlayer.stop();               }             break;         default:             break;              }          }       @Override       protected void onPause() {         //先判断是否正在播放           if (mediaPlayer.isPlaying()) {               //如果正在播放我们就先保存这个播放位置               position=mediaPlayer.getCurrentPosition();               mediaPlayer.stop();           }         super.onPause();     }     private void play() {         try {              mediaPlayer.reset();            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);              //设置需要播放的视频              mediaPlayer.setDataSource(filename);              //把视频画面输出到SurfaceView              mediaPlayer.setDisplay(surfaceView.getHolder());              mediaPlayer.prepare();              //播放              mediaPlayer.start();                           } catch (Exception e) {               // TODO: handle exception            }      }  }  

更多相关文章

  1. 【Android】如何实现一个简单的文件浏览器
  2. Android文件权限(Linux的权限)
  3. Android和IOS录制mp3语音文件的方法
  4. android读取SDCard任意路径下的文件
  5. android如何获取SD卡上的多媒体文件
  6. AndroidManifest.xml文件详解(uses-sdk)
  7. 修改 android 手机 hosts 文件的方法
  8. android 使用post方式上传文件

随机推荐

  1. Git命令之分支详解
  2. 【北亚数据恢复】误操作导致云服务器mysq
  3. 意派Epub360丨春节H5广告的正确打开方式
  4. 质量最差的国产车!靠“坑蒙拐骗”卖了6万
  5. 关于 Node.js 之 Buffer
  6. 比亚迪今年另一个可能要火的车,“海豹”剑
  7. php框架知识点的整理和补充
  8. js--用blur事件做表单验证,常用字符串、数
  9. 新手如何学插画光影?插画光影学习方法
  10. 插画构图有哪些方法?插画构图技巧!