【问题标题】:Video is not playing in YoutubePlayer Fragment视频未在 YoutubePlayer 片段中播放
【发布时间】:2015-11-20 00:39:01
【问题描述】:

我正在制作一个使用 Youtube 播放器片段的应用程序。它已加载,但没有播放视频。这是我的代码:

Youtube.java(片段)

public class Youtube extends YouTubePlayerFragment {


    public Youtube() {
    }

    public static Youtube newInstance(String url) {

        Youtube frag = new Youtube();

        Bundle b = new Bundle();
        b.putString("url", url);

        frag.setArguments(b);
        frag.init();

        return frag;
    }

    private void init() {

        initialize(API_KEY, new YouTubePlayer.OnInitializedListener() {

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {
            }

            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
                if (!wasRestored) {
                    player.cueVideo(getArguments().getString("url"));
                   // player.play();
                }
            }
        });
    }
}

活动

    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        Youtube f = Youtube.newInstance("https://www.youtube.com/watch?v=o49aHgzTOGw");
        FragmentManager fragmentManager=getFragmentManager();
        fragmentManager.beginTransaction().add(f,"Fragment").commit();
    }

布局

<FrameLayout>
    <fragment class="com.google.android.youtube.player.YouTubePlayerFragment"
              android:id="@+id/Fragment"
              android:layout_width="match_parent"
              android:layout_height="wrap_content" />
</FrameLayout>

我哪里出错了。我无法弄清楚。我需要扩展YoutubeBaseActivity 吗?如何做到这一点?

【问题讨论】:

  • Activtiy 布局:

标签: android android-fragments youtube-api youtube-data-api


【解决方案1】:

我认为您应该以官方方式编写代码。查看here,并下载压缩文件(YouTubeAndroidAPIDemo 包中包含的示例应用程序)here 以获取示例。看看FragmentDemoActivity

基本上,您需要执行Activity,其中包括YoutubePlayerFragment,如下所示:

public class FragmentDemoActivity extends YouTubeFailureRecoveryActivity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fragments_demo);

    YouTubePlayerFragment youTubePlayerFragment =
        (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment);
    youTubePlayerFragment.initialize(DeveloperKey.DEVELOPER_KEY, this);
  }

  @Override
  public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
      boolean wasRestored) {
    if (!wasRestored) {
      player.cueVideo("nCgQDjiotG0");
    }
  }

  @Override
  protected YouTubePlayer.Provider getYouTubePlayerProvider() {
    return (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment);
  }
}

YouTubeFailureRecoveryActivity:

public abstract class YouTubeFailureRecoveryActivity extends YouTubeBaseActivity implements
    YouTubePlayer.OnInitializedListener {

  private static final int RECOVERY_DIALOG_REQUEST = 1;

  @Override
  public void onInitializationFailure(YouTubePlayer.Provider provider,
      YouTubeInitializationResult errorReason) {
    if (errorReason.isUserRecoverableError()) {
      errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
    } else {
      String errorMessage = String.format(getString(R.string.error_player), errorReason.toString());
      Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
    }
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == RECOVERY_DIALOG_REQUEST) {
      // Retry initialization if user performed a recovery action
      getYouTubePlayerProvider().initialize(DeveloperKey.DEVELOPER_KEY, this);
    }
  }

  protected abstract YouTubePlayer.Provider getYouTubePlayerProvider();

}

还有fragments_demo.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

  <fragment
      android:name="com.google.android.youtube.player.YouTubePlayerFragment"
      android:id="@+id/youtube_fragment"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

</LinearLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    相关资源
    最近更新 更多