I am trying to play a video from a streaming URL. the code is as follows
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 great on an Android device with a version lower than 4.0 (pause and resume with the standby button). but when I try to play the video on an Android phone that has version 4.0 or later, the video will play normally, but when the phone goes into sleep mode and resumes working in sleep mode, the size of the video image is half the screen. as below
please, help?
Thanks in Advance .....
source
share