Ofline
По причине того, что встроенных средств проигрывания интернет потока не имеется, мы воспользуемся замечательной библиотекой BASS, для написания приложения для Android (для iOS следует использовать другие компоненты).
Для корректной работы библиотеки BASS я рекомендую так же установить компоненты DPF Android Native Components, я в своём примере буду использовать версию 2.8.6.
BASS
Идём на официальный сайт un4seen.com библиотеки, нажимаем в левом меню на ссылкуBASS и скачиваем там последнюю версию для Android. На момент написания данной статьи на сайте опубликована версия 2.4 от 13 марта 2015 года. Прямая ссылка на скачивание библиотеки с официального сайта. Ссылка на скачивание с моего сайта.
BASSFunctions
Для корректной работы с библиотекой, нам потребуется ещё один дополнительный файл, этоBASSFunctions.pas. Данный файл опубликовал на форуме пользователь с ником 3delite.Ссылка на оригинальный файл.
DPF Android Native Components
Для корректной работы библиотек BASS, часто требуется установка компонентов DPF Android Native Components, т. к. в их составе имеется компонент для работы с аудио, без которого компилятор будет просто выдавать ошибку.
Идём на официальный сайт и скачиваем последнюю версию компонентов. Или вы можете скачать версию 2.8.6 с моего сайта.
После того, как мы скачали все необходимые дополнительные файлы, приступаем к установке компонентов.
Начнём с DPF Android Native Components. Я рекомендую (во избежании дополнительных проблем с подключением) распаковать файлы в папку DPF.Android.Native.Components.v2.8.6 в корень диска C.
В каталоге с файлами, имеется файл Install.txt. У кого хорошо с английским, могут сделать всё по инструкции описанной в файле, для тех кто в школе учил немецкий, я опишу процесс установки компонентов подробно.
Запускаем Codegear RAD Studio. Далее в верхнем меню открываем Tools->Options->Delphi Options->Library.
В выпадающем списке справа выбираем платформу «32-bit Windows» и добавляем в раздел «Library path» путь к нашим компонентам.
Теперь то же самое проделываем для платформы «Android».
Теперь нам потребуется скомпилировать и установить компоненты. Для этого нажимаем File -> Open Project. Открываем проект из папки компонентов, соответствующий вашей среде программирования.
Далее нам надо скомпилировать проект и установить полученные компоненты.
Нажимаем правой кнопкой на проекте в инспекторе проекта и выбираем пункт «Build», начнётся построение проекта.
После завершение построение, опять нажимаем правой кнопкой на проекте в инспекторе и выбираем пункт «Install».
Компоненты готовы к работе. Приступим к созданию проекта.
Я набросал уже небольшой проект с парой кнопок для запуска и остановки проигрывателя и картинкой для привлечения внимания 🙂
Для работы в библиотекой BASS, нам потребуется в каталог с проектом добавить файл BASSFunctions.pas и указать его в разделе uses.
Теперь собственно сама библиотека libbass.so. Нам необходимо добавить данную библиотек в наш проект, иначе ничего не заработает.
Открываем архив bass24-android.zip и видим... Множество папок, нас интересует на данный момент только одна libs. Распаковываем её в каталог нашего проекта.
В каталоге libs, есть три подкаталога, нас интересуют 2 из них:
После того, как мы скопировали данный каталог в каталог проекта, снова возвращаемся к среде программирования и открываем раздел Deployment, для добавления наших библиотек в программу.
После того, как мы добавили библиотеки в наш проект, надо поменять параметр «Remote Path» для каждой библиотеки соответственно на «library\lib\armeabi» и на «library\lib\armeabi-v7a». Данную процедуру надо проделать для обеих конфигураций «Debug» и «Release».
Ну что, вот всё и готово к началу написания кода, а код на самом деле достаточно простой.
Объявляем глобальную переменную.
В момент создания формы инициализируем библиотеку.
На кнопку «Играть» вещаем обработчик:
Ну вот в общем самый простой и работающий пример создания проигрывателя интернет радиостанций.
Для корректной работы библиотеки BASS я рекомендую так же установить компоненты DPF Android Native Components, я в своём примере буду использовать версию 2.8.6.
BASS
Идём на официальный сайт un4seen.com библиотеки, нажимаем в левом меню на ссылкуBASS и скачиваем там последнюю версию для Android. На момент написания данной статьи на сайте опубликована версия 2.4 от 13 марта 2015 года. Прямая ссылка на скачивание библиотеки с официального сайта. Ссылка на скачивание с моего сайта.
BASSFunctions
Для корректной работы с библиотекой, нам потребуется ещё один дополнительный файл, этоBASSFunctions.pas. Данный файл опубликовал на форуме пользователь с ником 3delite.Ссылка на оригинальный файл.
DPF Android Native Components
Для корректной работы библиотек BASS, часто требуется установка компонентов DPF Android Native Components, т. к. в их составе имеется компонент для работы с аудио, без которого компилятор будет просто выдавать ошибку.
Идём на официальный сайт и скачиваем последнюю версию компонентов. Или вы можете скачать версию 2.8.6 с моего сайта.
После того, как мы скачали все необходимые дополнительные файлы, приступаем к установке компонентов.
Начнём с DPF Android Native Components. Я рекомендую (во избежании дополнительных проблем с подключением) распаковать файлы в папку DPF.Android.Native.Components.v2.8.6 в корень диска C.
В каталоге с файлами, имеется файл Install.txt. У кого хорошо с английским, могут сделать всё по инструкции описанной в файле, для тех кто в школе учил немецкий, я опишу процесс установки компонентов подробно.
Запускаем Codegear RAD Studio. Далее в верхнем меню открываем Tools->Options->Delphi Options->Library.
В выпадающем списке справа выбираем платформу «32-bit Windows» и добавляем в раздел «Library path» путь к нашим компонентам.
Теперь то же самое проделываем для платформы «Android».
Теперь нам потребуется скомпилировать и установить компоненты. Для этого нажимаем File -> Open Project. Открываем проект из папки компонентов, соответствующий вашей среде программирования.
Далее нам надо скомпилировать проект и установить полученные компоненты.
Нажимаем правой кнопкой на проекте в инспекторе проекта и выбираем пункт «Build», начнётся построение проекта.
После завершение построение, опять нажимаем правой кнопкой на проекте в инспекторе и выбираем пункт «Install».
Компоненты готовы к работе. Приступим к созданию проекта.
Я набросал уже небольшой проект с парой кнопок для запуска и остановки проигрывателя и картинкой для привлечения внимания 🙂
Для работы в библиотекой BASS, нам потребуется в каталог с проектом добавить файл BASSFunctions.pas и указать его в разделе uses.
Теперь собственно сама библиотека libbass.so. Нам необходимо добавить данную библиотек в наш проект, иначе ничего не заработает.
Открываем архив bass24-android.zip и видим... Множество папок, нас интересует на данный момент только одна libs. Распаковываем её в каталог нашего проекта.
В каталоге libs, есть три подкаталога, нас интересуют 2 из них:
- armeabi-v7a
- armeabi
После того, как мы скопировали данный каталог в каталог проекта, снова возвращаемся к среде программирования и открываем раздел Deployment, для добавления наших библиотек в программу.
После того, как мы добавили библиотеки в наш проект, надо поменять параметр «Remote Path» для каждой библиотеки соответственно на «library\lib\armeabi» и на «library\lib\armeabi-v7a». Данную процедуру надо проделать для обеих конфигураций «Debug» и «Release».
Ну что, вот всё и готово к началу написания кода, а код на самом деле достаточно простой.
Объявляем глобальную переменную.
Код:
var
uStream:HSTREAM;
В момент создания формы инициализируем библиотеку.
Код:
procedure TmainForm.FormCreate(Sender: TObject);
begin
// Загружаем и инициализируем библиотеку
Loadbass;
BASS_Init(-1,44100,0,Handle,nil);
end;
Код:
procedure TmainForm.mainToolbarBarItems1Click(Sender: TObject);
var
otStream : TStringStream;
Result : integer;
begin
try
// Включаем индикатор загрузки контента
ind1.Enabled := True;
ind1.Visible := True;
// Код проигрывателя
Result := 0;
// Закрываем старый поток
BASS_StreamFree(uStream);
// Создаём новый поток
uStream :=
BASS_StreamCreateURL(PChar('http://motochelyabinsk.ru:8000/play'),0,BASS_STREAM_STATUS or BASS_UNICODE,nil,nil);
// Включаем проигрывание
BASS_ChannelPlay(uStream, True);
// Получаем и выводим название текущего трека из скрипта на сайте
// Создаём поток UTF8
otStream := TStringStream.Create('', CP_UTF8);
// Делаем запрос к скрипту сайта
IdHTTP1.Get('motochelyabinsk.ru/current-track.php', otStream);
IdHTTP1.Disconnect;
// Записываем название трека в Label
Label1.Text := otStream.DataString;
// Очищаем переменную потока
otStream.Free;
// Запустить таймер отслеживания изменений названия трека
Timer1.Enabled := True;
// Включаем и отключаем кнопки
btn1.Enabled := False;
btn2.Enabled := True;
except on E: Exception do
begin
ShowMessage('Ошибка доступа к сети!');
end;
end;
end;