Как подключить YouTube Data API к Android приложению
В этой статье я покажу вам, как подключить YouTube API к вашему Android приложению. Приступим!
Функциональность:
YouTube API даёт возможность пользователям
Получить список видео, пользователей и плейлистов.
Это также обеспечивает возможность управлять этими списками(лентами). Например создание новых плейлистов, добавление видео в избранное, и отправка сообщений.
API также позволяет загружать видео.
Система также позволяет зарегистрировать слушателей для получения колбэков определенных событий, таких как загрузка видео или изменение состояния проигрывателя.
Есть поддержка изменения ориентации экрана, а также перехода к просмотру в полноэкранном режиме.
Руководство:
Требования: Google аккаунт
Шаг 1: Начнём с открытия Android Studio и создания нового проекта, выберите Empty Activity

Шаг 2: Перед использованием YouTube API вы должны зарегистрировать ваше приложение. Для этого вы должны сделать следующее:
Перейдите в Google Developers Console
Создайте новый проект (мой я назвал SelfLab)

Выберите API Overview

Выберите учётные данные в APIs & Services

Выберите создание учётных данных, затем API ключ, скопируйте его, позже он нам понадобиться

Выберите Library и найдите YouTube Data API
Нажмите включить API

Теперь мы получили наш ключ и API, давайте приступим к работе в Android приложении
Создайте Java Class File под названием Config.java в котором мы настроем наш API, вставьте следующий код в файл.
public final class Config {
private Config() {}
public static final String YOUTUBE_API_KEY = “Your API Key Here”;
}
Ниже перейдите по ссылке и загрузите YouTube player API, включающий Jar файл и вставьте его в папку libs

В Gradle добавьте следующий код в зависимости
compile files(‘libs/YouTubeAndroidPlayerApi.jar’)
В AndroidManifest.xml добавьте разрешение на интернет
<uses-permission android:name="android.permission.INTERNET"/>
Объявите следующие строки в String.xml
<resources>
<string name=”app_name”>VideoTube</string>
<string name=”player_error”>Error initializing YouTube player: %s</string>
<string name=”seek_to”>Jump To</string>
<string name=”seek_to_hint”>Seconds</string>
</resources>
Теперь мы готовы к созданию YouTube Player View в 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>
Теперь мы создадим класс, который является подклассом YouTubeBaseActivity. Это нужно, чтобы использовать YouTubePlayerView. Мы подключаем слушатель YouTubePlayer.OnInitializedListeber чтобы получать сообщения об успешной или нет инициализации. У интерфейса есть два метода, которые называются onInitializationFailure() и onInitializationSucess(). Если инициализация прошла успешно, то метод cueVideo() запустит YouTube видео и в случае ошибки проверяет, может ли пользователь её исправить.
Если это невозможно, пользователю показывается Toast об ошибке и если пользователь может её исправить, то метод getErrorDialog() показывает диалоговое окно, которое помогает исправить ошибку.
import android.content.Intent;
import android.os.Bundle;
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;
}
}