Ingalime Опубликовано 22 сентября, 2020 Поделиться Опубликовано 22 сентября, 2020 (изменено) Подскажите, пожалуйста, можно ли воспроизводить аудио поток в FMX, если известен статический адрес и порт -> IP:порт? Спасибо. Изменено 22 сентября, 2020 пользователем Ingalime Цитата Ссылка на комментарий
0 krapotkin Опубликовано 30 сентября, 2020 Поделиться Опубликовано 30 сентября, 2020 круто. Никогда не писал в поддержку! ))) Ingalime 1 Цитата Ссылка на комментарий
0 Ingalime Опубликовано 30 сентября, 2020 Автор Поделиться Опубликовано 30 сентября, 2020 I haven't tried that device myself, but I imagine it would include AAC support. For another test, can you try playing AAC files with the PLUGINS example that's included in the BASS package? You could also try this latest BASS build and see if it makes any difference: www.un4seen.com/stuff/bass-android-test.zip One change in this update (compared to the 2.4.15 release) is that it uses the native APIs rather than Java to access the Android codecs. Цитата Ссылка на комментарий
0 Ingalime Опубликовано 2 октября, 2020 Автор Поделиться Опубликовано 2 октября, 2020 С новыми SO файлами работает. Подскажите пожалуйста, я хочу проверить наличие интернета. Как на паскале правильно? Получаю два предупреждения... function CheckInet: boolean; var aResp: IHTTPResponse; aHTTP: THTTPClient; begin Result := false; aHTTP := THTTPClient.Create; try try aResp := aHTTP.Head('http://google.com'); Result := aResp.StatusCode < 400; except Result := false; end; finally FreeAndNil(aHTTP); end; end; procedure TForm1.Button1Click(Sender: TObject); var check :boolean; Begin check := false; check := CheckInet; If check <> True Then Begin ShowMessage('Нет интернет соединения.'); exit; End; [DCC Hint] UnitMain.pas(62): H2077 Value assigned to 'CheckInet' never used [DCC Hint] UnitMain.pas(89): H2077 Value assigned to 'check' never used Цитата Ссылка на комментарий
0 krapotkin Опубликовано 2 октября, 2020 Поделиться Опубликовано 2 октября, 2020 (изменено) в целом статус не нужен. он появляется от сервера. это значит инет есть. т.е. /// Result := aResp.StatusCode < 400; Result := true; и ниже достаточно check := CheckInet; If not check Then ... Изменено 2 октября, 2020 пользователем krapotkin Ingalime 1 Цитата Ссылка на комментарий
0 Ingalime Опубликовано 2 октября, 2020 Автор Поделиться Опубликовано 2 октября, 2020 Спасибо. Код работает как надо. Но странный хинт остался: [DCC Hint] UnitMain.pas(62): H2077 Value assigned to 'CheckInet' never used Цитата Ссылка на комментарий
0 krapotkin Опубликовано 2 октября, 2020 Поделиться Опубликовано 2 октября, 2020 begin Result := false; это вот это. там по-любому потом переписывается значение, поэтому она говорит, что строка лишняя Ingalime 1 Цитата Ссылка на комментарий
0 Ingalime Опубликовано 2 октября, 2020 Автор Поделиться Опубликовано 2 октября, 2020 Вообщем все работает как надо. Не работает установка звука из программы. Но можно регулировать звук кнопками на телефоне. procedure TForm1.TrackBar1Change(Sender: TObject); Begin BASS_SetVolume(TrackBar1.Value/100.0);//это не работает End; Цитата Ссылка на комментарий
0 krapotkin Опубликовано 2 октября, 2020 Поделиться Опубликовано 2 октября, 2020 но при этом звуком телефона из программы рулить можно) Ingalime 1 Цитата Ссылка на комментарий
0 Ingalime Опубликовано 4 октября, 2020 Автор Поделиться Опубликовано 4 октября, 2020 Если скачать хороший плеер из маркета, то он воспроизводить аудио и в свернутом виде и при выключенном экране на телефоне. Мой плеер при таком режиме воспроизводит звук только пару минут и останавливается. Как правильно поправить это, чтобы звук был и при таких обстоятельствах? Спасибо. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 4 октября, 2020 Поделиться Опубликовано 4 октября, 2020 насколько я понимаю, там целая система, состоящая из программы, сервиса и примочек, которые позволяют делать кнопки в нотификейшн Делфи это не осилит, надо идти в натив Ingalime 1 Цитата Ссылка на комментарий
0 Ingalime Опубликовано 4 октября, 2020 Автор Поделиться Опубликовано 4 октября, 2020 В моем андроид 8.1 эту настройку можно сделать вручную. Иду в Настройки далее Приложения. Выбираю свое приложение и далее Контроль активности ставлю Нет ограничений. Жаль, что Дельфи это не посилам... Цитата Ссылка на комментарий
0 Ingalime Опубликовано 4 октября, 2020 Автор Поделиться Опубликовано 4 октября, 2020 Надо попробовать разобраться в коде этого автора. Его плеер из маркета работает как надо. https://github.com/War3Evo/FMX.Radio Цитата Ссылка на комментарий
0 Ingalime Опубликовано 5 октября, 2020 Автор Поделиться Опубликовано 5 октября, 2020 Помогите, пожалуйста, откомпилировать этот проект: https://github.com/War3Evo/FMX.Radio Не соображу что я делаю не так. [DCC Error] plaStreamer.dpr(15): E2003 Undeclared identifier: 'AApplication' [DCC Error] plaStreamer.dpr(15): E2066 Missing operator or semicolon [DCC Error] plaStreamer.dpr(16): E2066 Missing operator or semicolon [DCC Error] plaStreamer.dpr(16): E2003 Undeclared identifier: 'TDM' [DCC Error] plaStreamer.dpr(17): E2066 Missing operator or semicolon [DCC Error] plaStreamer.dpr(18): E2066 Missing operator or semicolon [DCC Error] plaStreamer.dpr(19): E2066 Missing operator or semicolon [DCC Error] plaStreamer.dpr(20): E2003 Undeclared identifier: 'cation' Цитата Ссылка на комментарий
0 krapotkin Опубликовано 5 октября, 2020 Поделиться Опубликовано 5 октября, 2020 в оригинале нет такого слова AApplication посмотрите, что реально загрузилось обратите внимание, что delphi в 2021 все еще не умеет считать символы если перевод строки #10 а не #13#10 поэтому показывает на экране верно, а если что-то автоматически вставить, то промахивается я бы рекомендовал пересохранить ваши файлы с переводом строки #13#10 Ingalime и Евгений Корепов 1 1 Цитата Ссылка на комментарий
0 Ingalime Опубликовано 5 октября, 2020 Автор Поделиться Опубликовано 5 октября, 2020 32 минут назад, krapotkin сказал: посмотрите, что реально загрузилось Да загрузилась странность. Все поколечено почему-то... program plaStreamer; uses System.StartUpCopy, FMX.Forms, Unit1 in 'Unit1.pas' {Form1}, DW.Androidapi.JNI.LocalBroadcastManager in '..\KastriFree\API\DW.Androidapi.JNI.LocalBroadcastManager.pas', DW.MultiReceiver.Android in '..\KastriFree\Core\DW.MultiReceiver.Android.pas', Services.Radio.Service in '..\AndroidServicesRadio\Services.Radio.Service.pas' {DM: TAndroidService}; {$R *.res} begin Application.Initialize; AApplication.CreateForm(TDM, DM); pplication.FormFactor.Orientations := [TFormOrientation.Portrait]; AApplication.CreateForm(TForm1, Form1); AApplication.CreateForm(TDM, DM); AApplication.CreateForm(TDM, DM); AApplication.CreateForm(TDM, DM); AApplication.CreateForm(TDM, DM); cation.Run; end. Цитата Ссылка на комментарий
0 Ingalime Опубликовано 5 октября, 2020 Автор Поделиться Опубликовано 5 октября, 2020 Вручную поправила, вроде билд прошел нормально... Цитата Ссылка на комментарий
0 Ingalime Опубликовано 5 октября, 2020 Автор Поделиться Опубликовано 5 октября, 2020 (изменено) Откомпилировалось и запустилось на телефоне... И даже музыка играет. Не понятно почему при нажатии на кнопку пауза ошибка с SO файлами. Ведь это родные файлы из проекта. И если с этой ошибкой можно побороться попробовав обновить файлы SO, то еще и копирайт от автора на весь экран... Сейчас удалю и попробую обновить файлы SO. Изменено 5 октября, 2020 пользователем Ingalime Цитата Ссылка на комментарий
0 Ingalime Опубликовано 5 октября, 2020 Автор Поделиться Опубликовано 5 октября, 2020 Новые SO файлы не помогли. Приложение не отвечает. Но если бы все было бы нормально, то думаю, что возникло бы множество проблем при переводе этого проекта на Андроид 64 бит, поскольку маркет принимает только 64 бит, а этот проект 32 бит. Вывод один: с игрой музыки в фоне можно попрощаться. Цитата Ссылка на комментарий
0 OnePeople Опубликовано 5 октября, 2020 Поделиться Опубликовано 5 октября, 2020 58 минут назад, Ingalime сказал: Вывод один: с игрой музыки в фоне можно попрощаться. Создайте сервис в нем код из вашего приложения по запуску воспроизведения А в приложении, делайте отправку broadcast сообщений о старте или остановки проигрывания В этом радио так и сделано! И нотификейшен с кнопками тоже можно на делфи сделать! Ingalime 1 Цитата Ссылка на комментарий
0 Ingalime Опубликовано 5 октября, 2020 Автор Поделиться Опубликовано 5 октября, 2020 Можно небольшой пример как из приложения правильно послать broadcast сообщение службе? Спасибо. Цитата Ссылка на комментарий
0 Ingalime Опубликовано 5 октября, 2020 Автор Поделиться Опубликовано 5 октября, 2020 (изменено) Еще на форуме нашла цитату Ярослава, но примера к ней не нашла: Вообще можно напрямую вызывать методы сервиса. Так как они находятся в одной области памяти и имеют прямой доступ друг к другу. Для этого достаточно создать TLocalServiceConnection, установить связь с сервисом через BindService и получить прямой доступ к сервису через TLocalServiceConnection.LocalService Изменено 5 октября, 2020 пользователем Ingalime Цитата Ссылка на комментарий
0 Ingalime Опубликовано 6 октября, 2020 Автор Поделиться Опубликовано 6 октября, 2020 Подскажите, пожалуйста, правильно ли двигаюсь в создании сервиса? unit UnitSrvice; interface uses System.SysUtils, System.Classes, System.Android.Service, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Os, bass; type TDM = class(TAndroidService) function AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; function AndroidServiceBind(const Sender: TObject; const AnIntent: JIntent): JIBinder; function AndroidServiceUnBind(const Sender: TObject; const AnIntent: JIntent): Boolean; private { Private declarations } public { Public declarations } end; var DM: TDM; str: HSTREAM; implementation {%CLASSGROUP 'FMX.Controls.TControl'} {$R *.dfm} uses Androidapi.JNI.App; function TDM.AndroidServiceBind(const Sender: TObject; const AnIntent: JIntent): JIBinder; begin BASS_Init(-1, 44100, 0, nil, nil); //инициализация bass BASS_StreamFree(str); str := BASS_StreamCreateURL(PChar('http://91.199.194.34:8000'), 0, BASS_UNICODE, nil, nil); //ShowMessage(IntToStr(BASS_ErrorGetCode)); If BASS_ErrorGetCode = 0 Then Begin BASS_ChannelPlay(str, True); //начать воспроизведение End; Result := GetBinder; end; function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin Result := TJService.JavaClass.START_STICKY; end; function TDM.AndroidServiceUnBind(const Sender: TObject; const AnIntent: JIntent): Boolean; begin BASS_ChannelStop(str); //остановить воспроизведение BASS_StreamFree(str); JavaService.StopService(AnIntent); Result := False; end; end. Цитата Ссылка на комментарий
0 Ingalime Опубликовано 6 октября, 2020 Автор Поделиться Опубликовано 6 октября, 2020 Код приложения в который добавлен сервис. unit UnitMain; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Android.Service, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) ButtonPlay: TButton; ButtonStop: TButton; procedure ButtonPlayClick(Sender: TObject); procedure ButtonStopClick(Sender: TObject); private { Private declarations } FService: TLocalServiceConnection; public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.ButtonPlayClick(Sender: TObject); begin if FService = Nil Then Begin FService := TLocalServiceConnection.Create; FService.StartService('ServicPablicRadio'); end; FService.BindService('ServicPablicRadio', 0); end; procedure TForm1.ButtonStopClick(Sender: TObject); begin if FService <> Nil then begin FService.UnbindService; FService := Nil; end; end; end. Музыка заиграла. Но дебагер не работает (см.рис.). При переводе в фон, все равно музыка останавливаеться. Может надо что-то в манифесте добавить? Цитата Ссылка на комментарий
0 Ingalime Опубликовано 6 октября, 2020 Автор Поделиться Опубликовано 6 октября, 2020 Добавление в манифест: <service android:exported="true" android:name="com.embarcadero.services.ServicPablicRadio" /> тоже не помогло перестает играть музыка, если свернуть приложение и подождать минуту... Цитата Ссылка на комментарий
0 OnePeople Опубликовано 6 октября, 2020 Поделиться Опубликовано 6 октября, 2020 (изменено) С радостью бы помог, и скорее всего если не сможете сделать то помогу, но только ближе к ноябрю((( Только закончил с поисками и реализацией отловки AudioFocus, наконец то))))))))) У самого музыка пока не в сервисе, но я думаю как то так, без AndroidServiceUnBind function TCronysDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; Var Action: string; begin Action := JStringToString(Intent.getAction); if Action = 'StartService' then begin BASS_Init(-1, 44100, 0, nil, nil); //инициализация bass BASS_StreamFree(str); str := BASS_StreamCreateURL(PChar('http://91.199.194.34:8000'), 0, BASS_UNICODE, nil, nil); //ShowMessage(IntToStr(BASS_ErrorGetCode)); If BASS_ErrorGetCode = 0 Then Begin BASS_ChannelPlay(str, True); //начать воспроизведение End; end; if Action = 'StopService' then begin BASS_ChannelStop(str); //остановить воспроизведение BASS_StreamFree(str); JavaService.stopSelf; result := TJService.JavaClass.START_NOT_STICKY; // don't reload service exit; end; result := TJService.JavaClass.START_STICKY; // rerun service if host app stops end; запуск сервиса FService := TJIntent.Create; FService.setClassName(TAndroidHelper.Context.getPackageName(), TAndroidHelper.StringToJString('com.embarcadero.services.cronysrv')); FService.setAction(StringToJString('StartService')); TAndroidHelper.Activity.startService(FService); По вышему коду при убийстве приложения, убивается и сервис???? Это вопрос Изменено 6 октября, 2020 пользователем OnePeople Ingalime 1 Цитата Ссылка на комментарий
Вопрос
Ingalime
Подскажите, пожалуйста, можно ли воспроизводить аудио поток в FMX, если известен статический адрес и порт -> IP:порт?
Спасибо.
Изменено пользователем IngalimeСсылка на комментарий
Лучшие авторы в вопросе
12
11
48
5
Популярные дни
29 сент
16
23 окт
11
5 окт
9
2 окт
6
Лучшие авторы в вопросе
krapotkin 12 постов
OnePeople 11 постов
Ingalime 48 постов
Alexandr 5 постов
Популярные дни
29 сент 2020
16 постов
23 окт 2020
11 постов
5 окт 2020
9 постов
2 окт 2020
6 постов
Популярные посты
krapotkin
в оригинале нет такого слова AApplication посмотрите, что реально загрузилось обратите внимание, что delphi в 2021 все еще не умеет считать символы если перевод строки #10 а не #13#10
OnePeople
По поведению на различных прошивках я не могу вам ни чего сказать вообще не думаю что это связанно с версией андроида, а связанно с прошивкой вендора. Выдернул из рабочего проекта, строго не пина
Tumaso
А причем тут твой фаервол? Вопрос совсем о другом, о принципиальной возможности воспроизведения аудиопотока с указаного адреса/порта в FMX Стандартный TMediaPlayer из FMX полное убожесто, не раб
Изображения в теме
82 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.