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

Ingalime

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

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

  • Посещение

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

    5

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

  1. Здравствуйте. После добавления кода было много чего красным подчеркнуто. Помогло добавление в uses Androidapi.JNI.JavaTypes, Androidapi.JNIBridge, AndroidApi.JNI.Media

    Однако по прежнему пишет что не определен тип JHandler / TJHandler Что надо добавить?

    И такой вопрос: как реализовано  LogCAAdd и когда первый раз вызываем TForm1.GetAudioFocus;?

    Спасибо.

  2. Извините, не совсем понятно с потерей фокуса. Приложение имеет службу переднего фона. Приложение может быть свернуто, но музыка все равно будет играть. Так работают все плееры и мой также. При входящем звонке хочу остановить воспроизведение. Сейчас музыка продолжает играть при разговоре по телефону.

  3. И так не работает:

    procedure TForm1.MyOnCallStateChanged(const ACallID: String; const ACallState: TCallState);
    var outText: String;
     Begin
      case ACallState of
             TCallState.Incoming:
             Begin
                TThread.Queue(nil,
                 procedure
                  begin
                   OverflowMenu.Visible := False;
                   Text1.Text := 'Входящий звонок';
                   FloatAnimation1.Enabled := False;
                   Viewport3D1.Visible := False;
                   AniIndicator1.Enabled := FALSE;
                   AniIndicator1.Visible := FALSE;
                   BASS_ChannelStop(str);
                   BASS_StreamFree(str);
                  end
                );
             End;
         end;
    
     End;

    Расставляя текстовые метки для проверки выяснилось что при входящем звонке событие MyOnCallStateChanged не происходит. :(

  4. Здравствуйте. Мне надо при входящем звонке остановить музыку в плеере. Согласно документации получился такой код:

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Mobile_Tutorial:_Using_the_Phone_Dialer_on_Mobile_Devices_(iOS_and_Android)

    unit Unitcall;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Platform, FMX.PhoneDialer;
    
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
        PhoneDialerService: IFMXPhoneDialerService;
        procedure MyOnCallStateChanged(const ACallID: String; const ACallState: TCallState);
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    constructor TForm1.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(PhoneDialerService));
      if Assigned(PhoneDialerService) then
        PhoneDialerService.OnCallStateChanged := MyOnCallStateChanged;
    end;
    
    procedure TForm1.MyOnCallStateChanged(const ACallID: String; const ACallState: TCallState);
    var outText: String;
     Begin
      case ACallState of
             TCallState.Incoming:  Button2Click(self);//стоп play не отрабатывает
         end;
    
     End;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    
     OverflowMenu.Visible := False;
     Text1.Text := '';
     FloatAnimation1.Enabled := False;
     Viewport3D1.Visible := False;
     AniIndicator1.Enabled := FALSE;
     AniIndicator1.Visible := FALSE;
     BASS_ChannelStop(str);
     BASS_StreamFree(str);
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    Begin
    
     if not BASS_Init(-1, 44100, 0, nil, nil) Then Begin
    	   ShowMessage('Failed to initialize audio!' + sLineBreak + 'Не удалось инициализировать audio!');
         Exit;
         end;
    
    try
         if FService = Nil Then Begin
          FService := TLocalServiceConnection.Create;
          FService.StartService('serPublic');
          end;
      except
           Exit;
      end;
    
    //*******************************

    Ничего не происходит при входящем звонке. Дебагер с моим телефоном не работает. Разрешение READ_PHONE_STATE установлено.  RAD 10.4 Где ошибка?

    Спасибо.

     

     

  5. Здравствуйте. В консоль гугла загрузила файл aab App Bundle. Загрузка прошла успешно. Но как сделать эту версию рабочей в консоли?

    Согласно документации версию надо подписать в самой консоли:

    http://docwiki.embarcadero.com/RADStudio/Sydney/en/Submitting_Your_Android_App_to_Google_Play#Android_App_Bundle_Support

    Но внешний вид консоли изменился ничего подобного там нет. Документация по ссылке устарела.

    Всю консоль просмотрела, не нашла как сделать мой App Bundle рабочей версией.

    Ткните, пожалуйста, носом где это делается в нынешней консоли разработчика?

  6. Большое спасибо!

    Подскажите, пожалуйста, мои шаги следующие правильные?

    У меня в дереве проектов две версии приложения. Запускаю 32 бит версию. На телефоне появляется приложение и оно работает. Запускаю версию 64 бит на телефоне и рядом с приложением 32 бит появляется 64 битное и тоже работает.

    Далее создаю aab и отправляю в магазин.

    http://docwiki.embarcadero.com/RADStudio/Sydney/en/Submitting_Your_Android_App_to_Google_Play#Android_App_Bundle_Support

    Однако если aab содержит сервис то могут быть проблемы, информация отсюда, правда это было год назад:

    https://fire-monkey.ru/topic/2040-проблема-с-android-service/#comment-10875

    Как все таки правильно? Пробовать создать гибридный apk?

  7. Мои дополнительные шаги. Надо было подправить манифест для 32 бит. Там по дефолту добавлялись 5 опасных разрешений. Теперь манифест для 32 бит нормальный:

    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
        <uses-permission android:name="android.permission.INTERNET" />
    //********************
     <service android:exported="false" android:foregroundServiceType="mediaPlayback" android:name="com.embarcadero.services.serPublic" />

    Откомпилировала службу в режиме 32 бит и в деплоймент для 32 бит добавила пути как выше на рисунке. Вот такой теперь арк, но падает.

     

    PublicRadio.apk

  8. Сейчас так:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.embarcadero.PublicRadio/com.embarcadero.firemonkey.FMXNativeActivity}: java.lang.IllegalArgumentException: Unable to find native library PublicRadio using classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.embarcadero.PublicRadio-yXTvrVLFqprwZS5V63BhCQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.embarcadero.PublicRadio-yXTvrVLFqprwZS5V63BhCQ==/lib/arm64, /data/app/com.embarcadero.PublicRadio-yXTvrVLFqprwZS5V63BhCQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]]

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)

    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895)

    at android.app.ActivityThread.-wrap11(Unknown Source:0)

    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616)

    at android.os.Handler.dispatchMessage(Handler.java:106)

    at android.os.Looper.loop(Looper.java:176)

    at android.app.ActivityThread.main(ActivityThread.java:6651)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)

    Caused by: java.lang.IllegalArgumentException: Unable to find native library PublicRadio using classloader: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.embarcadero.PublicRadio-yXTvrVLFqprwZS5V63BhCQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.embarcadero.PublicRadio-yXTvrVLFqprwZS5V63BhCQ==/lib/arm64, /data/app/com.embarcadero.PublicRadio-yXTvrVLFqprwZS5V63BhCQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]]

    at android.app.NativeActivity.onCreate(NativeActivity.java:160)

    at com.embarcadero.firemonkey.FMXNativeActivity.onCreate(FMXNativeActivity.java:135)

    at android.app.Activity.performCreate(Activity.java:7088)

    at android.app.Activity.performCreate(Activity.java:7079)

    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)

    ... 9 more

    dep1.jpg

    dep2.jpg

  9. 11 часов назад, PowerOwl сказал:

    По всей видимости вы напрочь проигнорировали совет Андрея Ефимова,

    Я в предыдущем посте через символ -> указала содержимое lib пакета 32, как сказал Андрей.

    Вот содержимое всех папок APK 32 бит.

     

    32bit.jpg

  10. Цитата

    Перед тем как вы соберётесь выложить сюда собранный 32-битный apk, 

    Не могу я собрать 32 бит падает.
     

    Цитата

    Выше я уже написал, что будет внутри каждой папки для 32-битного apk

    -> стрелочка это содержимое файлов в пакете 32 бит.
    Папки наблюдаю arm64-v8a->libbass.so; armeabi->libPublicRadio.so; armeabi-v7a->libPublicRadio.so->libProxyAndroidService.so->libbass.so->gdbserver; mips->libPublicRadio.so

    Библиотеку BASS было скачено несколько месяцев назад. Решила скачать самую последнюю версию с официального сайта.
    Обнаружилось что папки armeabi вообще нет. Только паки arm64-v8a, armeabi-v7a, x86, x86_64.

    Добавлены рекомендации PowerOwl по добавлению в деплой не хватающих файлов.

    Единственная разница, что у файла в 32 битной версии service/Android64/Realise libserPublic.so тип File а в 64 битной версии тип файла AndroidServiceOutput

    32 битная версия падает.

     

    dep.jpg

  11. В опциях проекта студии поставила галочку true у
    Generate Android 32-bit and 64-bit binaries(armedi-7a + arm64-v8a)
    в режиме платформа Андроид 64 бит/релиз/Development
    На выходе получила этот АРК. На телефоне андроид 8.1 Readmi5A запустилось.
    .aab я так понимаю будет получен в режиме Configuration->Application Store

    PublicRadio.apk

  12. Что-то никак не могу осмыслить. Прошу прощения за тупость. :)
    Мне надо арк 64 бит для маркета.
    Мои шаги теперь:
    1. В деплоймент сейчас добавляем дополнительно libbass.so из папки armeabi.
    Это будет заглушка? 
    2. Имеем три libbass.so ВААS в деплойменте.
    3. Есть еще папки BAAS x86 и x86_64 но для них не понятно какой путь выбрать в Remote Path.
    Я так понимаю файлы libbass.so из этих папок добавлять в деплоймент не надо?
    4. Какие галочки надо установить для libnative-activity.so там и релиз есть и дебаг пути. Или поставить все пять галочек где пусто?
    Вот сейчас такой деплоймент на картинке:

     

    arm.jpg

  13. 18 минут назад, Andrey Efimov сказал:

    По какой причине вы сняли галочки с записей связанных с libnative-activity.so?

    Вроде это отвечает судя по папкам за 32 бит, которые я не использую. Компилировалась только 64 бит... Структура папок BASS:

     

     

    32.jpg

  14. Cкриншот деплоя 64 бит. 32 бит я не компилировала вообще.
    С дебагом у меня тоже были проблемы. Компилятор ембаркадеро упорно писал что не может распознать Readmi5A и отваливался.
    Компилировала в релизе с ShowMessage-ми в поисках ошибок. :)
    Если у кого есть терпение на скачивание то ссылка на весь проект: http://nsnllc.um.la/delphi821FMX.zip

    Проект у меня по пути C:\Users\Lena\Documents\Embarcadero\Studio\Projects\delphi82
    Хотелось бы по окончании дискуссии, чтобы на этом форуме кто-то из специалистов выложил статью как правильно создать службу переднего плана в дельфи.
    Служба весьма полезная, но централизованной информации нет и вообще все странно работает - в одних версиях нормально, в других падение.

     

    deploy.jpg

  15. 1 час назад, PowerOwl сказал:

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

    Там большие SO файлы библиотеки BASS, картинки. В ZIP архиве проект 280 Мг. Могу выложить на хостинг и дать ссылку, но вряд ли кто захочет такой размер скачать... Можно конечно уменьшить размер убрав какие-то временные файлы студии, но это моя первая программа на паскале, боюсь что-то удалять. :)

    P.S.

    А эмулятор не удалось запустить.

     

     

    pic1.jpg

  16. 1 час назад, Олег Киреев сказал:

    И в этой новой версии OS сообщает "В приложении произошёл сбой".

    Получается дело не в запуске сервиса, ведь запуск сервиса теперь в отдельной кнопке. Видимо что-то не так для этих версий андроида в манифесте...

  17. Здравствуйте.
    Для публикации в гугл магазине можно создать .aab файл:
    http://docwiki.embarcadero.com/RADStudio/Sydney/en/Submitting_Your_Android_App_to_Google_Play#Android_App_Bundle_Support
    До августа месяца гугл также принимает файлы .apk:
    http://docwiki.embarcadero.com/RADStudio/Sydney/en/Deploying_Your_Signed_Android_Application
    Пытаюсь получить .apk
    Ставлю таргет на Application Store далее Build All затем Deploy.
    На выходе получаю файл .aab в Android64\Release\PublicRadio\bin
    Стоит false должен получиться apk, но не получается. Где ошибка?

     

    store.jpg

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