在Android应用程序使用YouTube API回嵌入视频

在Android应用程序使用YouTube API来嵌入视频

Android版YouTube播放器API使您可以将视频播放功能到你的Android应用程序该API允许您加载和播放YouTube视频(和播放列表),并自定义和控制视频播放体验。

您可以加载或暗示的视频嵌入到你的应用程序的用户界面的球员视图。然后,您可以通过编程控制播放。例如播放,暂停,或寻求在加载视频的特定点。您可以注册事件侦听器来获取某些事件,比如玩家加载视频或播放状态改变回调。API还具有辅助功能,支持方向的变化,以及过渡到全屏播放。


使用Android的Youtube API之前,您需要注册您的应用程序,包括您的数字签名的apk在谷歌开发者控制台文件的公证书。要注册应用程序,请按照下列步骤。要开始,创建一个新的项目。我打电话给我VideoTube。在Android Studio的向导的下一个屏幕上选择API 10空白活动MainActivity作为活动的名称。

  1. 进入谷歌开发者控制台
  2. 创建一个新项目。我将其命名VideoTube
  3. 在该项目中创建后出现的页面上,展开API和验证左侧边栏。接下来,单击的API在API的列表,点击YouTube数据API并启用YouTube数据API V3后面的页面上。
  4. 在左侧边栏,选择证书对于资格证书,API支持的OAuth 2.0,使用服务帐户的API密钥和。我们将使用API密钥选项。
  5. 选择API密钥从添加凭据下拉菜单。会显示一个弹出让你指定密钥类型。选择Android的关键接下来选择添加包名和指纹,并添加Android应用程序的包名(我的是com.echessa.videotube),然后在终端中运行以下命令来获取SHA-1证书指纹。

keytool -list -v -keystore ~/.android/debug.keystore

输入android系统提示时作为密码。上位于调试密钥库上面的命令打印资料〜/ .android / debug.keystore您的计算机上。这是通过Eclipse中或Android工作室当你第一次建立了一个Android应用程序自动生成的。在终端方面,你会看到MD5和SHA-1证书指纹。复制SHA-1指纹,并将其粘贴在谷歌开发者控制台,然后点击创建按钮。API密钥将会产生。稍后我们将使用此。

早在Android应用程序,创建一个名为类Config.java并粘贴以下。


package com.echessa.videotube;

/**
 * Created by echessa on 7/17/15.
 */
public final class Config {

    private Config() {
    }

    public static final String YOUTUBE_API_KEY = "YOUR API KEY";

}

粘贴您的API密钥。

下载(在写作的时候1.2.1)的最新版本的Android版YouTube播放器API的。解压下载的文件,以找到库的jar文件,并且你可以用它来 看看有什么的库提供的一个示例应用程序。JAR文件位于文件夹中。复制并粘贴到你的项目的文件夹中。要访问的库文件夹,使用项目在Android Studio的工程资源管理器的角度来看。然后,展开VideoTube - >程序- >库

在Android应用程序使用YouTube API回嵌入视频

变回Android的角度来看,选择的build.gradle(模块:应用程序)文件,并添加以下的依赖关系。


compile files('libs/YouTubeAndroidPlayerApi.jar')

同步项目的文件的gradle。

添加下面的权限,互联网接入到的AndroidManifest.xml文件作为一个孩子明显标签和同级的应用程序


<uses-permission android:name="android.permission.INTERNET"/>

编辑的strings.xml文件,如图所示。这些都是我们需要的字符串资源。


<resources>
    <string name="app_name">VideoTube</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="player_error">Error initializing YouTube player</string>
    <string name="seek_to">Jump To</string>
    <string name="seek_to_hint">Seconds</string>
</resources>

接下来,我们将添加一个YouTubePlayerView到布局文件。该视图用于显示YouTube视频。

修改activity_main.xml中,如图所示。


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MainActivity">

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

</RelativeLayout>

我们将直接使用YouTubePlayerView在我们的活动,而不是使用YouTubePlayerFragment正因为如此,该活动需要延长YouTubeBaseActivity类。

修改MainActivity.java如图所示。


package com.echessa.videotube;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView;

public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {

    private static final int RECOVERY_REQUEST = 1;
    private YouTubePlayerView youTubeView;

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

        youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
        youTubeView.initialize(Config.YOUTUBE_API_KEY, this);
    }

    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
        if (!wasRestored) {
            player.cueVideo("fhWaJi1Hsfo"); // Plays https://www.youtube.com/watch?v=fhWaJi1Hsfo
        }
    }

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

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

    protected Provider getYouTubePlayerProvider() {
        return youTubeView;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main