<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>В наушниках по жизни: заметки с тегом KTeam</title>
<link>https://alexbirukov.ru/?go=tags/kteam/</link>
<description>Здесь я пишу свои идеи, мысли, описываю события своей жизни и просто делаю личные и рабочие заметки. «А Вы что, собираетесь жить вечно?»</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Здесь я пишу свои идеи, мысли, описываю события своей жизни и просто делаю личные и рабочие заметки. «А Вы что, собираетесь жить вечно?»</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Аудио-плеер на Delphi для Android с применением библиотеки BASS.</title>
<guid isPermaLink="false">316</guid>
<link>https://alexbirukov.ru/?go=all/udio-pleer-na-delphi-dlya-android-code-gear-rad-studio-xe7/</link>
<pubDate>Tue, 24 Mar 2015 09:48:04 +0500</pubDate>
<author></author>
<comments>https://alexbirukov.ru/?go=all/udio-pleer-na-delphi-dlya-android-code-gear-rad-studio-xe7/</comments>
<description>
&lt;p&gt;В середине прошлого года появилась необходимость написания простого приложения для мобильных платформ Android и iOS. Первым рабочим проектом стал &lt;a href="http://alexbirukov.ru/?go=tags/kteam/"&gt;KTeam&lt;/a&gt;. После его успешного запуска, появилась необходимость написания аудио-плеера, способного воспроизводить потоковое вещание интернет радиостанций.&lt;/p&gt;
&lt;p&gt;И так, сегодня я подробно опишу, как создать простой плеер потокового вещания.&lt;/p&gt;
&lt;p&gt;Для работы нам понадобятся среда программирования Code Gear RAD Studio XE7, работать я рекомендую именно в данной версии программы, т. к. в используемых библиотеках, имеются некоторые не стыковки в работе с предыдущими версиями.&lt;/p&gt;
&lt;p&gt;По причине того, что встроенных средств проигрывания интернет потока не имеется, мы воспользуемся замечательной библиотекой BASS, для написания приложения для Android (для iOS следует использовать другие компоненты).&lt;/p&gt;
&lt;p&gt;Для корректной работы библиотеки BASS я рекомендую так же установить компоненты &lt;a href="http://sourceforge.net/projects/dpfdelphiandroid/"&gt;DPF Android Native Components&lt;/a&gt;, я в своём примере буду использовать версию 2.8.6.&lt;/p&gt;
&lt;h2&gt;Начало&lt;/h2&gt;
&lt;p&gt;Ну я думаю процесс установки Code Gear RAD Studio XE7 описывать не стоит, поэтому сразу переходим к установке дополнительных компонентов и библиотек, потому что именно эта часть вызывает наибольшие проблемы, и именно поэтому данный этап я опишу наиболее подробно.&lt;/p&gt;
&lt;h2&gt;BASS&lt;/h2&gt;
&lt;p&gt;Идём на &lt;a href="http://www.un4seen.com"&gt;официальный сайт un4seen.com&lt;/a&gt; библиотеки, нажимаем в левом меню на ссылку &lt;a href="http://www.un4seen.com/bass.html"&gt;BASS&lt;/a&gt; и скачиваем там последнюю версию для &lt;a href="http://www.un4seen.com/forum/?topic=13225"&gt;Android&lt;/a&gt;. На момент написания данной статьи на сайте опубликована версия 2.4 от 13 марта 2015 года. &lt;a href="http://www.un4seen.com/stuff/bass24-android.zip"&gt;Прямая ссылка&lt;/a&gt; на скачивание библиотеки с официального сайта. &lt;a href="http://alexbirukov.ru/files/radio-andr/bass24-android.zip"&gt;Ссылка на скачивание с моего сайта&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1276" data-ratio="1.3632478632479"&gt;
&lt;img src="https://alexbirukov.ru/pictures/-2015-03-24-09.25.46.png" width="1276" height="936" alt="Сайт библиотеки BASS" /&gt;
&lt;img src="https://alexbirukov.ru/pictures/-2015-03-24-09.29.03.png" width="1274" height="959" alt="Ссылки на скачивание библиотек" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Примечание:&lt;/b&gt; я рекомендую использовать именно данную версию библиотеки, потому что предыдущие версии не работают с XE7, и при инициализации библиотеки появляется ошибка.&lt;/i&gt;&lt;/p&gt;
&lt;h2&gt;BASSFunctions&lt;/h2&gt;
&lt;p&gt;Для корректной работы с библиотекой, нам потребуется ещё один дополнительный файл, это &lt;a href="http://alexbirukov.ru/files/radio-andr/BASSFunctions.pas"&gt;BASSFunctions.pas&lt;/a&gt;. Данный файл опубликовал на форуме пользователь с ником 3delite.&lt;a href="http://www.3delite.hu/Object%20Pascal%20Developer%20Resources/Download/BASSFunctions.pas"&gt;Ссылка&lt;/a&gt; на оригинальный файл.&lt;/p&gt;
&lt;h2&gt;DPF Android Native Components&lt;/h2&gt;
&lt;p&gt;Для корректной работы библиотек BASS, часто требуется установка компонентов DPF Android Native Components, т. к. в их составе имеется компонент для работы с аудио, без которого компилятор будет просто выдавать ошибку.&lt;/p&gt;
&lt;p&gt;Идём на &lt;a href="http://sourceforge.net/projects/dpfdelphiandroid/"&gt;официальный сайт&lt;/a&gt; и скачиваем последнюю версию компонентов. Или вы можете скачать версию &lt;a href="http://alexbirukov.ru/files/radio-andr/DPF.Android.Native.Components.v2.8.6.zip"&gt;2.8.6&lt;/a&gt; с моего сайта.&lt;/p&gt;
&lt;h2&gt;Поехали&lt;/h2&gt;
&lt;p&gt;После того, как мы скачали все необходимые дополнительные файлы, приступаем к установке компонентов.&lt;/p&gt;
&lt;p&gt;Начнём с DPF Android Native Components. Я рекомендую (во избежании дополнительных проблем с подключением) распаковать файлы в папку DPF.Android.Native.Components.v2.8.6 в корень диска C.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-09-55-10.png" width="1280" height="1024" alt="Распаковываем файлы" /&gt;
&lt;/div&gt;
&lt;p&gt;В каталоге с файлами, имеется файл Install.txt. У кого хорошо с английским, могут сделать всё по инструкции описанной в файле, для тех кто в школе учил немецкий, я опишу процесс установки компонентов подробно.&lt;/p&gt;
&lt;p&gt;Запускаем Codegear RAD Studio. Далее в верхнем меню открываем Tools-&gt;Options-&gt;Delphi Options-&gt;Library.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1280" data-ratio="1.25"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-09-58-33.png" width="1280" height="1024" alt="" /&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-00-13.png" width="1280" height="1024" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;В выпадающем списке справа выбираем платформу «32-bit Windows» и добавляем в раздел «Library path» путь к нашим компонентам.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-04-06.png" width="1280" height="1024" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь то же самое проделываем для платформы «Android».&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-04-55.png" width="1280" height="1024" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь нам потребуется скомпилировать и установить компоненты. Для этого нажимаем File -&gt; Open Project. Открываем проект из папки компонентов, соответствующий вашей среде программирования.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1280" data-ratio="1.25"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-06-17.png" width="1280" height="1024" alt="Открываем проект" /&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-06-31.png" width="1280" height="1024" alt="DPFAndroidPackagesXE7.dproj" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Далее нам надо скомпилировать проект и установить полученные компоненты.&lt;/p&gt;
&lt;p&gt;Нажимаем правой кнопкой на проекте в инспекторе проекта и выбираем пункт &lt;b&gt;«Build»&lt;/b&gt;, начнётся построение проекта.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-13-23.png" width="1280" height="1024" alt="Выполняем Build" /&gt;
&lt;/div&gt;
&lt;p&gt;После завершение построение, опять нажимаем правой кнопкой на проекте в инспекторе и выбираем пункт &lt;b&gt;«Install»&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Компоненты готовы к работе. Приступим к созданию проекта.&lt;/p&gt;
&lt;p&gt;Я набросал уже небольшой проект с парой кнопок для запуска и остановки проигрывателя и картинкой для привлечения внимания :)&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-24-28.png" width="1280" height="1024" alt="Пробный проект." /&gt;
&lt;/div&gt;
&lt;p&gt;Для работы в библиотекой BASS, нам потребуется в каталог с проектом добавить файл BASSFunctions.pas и указать его в разделе &lt;b&gt;uses&lt;/b&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1280" data-ratio="1.25"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-21-50.png" width="1280" height="1024" alt="Добавляем файл BASSFunctions.pas." /&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-22-52.png" width="1280" height="1024" alt="Добавляем в раздел uses." /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь собственно сама библиотека &lt;b&gt;libbass.so&lt;/b&gt;. Нам необходимо добавить данную библиотек в наш проект, иначе ничего не заработает.&lt;/p&gt;
&lt;p&gt;Открываем архив bass24-android.zip и видим... Множество папок, нас интересует на данный момент только одна &lt;b&gt;libs&lt;/b&gt;. Распаковываем её в каталог нашего проекта.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/-2015-03-24-10.29.21.png" width="1273" height="993" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;В каталоге libs, есть три подкаталога, нас интересуют 2 из них:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;armeabi-v7a&lt;/li&gt;
&lt;li&gt;armeabi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В них находятся два разных файла libbass.so.&lt;/p&gt;
&lt;p&gt;После того, как мы скопировали данный каталог в каталог проекта, снова возвращаемся к среде программирования и открываем раздел &lt;b&gt;Deployment&lt;/b&gt;, для добавления наших библиотек в программу.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1280" data-ratio="1.25"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-36-12.png" width="1280" height="1024" alt="Deployment" /&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-37-49.png" width="1280" height="1024" alt="Добавляем библиотеки" /&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-38-56.png" width="1280" height="1024" alt="" /&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-39-15.png" width="1280" height="1024" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;После того, как мы добавили библиотеки в наш проект, надо поменять параметр «Remote Path» для каждой библиотеки соответственно на «&lt;b&gt;library\lib\armeabi&lt;/b&gt;» и на «&lt;b&gt;library\lib\armeabi-v7a&lt;/b&gt;». Данную процедуру надо проделать для обеих конфигураций «Debug» и «Release».&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1280" data-ratio="1.25"&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-43-47.png" width="1280" height="1024" alt="Библиотеки" /&gt;
&lt;img src="https://alexbirukov.ru/pictures/Windows-7-x64-Delphi-XE7-2015-03-24-10-42-46.png" width="1280" height="1024" alt="Конфигурации "Debug" и "Release"" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ну что, вот всё и готово к началу написания кода, а код на самом деле достаточно простой.&lt;/p&gt;
&lt;p&gt;Объявляем глобальную переменную.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;var
  uStream:HSTREAM;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В момент создания формы инициализируем библиотеку.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;procedure TmainForm.FormCreate(Sender: TObject);
