java - 如何通过所需的视频 ID 在 Android 应用程序中显示 Youtube 视频,以便从服务器设置 ID,以便稍后更改 ID?

标签 java android mysql firebase-realtime-database youtube

我是 Java 和 Android Studio 的新手。

我目前正在使用 Android Studio,我可以从视频 ID 加载 YouTube 视频,但在我的应用中,我无法保持视频 ID 不变我需要经常更改 ID 而无需用户下载应用更新。我已经尝试过 Firebase 实时数据库和远程配置,但在它们中,视频都滞后,因为它们是异步下载数据的。这个问题的最佳解决方案是什么?

感谢您提前提供帮助。

这是我的 YouTube 视频 fragment :

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>

最佳答案

我确信我的建议不会遵循您尝试采取的路径,但您可以通过设置一个放置视频的网页然后从 WebView 加载它来轻松实现这一点,这样您就可以简单地如果您没有设置缓存系统或者您只是清除缓存系统(无论您是否设置缓存系统),则更改网页和视频将在用户下次运行该应用程序时更新。

这比尝试处理 Firebase 开发环境(我发现它很复杂)要容易得多,但是如果页面没有得到很好的优化,您可能会在加载页面时遇到一些延迟;然而,您今天可以通过简单地设置一个 Tumblr 空间来解决这个问题,例如,您可以不时地更改提供的链接以展示不同的视频。

即使您想在 Activity 中显示除 WebView 之外的其他元素,您也可以通过一些限制来实现,或者您可以只在网页本身上插入您喜欢的内容(这主要取决于您的实际需要)。

这是一个Kotlin WebView sample如果您不熟悉它,您可以在这里了解更多关于 WebViews 的信息一般而言。

关于java - 如何通过所需的视频 ID 在 Android 应用程序中显示 Youtube 视频,以便从服务器设置 ID,以便稍后更改 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50163730/

相关文章:

java - 如何在 Activity 中保存光标?

MySQL Select 查询不工作

php - 如何在 MySQL 中显示重复记录并使用 PHP 合并记录?

java - 如何为 JUnit 测试用例运行启用全局超时?

Java:如何使用 ArrayList 在寄存器中使用计数器

javascript - 使用 axios 调用渲染表对象上的对象列表 : Rendering logic

android - 为什么使用 float 而不是 double 不会提高 Android 性能?

android - 关于BroadcastReceiver的疑惑

php - 在 PHP 中自动更新成员资格 MySQL 数据库

java - 如何获取DynamicReports标题下的列?