Перейти к содержанию
Fire Monkey от А до Я

Ingalime

Пользователи
  • Постов

    354
  • Зарегистрирован

  • Посещение

  • Победитель дней

    5

Весь контент Ingalime

  1. Ingalime

    Android Services

    Тут говорят, что сервер должен быть Remote. Это кажется логичным. Не понятно как же у автора видео работает локальный сервер: https://stackoverflow.com/questions/40692546/android-service-doesnt-work-when-i-close-app
  2. При создании такого сервиса какой наиболее правильный вариант выбрать? Intent Local, Intent Remote? Сервис как и приложение должно быть Андроид 64? Хотелось бы как у правильных плееров, при свернутом приложении или блокированном экране - музыка играла. При выгруженном пользователем приложения из памяти, музыка прекращала воспроизведение. P.S. А вообще выяснилось, что и пустая служба без музыки у меня убивается. В чем причина не понятно: http://fire-monkey.ru/topic/6863-android-services/#comment-39981
  3. Ingalime

    Android Services

    Добрый день. Пытаюсь по этому короткому видео от эмбаркадеро воспроизвести пример применения Android Services: https://www.youtube.com/watch?v=eZzMBHNoj4o На 6.30 времени видео автор показывает, что если выгрузить приложение, то сервис его перезапускает. После запуска своего приложения Андрод 64 бит, я у себя вижу, что у меня написано в запущенных приложениях, что у моего приложения запущены и приложение и его сервис. Перекрываю окно запущенного приложения другим окном и спустя пару минут вижу вижу, что надпись меняется на "Нет активных служб". Т.е. умирает и сервис и приложение. В чем может быть проблема? Телефон Readmi 5A Андроид 8.1 MIUI 11.0.2 RAD 10.3.3 Код прописан: function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin Result := TJService.JavaClass.START_STICKY; end;
  4. Он хотел иметь сортировку по разным колонкам, фильтры... Отчеты за квартал и прочее. Бред конечно. Но отправка базы, решила вопросы. Пусть себе и бухгалтеру морочит голову...
  5. Смотря для какой задачи. Утром работник приходит на работу и подносит телефон к устройству ibecon. Программа заносит в базу дату и время прихода на работу. Вечером работник уходит с работы и подносит телефон к устройству ibecon. В базу заноситься время ухода. В субботу работник отправляет базу по почте хозяину бизнеса и тот начисляет зарплату. Удобно для малого бизнеса. Никаких серверов и прочего. Работает.
  6. Что касаеться первой части вопроса... Когда-то давно, в своей программе с помощью Indy просто отправляля с андроида файл базы данных себе на почту. Там с помощью менеджера sqllite на компьютере работала с этим файлом. Если централизованный email не подходит, добавить поле ввода чтобы пользователь вводил нужный email адрес.
  7. Добавление в манифест: <service android:exported="true" android:name="com.embarcadero.services.ServicPablicRadio" /> тоже не помогло перестает играть музыка, если свернуть приложение и подождать минуту...
  8. Код приложения в который добавлен сервис. 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. Музыка заиграла. Но дебагер не работает (см.рис.). При переводе в фон, все равно музыка останавливаеться. Может надо что-то в манифесте добавить?
  9. Подскажите, пожалуйста, правильно ли двигаюсь в создании сервиса? 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.
  10. Еще на форуме нашла цитату Ярослава, но примера к ней не нашла: Вообще можно напрямую вызывать методы сервиса. Так как они находятся в одной области памяти и имеют прямой доступ друг к другу. Для этого достаточно создать TLocalServiceConnection, установить связь с сервисом через BindService и получить прямой доступ к сервису через TLocalServiceConnection.LocalService
  11. Можно небольшой пример как из приложения правильно послать broadcast сообщение службе? Спасибо.
  12. Новые SO файлы не помогли. Приложение не отвечает. Но если бы все было бы нормально, то думаю, что возникло бы множество проблем при переводе этого проекта на Андроид 64 бит, поскольку маркет принимает только 64 бит, а этот проект 32 бит. Вывод один: с игрой музыки в фоне можно попрощаться.?
  13. Откомпилировалось и запустилось на телефоне... И даже музыка играет. Не понятно почему при нажатии на кнопку пауза ошибка с SO файлами. Ведь это родные файлы из проекта. И если с этой ошибкой можно побороться попробовав обновить файлы SO, то еще и копирайт от автора на весь экран... Сейчас удалю и попробую обновить файлы SO.
  14. Вручную поправила, вроде билд прошел нормально...
  15. Да загрузилась странность. Все поколечено почему-то... 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.
  16. Помогите, пожалуйста, откомпилировать этот проект: 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'
  17. Надо попробовать разобраться в коде этого автора. Его плеер из маркета работает как надо. https://github.com/War3Evo/FMX.Radio
  18. В моем андроид 8.1 эту настройку можно сделать вручную. Иду в Настройки далее Приложения. Выбираю свое приложение и далее Контроль активности ставлю Нет ограничений. Жаль, что Дельфи это не посилам...
  19. Если скачать хороший плеер из маркета, то он воспроизводить аудио и в свернутом виде и при выключенном экране на телефоне. Мой плеер при таком режиме воспроизводит звук только пару минут и останавливается. Как правильно поправить это, чтобы звук был и при таких обстоятельствах? Спасибо.
  20. Вообщем все работает как надо. Не работает установка звука из программы. Но можно регулировать звук кнопками на телефоне. procedure TForm1.TrackBar1Change(Sender: TObject); Begin BASS_SetVolume(TrackBar1.Value/100.0);//это не работает End;
  21. Спасибо. Код работает как надо. Но странный хинт остался: [DCC Hint] UnitMain.pas(62): H2077 Value assigned to 'CheckInet' never used
  22. С новыми 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
  23. 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.
  24. Ответ из тех.поддержки BASS. Как реализовать в проекте дельфи, по шагам, то о чем они пишут (Я использую Readmi 5A MUI Global 11.0.21 Android 8.1.0 OPM1.171019.026)?: Error code 41 is BASS_ERROR_FILEFORM, which means the file format wasn't recognised/supported. The URL in the code above is AAC/ADTS, which is usually supported as standard (without add-ons) on Android. What device are you testing on? If it doesn't include AAC support, you can try adding the BASS_AAC add-on to your app: www.un4seen.com/stuff/bass_aac-android.zipLoad it via BASS_PluginLoad, like this: Code: [Select] BASS.BASS_PluginLoad("libbass_aac.so", 0);
  25. Автор библиотеки Indy высказал предположение почему работает в Windows и не работает в Андроид: Что-то связано с User-Agent. Пока не разобралась...
×
×
  • Создать...