We can stream media, including video, to a MediaPlayer object using a surface view.

For example, you could use the following layout:
<RelativeLayout 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:background="#000000"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<SurfaceView
android:id="@+id/activity_video_surfView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/activity_video_imageButton_play"/>
<Button
android:id="@+id/activity_video_imageButton_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@android:drawable/ic_media_play" />
</RelativeLayout>
We will refer to the SurfaceView in the implementation of the Activity class.
Now in our Activity class, add the following interfaces:
public class VideoActivity extends Activity implements SurfaceHolder.Callback{
Your IDE should prompt you to add these unimplemented methods:
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
//setup
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPrepared(MediaPlayer mp) {
//start playback
}
In surfaceCreated we must add these code line:
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDisplay(mVidHolder);
mMediaPlayer.setDataSource(Constants.VID_ADDRESS);
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (Exception e) {
e.printStackTrace();
}
In surfaceDestroyed we add this:
mMediaPlayer.stop();