xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mediaplayerdemo.MainActivity" >
<SurfaceView
android:id="@+id/play_video"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="horizontal">
<TextView
android:id="@+id/play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_shape"
android:gravity="center"
android:textColor="@android:color/white"
android:text="播放"
android:layout_weight="1"/>
<TextView
android:id="@+id/pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/button_shape"
android:gravity="center"
android:text="暂停"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_shape"
android:gravity="center"
android:textColor="@android:color/white"
android:text="停止"
android:layout_weight="1"/>
<TextView
android:id="@+id/release"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_shape"
android:gravity="center"
android:textColor="@android:color/white"
android:text="重播"
android:layout_weight="1"/>
</LinearLayout>
</FrameLayout>
代码实现:
package com.example.mediaplayerdemo;
import java.io.IOException;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener,
SurfaceHolder.Callback {
private SurfaceView surfaceView;
private TextView play, pause, stop,release;
MediaPlayer player;
SurfaceHolder surfaceHolder;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (SurfaceView) findViewById(R.id.play_video);
play = (TextView) findViewById(R.id.play);
pause = (TextView) findViewById(R.id.pause);
stop = (TextView) findViewById(R.id.stop);
release = (TextView) findViewById(R.id.release);
play.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
release.setOnClickListener(this);
//SurfaceHolder提供访问和控制这个SurfaceView潜在的表面。
surfaceHolder = surfaceView.getHolder();
//添加一个回调接口 对象
surfaceHolder.addCallback(this);
//设置分辨率
surfaceHolder.setFixedSize(220, 330);
//SurfaceView潜在的表面类型 需要时自动调用
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
player.start();
break;
case R.id.pause:
player.pause();
break;
case R.id.stop:
player.stop();
break;
case R.id.release:
if(player.isPlaying()){
player.seekTo(0);
}else{
player.start();
}
break;
}
}
@SuppressLint("SdCardPath")
@Override
public void surfaceCreated(SurfaceHolder holder) {
player = new MediaPlayer();
//设置媒体播放器的音频流类型
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDisplay(surfaceHolder);
try {
//设置资源播放路径
player.setDataSource("/sdcard/duishi/videos/video_1461331007757.mp4");
player.prepare();//视频缓冲
} catch (IllegalArgumentException | SecurityException
| IllegalStateException | IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
protected void onDestroy() {
super.onDestroy();
if (player.isPlaying()) {
player.stop();
}
//释放资源内存,如不释放,停止后还会听到声音
player.release();
}
}