package
com.example.vediotest;
import
java.io.IOException;
import
android.media.AudioManager;
import
android.media.MediaPlayer;
import
android.media.MediaPlayer.OnBufferingUpdateListener;
import
android.media.MediaPlayer.OnCompletionListener;
import
android.net.Uri;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.pm.ActivityInfo;
import
android.util.Log;
import
android.view.Menu;
import
android.view.SurfaceHolder;
import
android.view.SurfaceView;
import
android.view.Window;
public
class
SurfaceVideo2Activity
extends
Activity
implements
OnBufferingUpdateListener, OnCompletionListener, MediaPlayer.OnPreparedListener,
SurfaceHolder.Callback
{
private
MediaPlayer mediaPlayer;
private
SurfaceView surfaceView;
private
SurfaceHolder surfaceHolder;
private
int
videoWidth;
private
int
videoHeight;
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_video_surface2);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
this
.surfaceView = (SurfaceView)
this
.findViewById(R.id.surface2_surfaceView);
this
.surfaceHolder =
this
.surfaceView.getHolder();
this
.surfaceHolder.addCallback(
this
);
this
.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Log.v(
"cat"
,
">>>create ok."
);
}
private
void
playVideo()
throws
IllegalArgumentException, IllegalStateException, IOException
{
String url =
"http://videofile.housebox.cn/Upload/Video/File/20140411/201404110228168972.mp4"
;
this
.mediaPlayer =
new
MediaPlayer();
this
.mediaPlayer.setDataSource(
this
, Uri.parse(url));
this
.mediaPlayer.setDisplay(
this
.surfaceHolder);
this
.mediaPlayer.prepare();
this
.mediaPlayer.setOnBufferingUpdateListener(
this
);
this
.mediaPlayer.setOnPreparedListener(
this
);
this
.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
Log.i(
"mplayer"
,
">>>play video"
);
}
@Override
public
void
surfaceChanged(SurfaceHolder arg0,
int
arg1,
int
arg2,
int
arg3)
{
Log.i(
"cat"
,
">>>surface changed"
);
}
@Override
public
void
surfaceCreated(SurfaceHolder holder)
{
try
{
this
.playVideo();
}
catch
(Exception e)
{
Log.i(
"cat"
,
">>>error"
, e);
}
Log.i(
"cat"
,
">>>surface created"
);
}
@Override
public
void
surfaceDestroyed(SurfaceHolder holder)
{
Log.v(
"mplayer"
,
">>>surface destroyed"
);
}
@Override
public
void
onCompletion(MediaPlayer arg0)
{
}
@Override
public
void
onBufferingUpdate(MediaPlayer mp,
int
percent)
{
}
@Override
public
void
onPrepared(MediaPlayer arg0)
{
this
.videoWidth =
this
.mediaPlayer.getVideoWidth();
this
.videoHeight =
this
.mediaPlayer.getVideoHeight();
if
(
this
.videoHeight !=
0
&&
this
.videoWidth !=
0
)
{
this
.surfaceHolder.setFixedSize(
this
.videoWidth,
this
.videoHeight);
this
.mediaPlayer.start();
}
}
@Override
protected
void
onDestroy()
{
super
.onDestroy();
if
(
this
.mediaPlayer !=
null
)
{
this
.mediaPlayer.release();
this
.mediaPlayer =
null
;
}
}
}