Par exemple, cette vidéo ne peut pas être lue avec l’API du lecteur Youtube: https://www.youtube.com/watch?v=OLK1efdt3n8 (d’autres vidéos de la recherche répondent correctement)
Je reçois les messages suivants:
09-25 17:18:50.226 24280-24280/com.mypackagename W/YouTubeAndroidPlayerAPI﹕ Cannot load modern controls UI. Upgrade to the latest version of the Android YouTube API.
09-25 17:19:05.911 24280-24280/com.mypackagename E/YoutubePlayerFragment﹕ video error : INTERNAL_ERROR
Version de l'API YouTubePlayer: 1.2.1 (dernière)
L'application YouTube sur l'appareil est à jour et capable de lire cette vidéo
Paramètres vidéo: videoEmbeddable=true videoSyndicated=true
Pour moi, le problème est que je ne peux lire la vidéo qu’une seule fois, mais après cela, YouTubePlayer ne lit plus aucune vidéo et j’espère qu’il en existe de nombreuses autres personnes qui sont également confrontées à des problèmes similaires avec YouTubeAndroidPlayerAPI. Je pense La dernière application youtube (version 10.37.58) et YouTubeAndroidPlayerAPI 1.2.1 ne sont pas compatibles.
Autant que je sache la seule chose que vous puissiez faire actuellement pour résoudre ce problème est de rétrograder votre application youtube installée sur l'appareil à la version 10.36.52 ou inférieure. (vous pouvez l'obtenir de apk mirror )
D'après ce que j'ai remarqué en travaillant avec YouTubeAndroidPlayerAPI, la version 10.36.52 de youtube génère des messages d'avertissement "Impossible de charger l'interface utilisateur des commandes modernes. Mettez à niveau vers la dernière version de l'API Android YouTube." Sur le logcat. chaque fois que j'essaie de lire une vidéo mais que ça fonctionne bien. Et avec la version 10.35.53 et inférieure, aucun message d’avertissement de ce type n’est lancé.
Raison: je ne suis pas sûr, mais je pense que cela a quelque chose à voir avec l'énorme problème de fuite de mémoire avec le fragment YoutubePlayerSupport dans YouTubeAndroidPlayerAPI 1.2.1, qui était largement connu et rapporté dans traqueur de problème d'api de google data . Il a finalement été résolu Le mois dernier, le 1er septembre (du moins, c'est ce que dit l'état actuel), un an après son signalement (surpris de voir ce qui a pris si longtemps à Google), bien que Google n'ait pas encore déployé la nouvelle version de YouTubeAndroidPlayerAPI avec le correctif. Donc, ils ont peut-être corrigé ce problème de mémoire dans l’application youtube en septembre, ce qui a en quelque sorte brisé les fonctionnalités de YouTubeAndroidPlayerAPI 1.2.1 (car YouTubeAndroidPlayerAPI dépend directement de l’application youtube).
La version 1.2.2 des API de lecteur YouTube vient de paraître . Cela pourrait résoudre le problème de lecture vidéo que vous rencontrez.
Hé c'est ce que je suis en train de mettre en œuvre dans mon application pour la lecture de votre tube vidéo
public class Youtubevideo extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener
{
public static final String API_KEY = "Use Your API key For youtube api";
//http://youtu.be/<VIDEO_ID>
//sample video id
public String VIDEO_ID = "abcdefgh";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/** attaching layout xml **/
setContentView(R.layout.youtubevideo);
Intent dataReceived = getIntent();
if(dataReceived != null)
{
VIDEO_ID = dataReceived.getStringExtra("url");
}
/** Initializing YouTube player view **/
YouTubePlayerView youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
youTubePlayerView.initialize(API_KEY, this);
}
@Override
public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) {
Toast.makeText(this, "Failured to Initialize!", Toast.LENGTH_LONG).show();
}
@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
/** add listeners to YouTubePlayer instance **/
//player.setPlayerStateChangeListener(playerStateChangeListener);
//player.setPlaybackEventListener(playbackEventListener);
player.setFullscreen(true);
player.setShowFullscreenButton(true);
/** Start buffering **/
if (!wasRestored) {
player.cueVideo(VIDEO_ID);
}
}
private PlaybackEventListener playbackEventListener = new PlaybackEventListener() {
@Override
public void onBuffering(boolean arg0) {
}
@Override
public void onPaused() {
}
@Override
public void onPlaying() {
}
@Override
public void onSeekTo(int arg0) {
}
@Override
public void onStopped() {
}
};
private PlayerStateChangeListener playerStateChangeListener = new PlayerStateChangeListener() {
@Override
public void onAdStarted() {
}
@Override
public void onError(ErrorReason arg0) {
}
@Override
public void onLoaded(String arg0) {
}
@Override
public void onLoading() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onVideoStarted() {
}
};
}
et xml sera comme:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<com.google.Android.youtube.player.YouTubePlayerView
Android:id="@+id/youtube_player"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="#fff"
Android:padding="5dp" />
</LinearLayout>
et dans build.gradle, utilisez la librairie jar Youtube librement disponible:
compile files('libs/YouTubeAndroidPlayerApi.jar')
espérons que cela aidera. :)