Problema con la vista de vídeo en android 4.0 y superior
Estoy intentando reproducir video desde la url de streaming. El código es como sigue
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(); } } }
Esto funciona bien en el dispositivo Android con la versión por debajo de 4,0 (con pausa y reanudar con el botón de modo de suspensión). Pero cuando estoy tratando de reproducir vídeo en el teléfono android tener version4.0 o posterior de vídeo se jugará bien, pero cuando el teléfono se va a dormir modo y reanudar de nuevo desde el modo de sueño el tamaño de la vista de vídeo se convirtió en la mitad de la pantalla. Como sigue
- Android: VideoView dentro de Fragmento sólo reproduce audio, no muestra vídeo
- ¿Por qué mi aplicación Android dice "No se puede reproducir el vídeo" después de la reproducción?
- Detectar cuándo la reproducción de vídeo deja de reproducirse
- Android 2.2 VideoView problema
- Mostrar y ocultar un botón de reproducción sobre un VideoView en Android
¿por favor ayuda?
Gracias por adelantado…..
- Tamaño de la memoria intermedia de Android VideoView
- VideoView: Evitar el flash negro de pantalla completa
- Ocultar el botón de pausa de reproducción del controlador de medios en android
- Cómo configurar la imagen de vista previa en videoview antes de jugar
- Cómo reproducir varios vídeos en diferentes vistas de vídeo en una actividad
- Reproducción de archivos de vídeo cifrados mediante VideoView
- Cómo crear círculo o videoView redondo en android?
- VideoView en bucle de videos Replenish
Que está haciendo es correcto, pero ha aplicado setContentView (R.layout.video_player); Sólo unos, aunque el vídeo se reanuda. Así que el código debe ser
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupViews(); } private void setupViews() { setContentView(R.layout.video_player); context=VideoPlayer.this; ----- ------ }
En lugar de
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.video_player); setupViews(); } private void setupViews() { context=VideoPlayer.this; ----- ------ }
- Algunos dispositivos android encuentran java.lang.NoClassDefFoundError
- ¿Cómo abrir el cuadro de diálogo del sistema para introducir la contraseña de una red wifi segura en android?