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

Ingalime

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

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

  • Посещение

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

    5

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

  1. Подскажите, пожалуйста, не будет ли утечки памяти, если пользователь несколько раз подряд нажмёт кнопку воспроизведения?
  2. Здравствуйте. После добавления кода было много чего красным подчеркнуто. Помогло добавление в uses Androidapi.JNI.JavaTypes, Androidapi.JNIBridge, AndroidApi.JNI.Media Однако по прежнему пишет что не определен тип JHandler / TJHandler Что надо добавить? И такой вопрос: как реализовано LogCAAdd и когда первый раз вызываем TForm1.GetAudioFocus;? Спасибо.
  3. Извините, не совсем понятно с потерей фокуса. Приложение имеет службу переднего фона. Приложение может быть свернуто, но музыка все равно будет играть. Так работают все плееры и мой также. При входящем звонке хочу остановить воспроизведение. Сейчас музыка продолжает играть при разговоре по телефону.
  4. И так не работает: 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 не происходит.
  5. Ingalime

    [Android]Входящий звонок

    Здравствуйте. Мне надо при входящем звонке остановить музыку в плеере. Согласно документации получился такой код: 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 Где ошибка? Спасибо.
  6. Получилось. Надо было кнопкой изменить рабочую версию, а я просто загрузила.
  7. Здравствуйте. В консоль гугла загрузила файл aab App Bundle. Загрузка прошла успешно. Но как сделать эту версию рабочей в консоли? Согласно документации версию надо подписать в самой консоли: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Submitting_Your_Android_App_to_Google_Play#Android_App_Bundle_Support Но внешний вид консоли изменился ничего подобного там нет. Документация по ссылке устарела. Всю консоль просмотрела, не нашла как сделать мой App Bundle рабочей версией. Ткните, пожалуйста, носом где это делается в нынешней консоли разработчика?
  8. Большое спасибо! Подскажите, пожалуйста, мои шаги следующие правильные? У меня в дереве проектов две версии приложения. Запускаю 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?
  9. Вот получился 32 бит. Вроде как работает. На моем телефоне запустился. PublicRadio.apk
  10. Мои дополнительные шаги. Надо было подправить манифест для 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
  11. Сейчас так: 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
  12. Я в предыдущем посте через символ -> указала содержимое lib пакета 32, как сказал Андрей. Вот содержимое всех папок APK 32 бит.
  13. Не могу я собрать 32 бит падает. -> стрелочка это содержимое файлов в пакете 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 битная версия падает.
  14. Прописала принудительно через Copy->Paste library\lib\armeabi-v7a\ для 32 бит. Теперь так получила такой арк: PublicRadio.apk
  15. В опциях проекта студии поставила галочку true у Generate Android 32-bit and 64-bit binaries(armedi-7a + arm64-v8a) в режиме платформа Андроид 64 бит/релиз/Development На выходе получила этот АРК. На телефоне андроид 8.1 Readmi5A запустилось. .aab я так понимаю будет получен в режиме Configuration->Application Store PublicRadio.apk
  16. Для 32 бит я не могу указать armeabi-v7a, в Remote Path нет правильного пути. Я не могу собрать 32 бит. Приложение падает. Embarcadero® RAD Studio 10.4 Version 27.0.40680.4203
  17. Что-то никак не могу осмыслить. Прошу прощения за тупость. Мне надо арк 64 бит для маркета. Мои шаги теперь: 1. В деплоймент сейчас добавляем дополнительно libbass.so из папки armeabi. Это будет заглушка? 2. Имеем три libbass.so ВААS в деплойменте. 3. Есть еще папки BAAS x86 и x86_64 но для них не понятно какой путь выбрать в Remote Path. Я так понимаю файлы libbass.so из этих папок добавлять в деплоймент не надо? 4. Какие галочки надо установить для libnative-activity.so там и релиз есть и дебаг пути. Или поставить все пять галочек где пусто? Вот сейчас такой деплоймент на картинке:
  18. Вроде это отвечает судя по папкам за 32 бит, которые я не использую. Компилировалась только 64 бит... Структура папок BASS:
  19. Как то странно работает ссылка на проект на форуме. Если скопировать в новую вкладку браузера то все нормально.
  20. Cкриншот деплоя 64 бит. 32 бит я не компилировала вообще. С дебагом у меня тоже были проблемы. Компилятор ембаркадеро упорно писал что не может распознать Readmi5A и отваливался. Компилировала в релизе с ShowMessage-ми в поисках ошибок. Если у кого есть терпение на скачивание то ссылка на весь проект: http://nsnllc.um.la/delphi821FMX.zip Проект у меня по пути C:\Users\Lena\Documents\Embarcadero\Studio\Projects\delphi82 Хотелось бы по окончании дискуссии, чтобы на этом форуме кто-то из специалистов выложил статью как правильно создать службу переднего плана в дельфи. Служба весьма полезная, но централизованной информации нет и вообще все странно работает - в одних версиях нормально, в других падение.
  21. Там большие SO файлы библиотеки BASS, картинки. В ZIP архиве проект 280 Мг. Могу выложить на хостинг и дать ссылку, но вряд ли кто захочет такой размер скачать... Можно конечно уменьшить размер убрав какие-то временные файлы студии, но это моя первая программа на паскале, боюсь что-то удалять. P.S. А эмулятор не удалось запустить.
  22. Получается дело не в запуске сервиса, ведь запуск сервиса теперь в отдельной кнопке. Видимо что-то не так для этих версий андроида в манифесте...
  23. Здравствуйте. Для публикации в гугл магазине можно создать .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, но не получается. Где ошибка?
  24. Подскажите, пожалуйста, как запустить утилиту создания эмулятора. В предыдущих версиях это было в меню Пуск. В 10.4 там ее нет.
×
×
  • Создать...