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

Ingalime

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

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

  • Посещение

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

    5

Сообщения, опубликованные Ingalime

  1. При создании такого сервиса какой наиболее правильный вариант выбрать? Intent Local, Intent Remote? Сервис как и приложение должно быть Андроид 64?

    Хотелось бы как у правильных плееров, при свернутом приложении или блокированном экране - музыка играла. При выгруженном пользователем приложения из памяти, музыка прекращала воспроизведение.

    P.S.

    А вообще выяснилось, что и пустая служба без музыки у меня убивается. В чем причина не понятно:

    http://fire-monkey.ru/topic/6863-android-services/#comment-39981

     

    int.JPG

  2. Добрый день.

    Пытаюсь по этому короткому видео от эмбаркадеро воспроизвести пример применения 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;

     

  3. Он хотел иметь сортировку по разным колонкам, фильтры... Отчеты за квартал и прочее. Бред конечно. Но отправка базы, решила вопросы. Пусть себе и бухгалтеру морочит голову...

  4. 7 часов назад, krapotkin сказал:

    вариант с почтой очень экзотический

    Смотря для какой задачи. Утром работник приходит на работу и подносит телефон к устройству ibecon. Программа заносит в базу дату и время прихода на работу. Вечером работник уходит с работы и подносит телефон к устройству ibecon. В базу заноситься время ухода. В субботу работник отправляет базу по почте хозяину бизнеса и тот начисляет зарплату. Удобно для малого бизнеса. Никаких серверов и прочего. Работает.

  5. Что касаеться первой части вопроса... Когда-то давно, в своей программе с помощью Indy просто отправляля с андроида файл базы данных себе на почту. Там с помощью менеджера sqllite на компьютере работала с этим файлом.

    Если централизованный email не подходит, добавить поле ввода чтобы пользователь вводил нужный email адрес.

  6. Код приложения в который добавлен сервис.

    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.

    Музыка заиграла. Но дебагер не работает (см.рис.). При переводе в фон, все равно музыка останавливаеться. Может надо что-то в манифесте добавить?

    debug.JPG

  7. Подскажите, пожалуйста, правильно ли двигаюсь в создании сервиса?

    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.

     

  8. Еще на форуме нашла цитату Ярослава, но примера к ней не нашла:

    Вообще можно напрямую вызывать методы сервиса. Так как они находятся в одной области памяти и имеют прямой доступ друг к другу. Для этого достаточно создать TLocalServiceConnection, установить связь с сервисом через BindService и получить прямой доступ к сервису через TLocalServiceConnection.LocalService

  9. Новые SO файлы не помогли. Приложение не отвечает. Но если бы все было бы нормально, то думаю, что возникло бы множество проблем при переводе этого проекта на Андроид 64 бит, поскольку маркет принимает только 64 бит, а этот проект 32 бит. Вывод один: с игрой музыки в фоне можно попрощаться.?

  10. Откомпилировалось и запустилось на телефоне...

    И даже музыка играет. Не понятно почему при нажатии на кнопку пауза ошибка с SO файлами. Ведь это родные файлы из проекта. И если с этой ошибкой можно побороться попробовав обновить файлы SO, то еще и копирайт от автора на весь экран... Сейчас удалю и попробую обновить файлы SO.

     

    print.jpg

  11. 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.

     

  12. Помогите, пожалуйста, откомпилировать этот проект: 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'

     

  13. Если скачать хороший плеер из маркета, то он воспроизводить аудио и в свернутом виде  и при выключенном экране на телефоне. Мой плеер при таком режиме воспроизводит звук только пару минут и останавливается. Как правильно поправить это, чтобы звук был и при таких обстоятельствах? Спасибо.

  14. С новыми 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

  15. 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.
     
  16. Ответ из тех.поддержки 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.zip

    Load it via BASS_PluginLoad, like this:
     

    Code: [Select]

    BASS.BASS_PluginLoad("libbass_aac.so", 0);

  17. Автор библиотеки Indy высказал предположение почему работает в Windows и не работает в Андроид:

    Цитата

     In my case, when I request http://91.199.194.34:8000/ in a web browser on Windows, I get an HTTP redirect to an HTML status page, so perhaps the HTTP server is looking at the request's "User-Agent" header to deliver different data depending on what kind of client is requesting it?  What does BASS's default "User-Agent" actually look like on Windows vs Android? You can use BASS_GetConfigPtr(BASS_CONFIG_NET_AGENT) to retrieve it.   You MIGHT need to use BASS_SetConfigPtr(BASS_CONFIG_NET_AGENT) to change it for your Android app.

    Что-то связано с User-Agent. Пока не разобралась...

×
×
  • Создать...