Не удается загрузить современный интерфейс элементов управления. Обновите Android YouTube API до последней версии.

Я пытаюсь использовать Android Youtube API. Все работает нормально, за исключением того, что когда я расширяю AppCompatActivity. Пользовательский интерфейс YoutubePlayer выглядит так плохо. Я пробовал как YoutubePlayerFragment, так и YoutubePlayerSupportFragment. Ничего не работает.
Logcat выглядит следующим образом:

W/YouTubeAndroidPlayerAPI: Cannot load modern controls UI. Upgrade to the latest version of the Android YouTube API.

Я уже обновил последнюю версию API YouTube 1.2.2. Но это все еще не работает.
Странно то, что если я расширяю FragmentActivity или Activity, это работает.
Пожалуйста, помогите. Заранее спасибо.


person Huy Duong Tu    schedule 27.10.2015    source источник
comment
stackoverflow.com/a/37181075/4733198 Это мой вопрос и ответ. Я надеюсь, что это будет помощь.   -  person WonSeob Koh    schedule 12.05.2016


Ответы (2)


Для меня проблема в том, что я могу воспроизвести видео только один раз, но после этого YouTubePlayer не воспроизводит видео, и я надеюсь, что есть много других людей, которые также сталкиваются с аналогичными проблемами с YouTubeAndroidPlayerAPI. Я думаю, что последнее приложение YouTube (версия 10.37.58) и YouTubeAndroidPlayerAPI 1.2.1 несовместимы.

Насколько мне известно, единственное, что вы можете сделать в настоящее время для решения этой проблемы, — это понизить версию вашего приложения YouTube, установленного на устройстве, до версии 10.36.52 или ниже. (вы можете получить его из apk-зеркала)

При работе с YouTubeAndroidPlayerAPI я заметил, что с версией YouTube 10.36.52 он выдает предупреждающие сообщения «Не удается загрузить современный пользовательский интерфейс элементов управления. Обновите Android до последней версии API YouTube для Android». на logcat каждый раз, когда я пытаюсь воспроизвести видео, но в остальном работает нормально. А с версией 10.35.53 и ниже такое предупреждающее сообщение не выдается.

Причина: я не уверен, но я думаю, что это как-то связано с огромной проблемой утечки памяти с фрагментом YoutubePlayerSupport в YouTubeAndroidPlayerAPI 1.2.1, который был широко известен и сообщался в отслеживании проблем API данных Google. Это было окончательно исправлено в прошлом месяце 1 сентября (по крайней мере, так говорит текущий статус) через год после того, как об этом сообщили (удивлен, увидев, что Google так долго). Однако Google еще не выпустил новую версию YouTubeAndroidPlayerAPI с исправлением. Так что, возможно, они исправили эту проблему с памятью в приложении YouTube в сентябре, что каким-то образом нарушило функциональность YouTubeAndroidPlayerAPI 1.2.1 (поскольку YouTubeAndroidPlayerAPI напрямую зависит от работы приложения YouTube).

person Brendan Henry    schedule 29.10.2015
comment
У меня такая же проблема. У вас есть решение? - person Rushikesh Talokar; 02.08.2016

Существует быстрое решение этой проблемы, когда я обратился к своему приложению.

  1. Прежде всего, вам нужно перестать использовать YouTubePlayerFragment или YouTubePlayerSupportFragment.
  2. Вместо этого создайте действие, содержащее просмотр видео на YouTube. Вот мой xml и активность: activity_you_tube_player.xml

<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout 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" android:paddingLeft="0dp"
android:paddingRight="0dp" android:paddingTop="0dp" android:paddingBottom="0dp" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_you_tube_player" tools:context="com.stavira.ipaphonetics.YouTubePlayerActivity">

  <com.google.android.youtube.player.YouTubePlayerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/youtubePlayerView">
  </com.google.android.youtube.player.YouTubePlayerView>
</RelativeLayout>

Мероприятия:

public class YouTubePlayerActivity extends YouTubeBaseActivity {

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_you_tube_player);

    YouTubePlayerView playerView = (YouTubePlayerView) findViewById(R.id.youtubePlayerView);

    final String videoID = getIntent().getExtras().getString("videoID");
    playerView.initialize(YTConfig.DEVELOPER_KEY, new YouTubePlayer.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

            youTubePlayer.setFullscreen(true);
            youTubePlayer.setShowFullscreenButton(true);
            youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
            youTubePlayer.loadVideo(videoID.replace("https://www.youtube.com/watch?v=", ""));

            youTubePlayer.setPlayerStateChangeListener(new YouTubePlayer.PlayerStateChangeListener() {
                @Override
                public void onLoading() {

                }

                @Override
                public void onLoaded(String s) {

                }

                @Override
                public void onAdStarted() {

                }

                @Override
                public void onVideoStarted() {

                }

                @Override
                public void onVideoEnded() {

                }

                @Override
                public void onError(YouTubePlayer.ErrorReason errorReason) {

                }
            });
        }

        @Override
        public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

        }
    });


}

}

  1. Во фрагменте, где вы ранее размещали фрагмент YouTube, запустите действие YouTube с намерением.
person codingpuss    schedule 07.11.2015
comment
Как я уже сказал в своем вопросе, эта проблема не возникает, когда я использую YoutubeBaseActivity, но AppcompatActivity - person Huy Duong Tu; 08.11.2015
comment
Да, именно поэтому я предлагаю вам поместить проигрыватель в YoutubeBaseActivity и вызвать эту активность из вашего фрагмента. - person codingpuss; 09.11.2015
comment
@codingpuss для меня не работает даже с YouTubeBaseActivity на некоторых устройствах, таких как Redmi1s - person Akhil Dad; 24.01.2017