begin
  // Загружаем и инициализируем библиотеку
  Loadbass;
  BASS_Init(-1,44100,0,Handle,nil);
end;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;На кнопку «Играть» вещаем обработчик:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;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;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ну вот в общем самый простой и работающий пример создания проигрывателя интернет радиостанций.&lt;br /&gt;
P.S. Чуть позже, выложу готовый пример данного приложения.&lt;/p&gt;
</description>
</item>

<item>
<title>KTeam и Motopeople</title>
<guid isPermaLink="false">312</guid>
<link>https://alexbirukov.ru/?go=all/kteam-i-motopeople/</link>
<pubDate>Mon, 06 Oct 2014 10:41:23 +0500</pubDate>
<author></author>
<comments>https://alexbirukov.ru/?go=all/kteam-i-motopeople/</comments>
<description>
&lt;p&gt;30 сентября 2014 в Челябинске проездом оказался организатор проекта &lt;a href="http://Motopeope.info"&gt;Motopeope.info&lt;/a&gt; &lt;a href="http://vk.com/tkachenko.kostya"&gt;Константин Ткаченко&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Константин в рамках рекламы своего проекта едет от Владивостока до Питера. В пути он уже сменил свой мотоцикл Gold Wing 1200 на аппарат попроще. Как рассказал Константин, главная цель мотопробега это встреча с представителями мотоообществ, встреча с мотоклубами, интервью, а так же изучение аналогичных локальных систем оповещения. Приятно было услышать, что Челябинск с проектом &lt;a href="http://vk.com/motochel74"&gt;KTeam&lt;/a&gt;, в плане систем оповещения мотоциклистов, значительно обогнал в развитии аналогичные системы.&lt;/p&gt;
&lt;p&gt;Небольшое &lt;a href="http://vipautochel.ru/text/art/850035.html"&gt;интервью&lt;/a&gt; от сайта &lt;a href="http://74.ru/"&gt;74.ru&lt;/a&gt;.&lt;/p&gt;
&lt;object type="application/x-shockwave-flash" data="http://media.rugion.ru/_img/multimedia/default/uppod.swf" width="640" height="400" id="player"&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="movie" value="http://media.rugion.ru/_img/multimedia/default/uppod.swf" /&gt;&lt;param name="FlashVars" value="v=1.7.3.2&amp;amp;st=c:lWYusx6mZ4F7lzQ6l4E0s3yms4dUVvajLSehs1gmIzdcV1aTLHYJRSe7I1F8LzbmR4e0Lva3P4agPtR7fjE2pvFGV1eNI1F8PtAr&amp;amp;quality=360p" /&gt;&lt;/object&gt;
&lt;p&gt;Спасибо Константину за приятную беседу и подробную демонстрацию проекта motopeople. Дурацкое фото прилагается :)&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/DSC9521.JPG" width="1024" height="683" alt="" /&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Мотосообщество и новые проекты</title>
<guid isPermaLink="false">310</guid>
<link>https://alexbirukov.ru/?go=all/motosoobschestvo-i-novye-proekty/</link>
<pubDate>Sun, 22 Jun 2014 20:20:29 +0500</pubDate>
<author></author>
<comments>https://alexbirukov.ru/?go=all/motosoobschestvo-i-novye-proekty/</comments>
<description>
&lt;p&gt;Как-то давно я не писал ничего в блог, видимо потому, что стало значительно меньше свободного времени и меньше времени для размышлений. Но тем не менее жизнь идёт своим чередом и за период времени с середины прошедшей зимы мы с группой единомышленников создали проект взамипомомощи среди мотоциклистов и назвали проект KTeam (сокращение от &lt;a href="http://vk.com/motochel74"&gt;Кировка Тим&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Сначала мы занялись проектированием платформы и &lt;a href="http://motochelyabinsk.ru/"&gt;сайтом&lt;/a&gt; для работы всей системы. Для начала мы сделали простенький сайт, целью которого на начальном этапе было — отображение заявок. Так же параллельно сайту появилась платформа для работы с поступающими заявками от различных мобильных платформ и СМС операторов. Изначально мы расчитывали на входящие СМС сообщения, но затем решили расширить проект и написать приложения для платформ iOS и Android. И хочется заметить, у нас всё получилось.&lt;/p&gt;
&lt;p&gt;И так 17 мая 2014 на открытии мотосезона состоялась презентация нашего небольшого, но крайне полезного проекта.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/4ld350kahse.jpg" width="573" height="807" alt="Приложение KTeam" /&gt;
&lt;/div&gt;
&lt;p&gt;Суть приложения и всей платформы проста — создать автоматизированную систему оповещения о происходящих происшествиях с участием мотоциклистов. Приложение примечательно тем, что может автоматически определять координаты местоположения аварии и создавать на их основании заявку. После чего все пользователи зарегистрированные в системе получают СМС уведомления с типом и адресом места происшествия.&lt;/p&gt;
&lt;p&gt;С момента запуска проекта прошло чуть больше месяца, но система оповещение уже успела зарекомендовать себя, как очень действенный инструмент моментального оповещения участников мотодвижения в городе Челябинске.&lt;/p&gt;
&lt;p&gt;Так же, с приходом тепла мы стали заниматься не только разработкой приложения и сайта, но и продумывать и организовывать различные социальные мероприятия. Недавно состоялась поездка в детский приют в пос. Солнечный. Хотелось бы сказать огромное СПАСИБО всем тем, кто откликнулся и помог финансово, морально и физически организовать столь замечательное мероприятие.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://alexbirukov.ru/pictures/logo_KT.png" width="869" height="870" alt="KTeam. Кировка. Челябинск. Мотосообщество." /&gt;
&lt;/div&gt;
&lt;p&gt;P.S. Ждите новых мероприятий и принимайте активное участие!&lt;/p&gt;
</description>
</item>


</channel>
</rss>