Estoy jugando video (en VideoView) en el modo de retrato (no en pantalla completa) y cuando me cambio a

modo de paisaje el video stop.

Cuando lo cambio en el paisaje que aparecerá el video en pantalla completa y seguirá jugando.

Alguna Sugerencia?

InformationsquelleAutor gilush14 | 2012-06-14

3 Comentarios

  1. 50

    todo lo que necesita hacer es agregar esta actividad en AndroidManifest.xml:

     android:configChanges="orientation"

    Su actividad de Video debe ser algo como esto.

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

    Si tu objetivo API de nivel 13 o superior, se debe incluir la screenSize valor además de la orientation valor tal como se describe aquí. Su actividad de Video debe ser algo como esto.

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

    Y, a continuación, agregue el método siguiente a VideoPlayerActivity:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }
    • He intentado lo que sugiere pero cuando estoy jugando en el modo de retrato el video es pequeño en comparación con el modo de paisaje que el vídeo debe ser a pantalla completa pero el video todavía estancia pequeña con este código
    • Lo sentimos, no trabajo! 🙂 tnx
    • Es bueno saberlo 🙂
    • esto no funciona .
    • Creo que la adición de «screenSize» hizo el truco.
    • Este no es un trabajo
    • Excelente yo estaba buscando desde hace mucho tiempo :P-última

  2. 0

    El Paisaje De Pantalla Completa De Vídeo

    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();
        }
    }

    FullScreenMediaControler.java Código :

    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);
    }
    });
    }
    }
    • podría explicar lo que estos códigos están haciendo
    • para ver la pantalla completa de vídeo paisaje
    • Dando android:screenOrientation="landscape" va a solucionar actividad en paisaje sólo en el modo de usuario(no se puede cambiar el retrato).Yo creo que usted debe leer la pregunta de nuevo.
  3. -1

    A menos que se especifique de otra manera, un cambio en la configuración (tal como un cambio en la orientación de la pantalla, el idioma, los dispositivos de entrada, etc) hará que su actividad actual a ser destruido, pasando a través de la actividad normal de proceso de ciclo de vida de onPause(), onStop(), y onDestroy() según corresponda. Si la actividad había estado en el primer plano o visibles para el usuario, una vez onDestroy() es llamado en esa instancia, a continuación, una nueva instancia de la actividad será creado, con lo que savedInstanceState la instancia anterior que había generado a partir de onSaveInstanceState(Bundle).

    Así que lo que sucedió detrás de las escenas: currnet VideoView Actividad (paisaje) es destruido, un nuevo VideoView Actividad (retrato) es creado debido screenOrientation de configuración ha cambiado, y destoryed immidiately (donde se pueden ver los efectos en la pantalla), última actividad en la pila se muestra.

    De tratar de manejar este método y comprobar

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

Dejar respuesta

Please enter your comment!
Please enter your name here