I am trying to play video from streaming url. the code is as following
public class VideoPlayer extends Activity
{
private VideoView mVideoView;
String videoURL="";
static Utility utility;
static Context context;
MediaController mediaController;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.video_player);
setupViews();
}
private void setupViews()
{
context=VideoPlayer.this;
utility=new Utility(VideoPlayer.this);
isActivityisRunning=true;
showProgressDialog("Loading video..");
videoURL=getIntent().getExtras().getString("url");
mVideoView=(VideoView)findViewById(R.id.video_view);
mediaController=new MediaController(context);
mVideoView.setMediaController(mediaController);
mVideoView.setOnPreparedListener(new OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
hideProgressDialog();
if(bIsOnPausedCalled)
mVideoView.seekTo(LastDuration);
mVideoView.start();
mVideoView.requestFocus();
bIsOnPausedCalled=false;
LastDuration=0;
}
});
mVideoView.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
finish();
}
});
mVideoView.setOnErrorListener(new OnErrorListener()
{
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
{
utility.hideProgressDialog();
return false;
}
});
playVideoFile();
}
public static void showDialog(String Message)
{
alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle(Constant.DialogTitle);
alertDialog.setMessage(Message);
alertDialog.setCancelable(false);
alertDialog.setButton("Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
if(isActivityisRunning)
alertDialog.show();
else
utility.showToast(Message);
}
static ProgressDialog progressDialog;
static AlertDialog alertDialog;
public void showProgressDialog(String Message)
{
hideProgressDialog();
progressDialog=new ProgressDialog(context);
progressDialog.setTitle(Constant.DialogTitle);
progressDialog.setMessage(Message);
if(isActivityisRunning)
progressDialog.show();
else
utility.showToast(Message);
}
public static boolean isActivityisRunning;
public static boolean showProgressDialog;
public static boolean bIsOnPausedCalled=false;
public static int LastDuration=0;
@Override
protected void onPause()
{
hideProgressDialog();
bIsOnPausedCalled=true;
isActivityisRunning=false;
if (mVideoView != null)
{
if(LastDuration==0)
{
LastDuration=mVideoView.getCurrentPosition();
mVideoView.suspend();
mVideoView.setVisibility(View.GONE);
}
}
super.onPause();
}
@Override
protected void onResume()
{
isActivityisRunning=true;
if(bIsOnPausedCalled)
{
setupViews();
}
super.onResume();
}
@Override
protected void onDestroy()
{
super.onDestroy();
try
{
if (mVideoView != null)
{
mVideoView.stopPlayback();
mVideoView=null;
hideProgressDialog();
isActivityisRunning=false;
bIsOnPausedCalled=false;
LastDuration=0;
}
} catch (Exception e)
{}
}
public static void hideProgressDialog()
{
if(progressDialog!=null)
{
if(progressDialog.isShowing())
{
progressDialog.dismiss();
}
}
}
private void playVideoFile()
{
try
{
mVideoView.setVideoURI(Uri.parse(videoURL));
}
catch (Exception e)
{
utility.hideProgressDialog();
if (mVideoView != null)
{
mVideoView.stopPlayback();
}
}
}
This works fine on android device having version below 4.0 (with pause and resume with sleep mode button).
but when i am trying to play video on android phone having version4.0 or later
video will play fine but when phone goes to sleep mode and resume back from sleep mode
the video view size became half of screen. as following
please help?
Thanks in Advance…..
you are doing is all correct but you have applied setContentView(R.layout.video_player);
only ones ,even though video is resumed.
so code should be
Instead of