Вопрос по android-mediaplayer, android, youtube, android-intent – Воспроизведение видео на YouTube в приложении Android

8

В моем приложении для Android я бы хотел, чтобы пользователь один раз коснулся изображения, автоматически воспроизвел видео на YouTube, и когда видео закончится, пользователь сразу вернется в приложение.What's the best way to do this in Android?

Я пытался использовать намерения. Это работает в том смысле, что видео появляется на веб-странице YouTube. Однако для воспроизведения видео требуется еще одно нажатие. Я хотел бы избежать этого, если это возможно.

Я попробовал весь MediaPlayer, prepareAsync, setOnPreparedListener и никогда не заставлял его работать. По какой-то причине onPrepared никогда не вызывался. Исключений не было. Я использую эмулятор для тестирования, и я новичок в Android, поэтому я не уверен, будет ли поведение на физических устройствах другим.

Я хорошо работал на iOS, проявив творческий подход к веб-просмотрам. Я надеюсь, что это будет более простым на Android.документы Убедитесь, что это звучит прямо.

Ура!

Ваш Ответ

1   ответ
29

Update: Все ниже по-прежнему правильно, ноофициальный API YouTube для Android теперь доступно

Безусловно, самый простой способ воспроизвести видео YouTube на Android - это просто запустить Intent для запуска нативного Android-приложения YouTube. Конечно, это не удастся, если вы не находитесь на сертифицированном устройстве Google, которое не имеет дополнения к приложениям Google. (Kindle Fire, вероятно, самый большой пример такого устройства). Проблема с этим подходом состоит в том, что пользователь не будет автоматически возвращаться к вашему приложению, когда видео закончится; они должны нажать кнопку «Назад», и в этот момент вы, вероятно, потеряли их.

В качестве второго варианта вы можете использовать MediaPlayer API для воспроизведения видео на YouTube. Но есть три предостережения с этим подходом:

1) Вам необходимо позвонить в API веб-службы GData YouTube, передав ему идентификатор видео. Вы получите тонну метаданных вместе с URL-адресом RTSP, который вы должны передать MediaPlayer для воспроизведения потока в кодировке H.264. Это, вероятно, причина, по которой ваша попытка использовать MediaPlayer не удалась; Вы, вероятно, не использовали правильный URL для потоковой передачи.

2) Подход GData / MediaPlayer будет воспроизводить только контент с низким разрешением (176x144 или аналогичный). Это преднамеренное решение со стороны YouTube, чтобы предотвратить кражу контента. Конечно, это не обеспечивает очень удовлетворительного опыта. Существуют второстепенные хаки для получения потоков с более высоким разрешением, но они не поддерживаются во всех выпусках Android, и их использование является нарушением условий обслуживания YouTube.

3) Потоки RTSP могут быть заблокированы некоторыми внутренними сетями / брандмауэрами, поэтому этот подход может работать не для всех пользователей.

Третий вариант - встроить WebView в ваше приложение. Здесь есть два подхода:

1) Вы можете встроить Flash-объект и запустить стандартный настольный Flash-плеер для YouTube. Вы даже можете использовать API Javascript для управления плеером и передачи событий обратно в собственное приложение Android. Этот подход работает хорошо, но, к сожалению, Flash устарел на платформе Android и не будет работать для Android 4.1 и более поздних версий.

2) Вы можете вставить<video> тег для воспроизведения YouTube через HTML5. Поддержка этого варьируется в зависимости от версии Android. Хорошо работает на Android 4.0 и более поздних версиях; более ранние выпуски имеют несколько пятнистый HTML5<video> служба поддержки. Таким образом, в зависимости от того, какие выпуски Android должно поддерживать ваше приложение, вы можете использовать гибридный подход для встраивания HTML5 в Android 4.x или более поздней версии и Flash для всех более ранних версий Android.

Здесь, в StackOverflow, есть несколько тем об использовании HTML5 для воспроизведения видео на YouTube; Ни один из них не описывает весь процесс, которым вы должны следовать в одном месте. Вот ссылки на некоторые из них:

Android - Как воспроизвести видео с YouTube в WebView?

Как встроить клип YouTube в WebView на Android

Воспроизведение YouTube HTML5 встроенного видео в Android WebView

Все это станет значительно легче в ближайшие недели / месяцы; на Google I / O 2012 они представили / продемонстрировали новый API YouTube для Android, который будет поддерживать прямое встраивание контента YouTube в ваше приложение, с полной поддержкой вплоть до Android 2.2 (около 95% базы пользователей Android на момент написания статьи). Он не может прибыть достаточно быстро.

Я заинтересован в указаниях на те взломы, которые вы упоминаете. И я хотел бы добавить, что некоторые устройства не могут видеть загрузку Adobe Flash в Google Play, что фактически разрушает гибридную стратегию, основанную на использовании Flash-плеера YouTube для Froyo, Gingerbread, Honeycomb.
@SundayMonday - вот видео сессии, где Google представляет свой новый API YouTube:youtube.com/…
Предстоящий API звучит великолепно! Спасибо за информацию. SundayMonday
@Giuilo - в нашем приложении мы используем API GData / MediaPlayer, если Flash отсутствует. Это лучше, чем черный экран.
@Giulio - здесь код, который демонстрирует «черный ход» взломать:keyeslabs.com/joomla/blogs/i-think-im-becoming-an-android/…  Он использует подход API GData / MediaPlayer и является хорошим примером кода для этой техники. Задним аспектом является то, что он захватывает код формата 18, который является URL-адресом для версии потока с более высоким разрешением. Я думаю, что проблема с этим подходом, когда я в последний раз пробовал его (давным-давно), заключалась в том, что он работал на Android 2.1 и сломался на Android 2.2. Ваш пробег может варьироваться сегодня.

Похожие вопросы