Reproducción de vídeo desde el estado de pausa en VideoView
Para videoview personalizado tuve que anular el MediaController (para cambiar el diseño de los botones y conectar a los botones de pausa / reproducir un selector). La situación es la siguiente: poner el video en pausa y girar la aplicación, y de nuevo restaurado, el video comienza a reproducirse, y no desde el punto en que se suspendió, y por lo tanto se planteó la pregunta: cómo hacer que el video comience a reproducir Desde el lugar, donde fue detenido? ¿Qué necesito cambiar en la VideoActivity?
public class VideoActivity extends Activity { VideoView videoView; VkMediaController mc; private static final String CURRENT = "duration"; private static final String URL = "url"; private Uri mURI; private int mCurrentPosition = -1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.video_view_player); videoView = (VideoView) findViewById(R.id.videoViewplayer); mc = new VkMediaController(this); mURI = getIntent().getData(); if (savedInstanceState != null) { mURI = Uri.parse(savedInstanceState.getString(URL)); mCurrentPosition = savedInstanceState.getInt(CURRENT); } videoView.setMediaController(mc); videoView.setVideoURI(mURI); videoView.requestFocus(); } @Override protected void onStart() { super.onStart(); videoView.start(); if (mCurrentPosition != -1) { videoView.seekTo(mCurrentPosition); } } @Override public void onSaveInstanceState(Bundle outState) { outState.putInt(CURRENT, videoView.getCurrentPosition()); outState.putString(URL, mURI.toString()); super.onSaveInstanceState(outState); }
}
- Android VideoView inicia muchos videos secuencialmente
- Cómo puedo reproducir video desde byte en android
- Detectar cuándo la reproducción de vídeo deja de reproducirse
- No se pudo abrir el archivo en el lado del cliente, intentando el lado del servidor Error en Android
- Cómo reproducir vídeos desde la tarjeta SD
- ¿Cómo ejecutar varios videos con diferentes VideoViews en una actividad en android 2.2?
- Tamaño de la memoria intermedia de Android VideoView
- Ocultar el botón de pausa de reproducción del controlador de medios en android
- Reanudar la reproducción de VideoView desde onResume
- Cómo cerrar Landscape VideoView Activity correctamente?
- Uso de VideoView para streaming o video de descarga progresiva
- Zooming VideoView para rellenar el ancho, manteniendo la relación de aspecto
- Cómo detectar si VideoView está reproduciendo video o Buffering?
Creo que el problema es que videoView.getCurrentPosition()
siempre devolverá 0 al llamar dentro de onSaveInstanceState(Bundle outState)
, porque en ese momento el video ya se restableció, así que llame a videoView.getCurrentPosition()
cuando onPause()
, esto le devolverá El valor deseado.
Yo tuve el mismo problema. Pensé que lo hice todo bien, pero no funcionó. Entonces apenas cambié la orden así que primero llamo VideoView.seekTo()
y entonces VideoView.start()
. Eso funciono. También tengo VideoView.requestFocus()
en allí pero no sé si eso importa.
videoPlayer.requestFocus(); videoPlayer.seekTo(position); videoPlayer.start();
Así que si está seguro de que la variable de posición tiene el valor correcto, esta podría ser su respuesta. Es posible que no pueda buscar cuando el video no esté cargado. Implementar onPreparedListener como este:
public class VideoActivity extends Activity implements OnPreparedListener { VideoView videoPlayer; int position; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceState!=null){ position=savedInstanceState.getInt("pos") } // setting up the videoview setContentView(R.layout.activity_video); getIntent().getExtras().getString("url"); Uri videouri = Uri.parse(getIntent().getExtras().getString("url")); videoPlayer = (VideoView) findViewById(R.id.videoView); videoPlayer.setOnPreparedListener(this); videoPlayer.setKeepScreenOn(true); videoPlayer.setVideoURI(videouri); } /** * Start the plaback when the video is loaded * * @param mp * @see android.media.MediaPlayer.OnPreparedListener#onPrepared(android.media.MediaPlayer) */ public void onPrepared(MediaPlayer mp) { //this is a TextView infront of the VideoView which tells the User the Video is loading- hide that findViewById(R.id.tv_video_load).setVisibility(View.GONE); videoPlayer.requestFocus(); videoPlayer.seekTo(position) videoPlayer.start(); } }
- Android MapView no se carga a menos que toque en la vista del mapa
- Base de datos Firebase Permiso denegado con permisos de lectura / escritura establecidos en true