Как я могу отобразить видео Youtube в приложении Android с нужным идентификатором видео, чтобы идентификатор был установлен с сервера, чтобы я мог изменить идентификатор позже? - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в Java и Android Studio.

В настоящее время я работаю с Android Studio и могу загрузить видео YouTube с идентификатора видео, но в своем приложении я не могу сохранить идентификатор видео статичным. Мне нужно часто менять идентификатор, не требуя от пользователей загрузки приложения Обновить. Я пробовал Firebase базу данных в реальном времени и удаленную конфигурацию, но в обоих случаях видео отстает, потому что они загружают данные асинхронно. Каково оптимальное решение этой проблемы?

Спасибо за помощь заранее.

Вот мой фрагмент видео на YouTube:

package shah.vatsal.kinitro

public class youtubefragment extends Fragment {

private static final String API_KEY = 
"AIzaSyAXjBSS9NVAewJ2Z0Z86JrlHsJbJzoP_Ns";

private static String VIDEO_ID = "mMMerxh_12U";

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.youtube_videos, container, 
false);

    YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
    transaction.add(R.id.youtube_layout, youTubePlayerFragment).commit();

    youTubePlayerFragment.initialize(API_KEY, new OnInitializedListener() {
        @Override
        public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
            if (!wasRestored) {
                player.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
                player.loadVideo(VIDEO_ID);
                player.play();
            }
        }
        @Override
        public void onInitializationFailure(Provider provider, YouTubeInitializationResult error) {
            // YouTube error
            String errorMessage = error.toString();
            Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show();
            Log.d("errorMessage:", errorMessage);
        }
    });
    return v;
}
}

Макет YouTube:

<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/youtube_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<FrameLayout
    android:id="@+id/youtube_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="true"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

1 Ответ

0 голосов
/ 04 мая 2018

Я уверен, что мое предложение не соответствует пути, по которому вы пытаетесь пойти, но вы можете легко добиться этого, настроив веб-страницу, на которой размещается видео, а затем загрузив его из WebView, чтобы вы могли просто измените веб-страницу, и видео будет обновлено в следующий раз, когда пользователи запустят приложение, если вы не установите систему кэширования или просто очистите ее, если она установлена.

Это гораздо проще, чем пытаться работать со средой разработки Firebase (что мне кажется сложным), но вы можете столкнуться с некоторой задержкой при загрузке страницы, если страница не очень хорошо оптимизирована; однако вы могли бы решить эту проблему сегодня, просто установив, например, пространство Tumblr, и время от времени вы могли просто изменять предоставленную ссылку для демонстрации различных видео.

Даже если вы хотите показывать другие элементы своей деятельности помимо WebView, вы можете сделать это с некоторыми ограничениями или просто вставить то, что вам нравится, на саму веб-страницу (это зависит в основном от ваших реальных потребностей).

Вот пример Kotlin WebView на случай, если вы с ним не знакомы, и здесь вы можете узнать больше о WebViews в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...