(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Delphi XE7: воспроизведение потокового аудио в Android

Источник: webdelphi.ru

На сегодняшний день в составе FMX (FireMonkey) имеются компоненты для воспроизведения аудио- и видео- файлов - это TMediaPlayer и TMediaPlayerControl. Компоненты вполне прекрасно работают с локальными файлами, расположенными на устройстве. Однако в век облачных хранилищ и всяческого рода онлайн-сервисов с легальной музычкой было бы неплохо, если бы можно было проигрывать музыку непосредственно из Сети. По некоторым, не зависящим от нас причинам, TMediaPlayer таковые действия проводить не может. Поэтому я решил посмотреть как это в Android, в принципе, можно воспроизвести потоковое аудио и воспроизвести эти действия в Delphi XE7.

Итак, смотрим, как можно относительно просто реализовать воспроизведение потокового аудио в Delphi XE7 при работе с Android.

В Android за воспроизведение медиафайлов отвечает MediaPlayer. Этот объект имеет достаточно большие возможности работы с аудио и видео, в т.ч. позволяет подготавливать плеер к воспроизведению как синхронно, так и асинхронно, воспроизводить потоковое аудио и видео и, конечно, такие обязательные для любого медиаплеера функции как перемотка, регулировка громкости и т.д. Собственно, в Delphi при работе с Android этот объект и используется, просто не все его возможности можно реализовать так, чтобы сохранить единообразную работу и в Android и в iOS с Windows. Но нам, никто не запрещает отказаться от TMediaPlayer и работать напрямую с MediaPlayer андроида.

Для начала воспроизведем mp3-файл с заданного URL. На Stackoverflow имеется вот такой простенький примерчик:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(URL_OF_FILE);
mp.prepare();
mp.start();

В Delphi XE7 этот же пример можно представить в следующим виде:

uses ...Androidapi.JNI.Media, Androidapi.Helpers;
...
begin
Player:=TJMediaPlayer.Create;
Player.setDataSource(StringToJString('URL_MP3_ФАЙЛА'));
Player.prepare; Player.Start() end;

MP3-файл прекрасно будет проигрываться из Сети. Однако, довольно часто, для воспроизведения потокового аудио нам требуется получать доступ, например, по тому же OAuth и, впоследствии, передавать в заголовках запроса данные доступа. Как в итоге оказалось, что MediaPlayer в Android и с такой задачей справляется прекрасно. У этого объекта в Android имеется следующая версия метода setDataSource:

public void setDataSource (Context context, Uri uri, Map<String, String> headers)

или, на Delphi:

procedure setDataSource(context: JContext; uri: Jnet_Uri; headers: JMap); cdecl; overload;

В параметре headers мы можем указывать любые заголовки запроса, которые нам необходимо передать на сервер перед запросом файла, в том числе и заголовки авторизации. Итак, представим себе, что мы получили доступ по OAuth к серверу (у нас имеется ключ доступа) и нам необходимо воспроизвести с сервера mp3-файл.
Сделать это можно не намного сложнее, чем в предыдущем примере:

var O: JHashMap;
M: JMap;
...
O:=TJHashMap.Create;
O.put(StringToJString('Authorization'),StringToJString('Bearer ТУТ_TOKEN_ДОСТУПА'));
M:=TJMap.Wrap((O as ILocalObject).GetObjectID);
Player:=TJMediaPlayer.Create; Player.setDataSource(SharedActivityContext, StrToJURI('URL_MP3_ФАЙЛА'), M);
Player.prepare; //или Player.prepareAsync

Вот так, довольно просто можно сделать из простого плеера плеер для воспроизведения потокового аудио в Delphi.

Интернет-магазин


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Embarcadero »
Написать редактору 
 Рекомендовать » Дата публикации: 15.12.2014 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM Rational Functional Tester Floating User License
Stimulsoft Reports Server Team 10 users
GFI LanGuard подписка на 1 год (25-49 лицензий)
Pinnacle Studio 21 Plus. Электронный ключ.
Advanced Data Export VCL Suite (with sources) + 1 Year Maintenance
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
Краткие описания программ и ссылки на них
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Пишу программы на заказ профессионально (2412)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Пишу программы на заказ для студентов (192)
Пишу для студентов на с, с++, паскаль в средах ms visual studio, qt, builder, borland c, delphi....
 
Excell не печатает :-( (2)
Почему то Excell не печатает страницы в альбомной ориентаций, то есть страница в аольбомной...
 
Пишу программы на заказ (1)
Пишу на языках C#, VB.NET, VBA с использованием WPF, WCF, SQL.
 
Программист для удалённой работы (ASP.NET MVC, C#, MSSQL, AJAX) (2)
предлагаю услуги по разработке web-приложений с использованием таких технологий, как: ASP.NET...
 
 
 



    
rambler's top100 Rambler's Top100