Salut à tous ;). J'ai remarqué récemment (en mettant à jour l'application youtube ) des soucis sur mon application ( qui utilise l'api youtube v3) : https://play.google.com/store/apps/d...degratte&hl=fr
En gros, sur la page d'un tuto, lorsque l'on clique sur un tuto dans les suggestions ou alors lorsque l'on quitte et relance l'application, la vidéo ne se lance pas/plus et charge indéfiniment.
Etant donné que c'est ma première application et que j'programme pas depuis longtemps, j'pensais que ça venait de mon code, qui est plutot un joyeux bordel. Du coup j'ai essayé de reprendre à zero l'activité pour voir au fur et à mesure ce qui pouvait déclencher le probleme.
J'suis pas aller bien loin avant d'arriver à reproduire l'erreur et du coup, j'me pose des questions sur l'origine du probleme. Voici ce que j'ai refais juste pour les tests et qui m'amene au pb énoncé plus haut : J'ai débuggé tout ça sur ma tablette qui tourne sous 4.1.2 et j'ai pris la derniere version de l'api youtube.
Le layout :Le fragment Youtube :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/single_drawer_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:theme="@style/AppTheme" tools:context="app.ipsaous.com.coursdegratte.NewSingleActivity"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ll_container" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!-- Bloc de gauche --> <LinearLayout android:layout_width="0dp" android:orientation="vertical" android:layout_height="fill_parent" android:layout_weight="1"> <fragment android:id="@+id/fragment" android:name="app.ipsaous.com.coursdegratte.fragment.YoutubeFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> <!-- Inclusion du drawer same_artiste --> <include layout="@layout/same_artiste" /> </android.support.v4.widget.DrawerLayout>
Et l'activity :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 public class YoutubeFragment extends YouTubePlayerFragment implements YouTubePlayer.OnInitializedListener, YouTubePlayer.OnFullscreenListener{ private YouTubePlayer player; private String videoId; public boolean isFullScreen; public static YoutubeFragment newInstance() { return new YoutubeFragment(); } public void setVideoId(final String videoId) { if (videoId != null && !videoId.equals(this.videoId)) { this.videoId = videoId; if (player != null) { player.cueVideo(videoId); Log.d("TEST", "SET VIDEO ID CALLED WITH ID = " + videoId); } } } @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); initialize(getString(R.string.dev_key), this); } // @Override // public void onSaveInstanceState(Bundle bundle) { // super.onSaveInstanceState(bundle); // } @Override public void onPause() { player.pause(); super.onPause(); } @Override public void onDestroy() { if (player != null) { player.release(); } super.onDestroy(); } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, final YouTubePlayer player, boolean b) { this.player = player; //youTubePlayer.setOnFullscreenListener(this); //youTubePlayer.setPlaybackEventListener(new PlayerListener()); //youTubePlayer.setPlayerStateChangeListener(new MyPlayerState()); Log.d("TEST", "SUCCESS "); //youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT); //youTubePlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI); //youTubePlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION); if (!b && videoId != null) { player.cueVideo(videoId); } } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { if(youTubeInitializationResult.isUserRecoverableError()){ youTubeInitializationResult.getErrorDialog(getActivity(), 1).show(); }else{ String errorMessage = "Erreur lors de l'initialisation du lecteur youtube"; Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); } Log.d("TEST", "FAILURE "); this.player = null; } }
A noter, que même quand la vidéo ne charge pas, c'est l'initialisationSuccess qui est appelé, l'id de la vidéo est correct également. Du coup, j'poste rarement sur le forums car j'arrive à me débrouiller mais là je bloque pour le moment. Pour info j'ai également essayé avec la version "support" du youtubeFragment pour le même résultat.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public class NewSingleActivity extends AppCompatActivity implements RequestTuto.GetOneTutoCallback, SuggestionAdapter.SuggestionsCallback { private YoutubeFragment youtubeFragment; private TextView test, test2, tv_single_titre, tv_single_artiste, tv_single_prof, tv_single_style; private ImageView menuRight, drapeau; private Button btn_tablature; private SessionManager sm; private RequestQueue queue; private DrawerLayout drawerLayout; private String videoId; private String tutoId; private ActionBar actionBar; private ActionBarDrawerToggle mDrawerToggle; private RequestTuto request; private SuggestionAdapter sameArtistAdapter; private RecyclerView artistRecycler; private Tuto oneTuto; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); actionBar = getSupportActionBar(); setTitle(""); setContentView(R.layout.activity_new_single); Log.d("TEST", "ON CREATE CALLED"); //Initialisation des vues drawerLayout = (DrawerLayout) findViewById(R.id.single_drawer_layout); sm = new SessionManager(this); queue = VolleySingleton.getInstance(this).getRequestQueue(); youtubeFragment = (YoutubeFragment) getFragmentManager().findFragmentById(R.id.fragment); youtubeFragment.setVideoId("pwKkjLOHd7s"); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_single_tuto, menu); if(sm.isLogged()){ MenuItem login = menu.findItem(R.id.action_connexion); MenuItem inscription = menu.findItem(R.id.action_inscription); login.setVisible(false); inscription.setVisible(false); }else{ MenuItem logout = menu.findItem(R.id.action_logout); MenuItem account = menu.findItem(R.id.action_account); logout.setVisible(false); account.setVisible(false); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if(mDrawerToggle != null) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } } return super.onOptionsItemSelected(item); } }
Si vous avez une idée d'ou ca pourrait venir, je suis tout ouïe ;)
Bonne journée