首先,要在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(安卓)使用MediaPlayer播放视频切换后台暂停再恢复互前台
  2. Android手机游戏摇杆
  3. [置顶] Android动态添加控件约束位置
  4. android 录音和播放
  5. Android(安卓)LocationManager 使用
  6. 申请 Android(安卓)MapView 的apiKey流程
  7. android播放音频文件(MediaPlayer)和录音(MediaRecorder)--播放
  8. 如何申请Android(安卓)MapView的apiKey
  9. Android播放在线音乐文件

随机推荐

  1. Android(安卓)colors.xml 颜色配置文件
  2. Android(安卓)常用控件自定义样式RadioBu
  3. 自定义RatingBar/SeekBar,重载样式
  4. android中listView实现异步加载网络图片
  5. could not write file\android-7\/syst
  6. 退出 android 应用程序
  7. [RK3288][Android6.0] 调试笔记 --- 软硬
  8. 【BottomBar】Android底部导航栏V2.0
  9. Android(安卓)SDK三种更新失败及其解决方
  10. Android双击退出的实现方法