samsung rotate programas porque pantalla grados girar gira como celular java android orientation android-videoview

java - rotate - Cómo seguir reproduciendo el video mientras cambias al modo horizontal android



porque no gira la pantalla de mi celular (3)

A menos que especifique lo contrario, un cambio de configuración (como un cambio en la orientación de la pantalla, el idioma, los dispositivos de entrada, etc.) causará la destrucción de su actividad actual, pasando por el proceso de ciclo de vida de la actividad normal de onPause (), onStop () y onDestroy () según corresponda. Si la actividad ha estado en primer plano o es visible para el usuario, una vez que se llama a OnDestroy () en esa instancia, se creará una nueva instancia de la actividad, con el estado guardado en la instancia anterior que la instancia anterior haya generado desde onSaveInstanceState (Bundle).

Entonces, lo que sucedió detrás de la escena: la actividad de VideoView de currnet (paisaje) se destruye, se crea una nueva Actividad de VideoView (retrato) debido a que se cambió la configuración de Orientación de la pantalla, y se destruyó inmediatamente (donde se pueden ver los efectos en la pantalla), la última actividad en la pila se muestra.

Intenta manejar estos métodos y comprueba.

@Override protected void onResume() { mVideoView.resume(); super.onResume(); } @Override protected void onPause() { mVideoView.suspend(); super.onPause(); } @Override protected void onDestroy() { mVideoView.stopPlayback(); super.onDestroy(); }

Estoy reproduciendo video (en VideoView ) en modo retrato (no en pantalla completa) y cuando cambio a

Modo paisaje el vídeo se detiene.

Cuando lo cambie a horizontal, ese video aparecerá en pantalla completa y seguirá reproduciéndose.

¿Cualquier sugerencia?


todo lo que necesita hacer es agregar esto a la actividad en AndroidManifest.xml:

android:configChanges="orientation"

Su actividad de video debe verse algo como esto.

<activity android:name=".VideoPlayerActivity" android:configChanges="orientation" />

Si su nivel de API objetivo 13 o superior, debe incluir el valor de screenSize además del valor de orientation como se describe here . Su actividad de video debe verse algo como esto.

<activity android:name=".VideoPlayerActivity" android:configChanges="orientation|screenSize" />

Y luego agregue el siguiente método a VideoPlayerActivity:

@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }


Vídeo en pantalla completa

AndroidManifext.xml (Configuración de la orientación)

<activity android:name=".Video1" android:screenOrientation="landscape" />

Video1.xml Código:

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Video1"> <VideoView android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"> </VideoView>

Video1.java Código:

import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.WindowManager; import android.widget.MediaController; import android.widget.VideoView; public class Video1 extends AppCompatActivity { private VideoView videoView; private MediaController mediaController; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video1); videoView = findViewById(R.id.videoView); String fullScreen = getIntent().getStringExtra("fullScreenInd"); if("y".equals(fullScreen)){ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getSupportActionBar().hide(); } Uri videoUri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.YOUR_VIDEO_NAME); videoView.setVideoURI(videoUri); mediaController = new FullScreenMediaController(this); mediaController.setAnchorView(videoView); videoView.setMediaController(mediaController); videoView.start(); } }

Código FullScreenMediaControler.java:

import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.MediaController; public class FullScreenMediaController extends MediaController { private ImageButton fullScreen; private String isFullScreen; public FullScreenMediaController(Context context) { super(context); } @Override public void setAnchorView(View view) { super.setAnchorView(view); //image button for full screen to be added to media controller fullScreen = new ImageButton (super.getContext()); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.gravity = Gravity.RIGHT; params.rightMargin = 80; addView(fullScreen, params); //fullscreen indicator from intent isFullScreen = ((Activity)getContext()).getIntent(). getStringExtra("fullScreenInd"); if("y".equals(isFullScreen)){ fullScreen.setImageResource(R.drawable.ic_fullscreen_exit); }else{ fullScreen.setImageResource(R.drawable.ic_fullscreen); } //add listener to image button to handle full screen and exit full screen events fullScreen.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getContext(),Video1.class); if("y".equals(isFullScreen)){ intent.putExtra("fullScreenInd", ""); }else{ intent.putExtra("fullScreenInd", "y"); } ((Activity)getContext()).startActivity(intent); } }); } }