(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
Enterprise Connectors (1 Year term)
IBM Rational Method Composer Authorized User License
Купить, скачать Dr.Web Security Space, 1 год, 1 ПК
GFI LanGuard подписка на 1 год (25-49 лицензий)
dbForge Studio for MySQL Professional license
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Программирование на Visual С++
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Разработка устройств на микроконтроллерах (32)
Профессиональный программист. Основная специализация: МИКРОКОНТРОЛЛЕРЫ, АССЕМБЛЕР для любых...
 
Написание программ для микроконтроллеров AVR, PIC, ARM, STM32 (16)
Напишу любую программу на любом искусственном языке. Профессиональный программист. Основная...
 
Ищем команду Java-разработчиков (5)
АО Тандер (сеть магазинов Магнит, крупнейший частный работодатель РФ) ищет команду...
 
Работа в интернете.. (3)
Может тут кто имеет опыт работы в сети? И подскажет мне что нить?
 
Кто, что знает за карту рассрочки Совесть? (1)
Иногда требуется купить что-то очень нужное, но выделить средства нет возможности. В этом случае...
 
 
 



    
rambler's top100 Rambler's Top100