He leído todos alrededor de la manera de salir de pantalla completa de un vídeo de YouTube es por presionar, pero en mi Activity no está funcionando como este, pero me gustaría que.

He puesto el código:

public class MainActivity extends YouTubeFailureRecoveryActivity {
public static String prefix = "https://gdata.youtube.com/feeds/api/playlists/";
public static String sufix = "?v=2&alt=jsonc";
private String myPlayList = "PLZGKlf2ZwY7ua0C2oeUaXQKeLKNGy3mkh";
private VideosListFragment videosFragment;
//The next video to play
private Video actualVideo;
//This is the handler that receives the response when the YouTube read
private Handler responseHandler;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videosFragment = (VideosListFragment) getFragmentManager().findFragmentById(R.id.videosListView);
getUserYouTubeFeed();
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer player, boolean wasRestored) {
if (!wasRestored) {
player.loadVideo(actualVideo.getVideoId());
}
}
@Override
protected YouTubePlayer.Provider getYouTubePlayerProvider() {
return (YouTubePlayerFragment) getFragmentManager().findFragmentById(
R.id.youtube_fragment);
}
public void getUserYouTubeFeed() {
responseHandler = new Handler() {
public void handleMessage(Message msg) {
populateListWithVideos(msg);
};
};
//We start a new AsyncTask that does its work on its own thread
//We pass in a handler that will be called when the task has finished
LoadPlayListElements bgTask = new LoadPlayListElements(responseHandler);
bgTask.execute(myPlayList);
}
/**
* This method retrieves the Library of videos from the task and passes them
* to our ListView
* 
* @param msg
*/
private void populateListWithVideos(Message msg) {
Library lib = (Library) msg.getData().get(
LoadPlayListElements.LIBRARY);
VideosAdapter videos = new VideosAdapter(this, lib.getVideos());
videosFragment.setListAdapter(videos);
}
@Override
protected void onStop() {
//Make sure we null our handler when the activity has stopped
responseHandler = null;
super.onStop();
}
public void setVideo(Video _item, boolean _activate) {
actualVideo = _item;
if (_activate){
YouTubePlayerFragment fragment = (YouTubePlayerFragment) getFragmentManager()
.findFragmentById(R.id.youtube_fragment);
if (fragment != null && fragment.isInLayout()) {
fragment.initialize(DeveloperKey.DEVELOPER_KEY, this);
}
}
}
}

y el diseño:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<fragment
android:id="@+id/videosListView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginTop="?android:attr/actionBarSize"
class="com.vivoenmimundo.sc2hotsepicreplays.ui.phone.fragment.VideosListFragment" >
</fragment>
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:id="@+id/youtube_fragment"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center_vertical"/>
</LinearLayout>

Alguna idea? He tratado de no hacer nada demasiado extraño, sólo tienes que copiar/pegar desde YouTube API ejemplos.

InformationsquelleAutor Nhano | 2013-03-28

3 Comentarios

  1. 30

    Fue, como se dijo antes, el comportamiento correcto – porque el jugador estaba en el interior de un fragmento, tuve que coger el botón atrás con:

    @Override
    public void onBackPressed() {
    if (fullScreen){
    videoPlayer.setFullscreen(false);
    } else{
    super.onBackPressed();
    }
    }

    y establecer mi «pantalla completa» boolean como este:

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider,
    YouTubePlayer player, boolean wasRestored) {
    if (!wasRestored) {
    showPlayer();
    videoPlayer = player;
    videoPlayer.setOnFullscreenListener(new OnFullscreenListener() {
    @Override
    public void onFullscreen(boolean _isFullScreen) {
    fullScreen = _isFullScreen;
    }
    });
    videoPlayer.loadVideo(actualVideo.getVideoId());
    }
    }

    gracias a todos!

    • ¿cómo acceder a videoPlayer en su onBackPressed método? He probado el mismo, pero estoy haciendo esto NullPointerException: Intento de invocar método de interfaz ‘void com.google.android.youtube.jugador.YouTubePlayer.setFullscreen(boolean)’ en una referencia de objeto null
    • poner videoplayer objeto en un campo variable en el interior de onInitializationSuccess método
    • Esto no funciona en el fragmento. Como onBackPressed método no está disponible en el fragmento.
  2. 3

    Paso 1 : Siga la Respuesta a la pregunta 16 por Nhano

    Paso 2 : agregar la siguiente línea en su Menifest YoutubeActivity etiqueta.

    android:configChanges=»orientación|screenSize»

    esta solución funcionó para mí..

    • funciona a la perfección para mí. gracias
  3. 0

    Usted podría tratar de detectar el botón atrás de prensa y definir lo que hace.

    //Sets functionality of the hard buttons on the device
    @Override 
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
    //Custom define what you want to happen
    }
    return true;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here