Работа с компонентом YouTubePlayerView

Автор: | 03.10.2014

Для воспроизведения видео ролика с YouTube в мобильном приложении я знаю два подхода:

1. Запустить через намерение (intent) родное приложение от Google.
Делается это примерно вот так:

startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));

В этом случае мы выйдем за пределы исходного приложения, но при этом работы сэкономим очень много.
2. Использовать YouTube Android Player API. В этом случае мы за пределы приложения не выйдем, и, по идее, больше нам ничего на устройстве и не надо.

В данной статье хочу поделиться опытом работы с этим API на примере простейшего приложения для проигрывания видео с YouTube.
Создадим новый Android-проект в Eclipse, и в мастере выберем Empty Activity.

БезымянныйДля работы с самим API вам нужно получить ключ разработчика. На каждое приложение нужно получить уникальный ключ. Детализированная инструкция находится здесь.

Если вкратце, то идете в консоль разработчика. Далее включаете YouTube Data API v3 и создаете новый проект, записываете свой ключ (SHA1) и имя пакета. В конце ваших действий получите вот такую табличку с ценной информацией:

9b7c7c350c8e9748c09cea3cbca988b2 Нам важен API KEY, его пропишем в приложение.

Теперь осталось скачать библиотеку и положить её в папку libs нашего проекта:

БезымянныйТеперь можно приступить непосредственно к программированию.

Вот код разметки 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="${relativePackage}.${activityClass}" >

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

</RelativeLayout>

Вот код главного класса MainActivity:


package com.rusdelphi.youtubeplayer;

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 {
	static private final String DEVELOPER_KEY = "Ваш код API KEY";
	static private final String VIDEO = "LCn0edNbA7Q";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
		youTubeView.initialize(DEVELOPER_KEY, this);
	}

	@Override
	public void onInitializationFailure(Provider provider,
			YouTubeInitializationResult error) {
		Toast.makeText(this, "Ѕлин!" + error.toString(), Toast.LENGTH_LONG)
				.show();
	}

	@Override
	public void onInitializationSuccess(Provider provider,
			YouTubePlayer player, boolean wasRestored) {
		player.loadVideo(VIDEO);
	}

}

Мы наследовали его от YouTubeBaseActivity. Если нужны фрагменты, то для них есть YouTubePlayerFragment.

В константе VIDEO указано id видео с сайта.

При создании мы создали слушателя YouTubePlayer.OnInitializedListener. Если инициализация плеера завершилась ошибкой, то мы увидим сообщение «Блин!….». На устройстве версии 2.2 он ругался на старую версию сервисов Google.

В манифесте приложения нужно разрешить доступ к интернету:

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

Весь код проекта вы можете скачать здесь.

Резюмируя данную тему, могу сказать, что лучше труд экономить и пользоваться чужими приложениями.

Но если нельзя, то пользуйтесь данным опытом.

Работа с компонентом YouTubePlayerView: 1 комментарий

  1. Марина

    Подскажите пожалуйста! Как сделать не одно видео, а несколько и желательно в recyclerview? Ну хотя бы ссылку — где это найти?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *