Ingalime
-
Постов
354 -
Зарегистрирован
-
Посещение
-
Победитель дней
5
Сообщения, опубликованные Ingalime
-
-
Здравствуйте. После добавления кода было много чего красным подчеркнуто. Помогло добавление в uses Androidapi.JNI.JavaTypes, Androidapi.JNIBridge, AndroidApi.JNI.Media
Однако по прежнему пишет что не определен тип JHandler / TJHandler Что надо добавить?
И такой вопрос: как реализовано LogCAAdd и когда первый раз вызываем TForm1.GetAudioFocus;?
Спасибо.
-
Извините, не совсем понятно с потерей фокуса. Приложение имеет службу переднего фона. Приложение может быть свернуто, но музыка все равно будет играть. Так работают все плееры и мой также. При входящем звонке хочу остановить воспроизведение. Сейчас музыка продолжает играть при разговоре по телефону.
-
И так не работает:
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 не происходит.
-
Здравствуйте. Мне надо при входящем звонке остановить музыку в плеере. Согласно документации получился такой код:
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 Где ошибка?
Спасибо.
-
Получилось. Надо было кнопкой изменить рабочую версию, а я просто загрузила.
-
Здравствуйте. В консоль гугла загрузила файл aab App Bundle. Загрузка прошла успешно. Но как сделать эту версию рабочей в консоли?
Согласно документации версию надо подписать в самой консоли:
Но внешний вид консоли изменился ничего подобного там нет. Документация по ссылке устарела.
Всю консоль просмотрела, не нашла как сделать мой App Bundle рабочей версией.
Ткните, пожалуйста, носом где это делается в нынешней консоли разработчика?
-
Большое спасибо!
Подскажите, пожалуйста, мои шаги следующие правильные?
У меня в дереве проектов две версии приложения. Запускаю 32 бит версию. На телефоне появляется приложение и оно работает. Запускаю версию 64 бит на телефоне и рядом с приложением 32 бит появляется 64 битное и тоже работает.
Далее создаю aab и отправляю в магазин.
Однако если aab содержит сервис то могут быть проблемы, информация отсюда, правда это было год назад:
https://fire-monkey.ru/topic/2040-проблема-с-android-service/#comment-10875
Как все таки правильно? Пробовать создать гибридный apk?
-
-
Добавить в приложение службу переднего плана. Код есть на форуме.
-
Мои дополнительные шаги. Надо было подправить манифест для 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 бит добавила пути как выше на рисунке. Вот такой теперь арк, но падает.
-
Сейчас так:
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
-
-
Цитата
Перед тем как вы соберётесь выложить сюда собранный 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 битная версия падает.
-
Прописала принудительно через Copy->Paste library\lib\armeabi-v7a\ для 32 бит. Теперь так получила такой арк:
-
В опциях проекта студии поставила галочку true у
Generate Android 32-bit and 64-bit binaries(armedi-7a + arm64-v8a)
в режиме платформа Андроид 64 бит/релиз/Development
На выходе получила этот АРК. На телефоне андроид 8.1 Readmi5A запустилось.
.aab я так понимаю будет получен в режиме Configuration->Application Store -
-
Что-то никак не могу осмыслить. Прошу прощения за тупость.
Мне надо арк 64 бит для маркета.
Мои шаги теперь:
1. В деплоймент сейчас добавляем дополнительно libbass.so из папки armeabi.
Это будет заглушка?
2. Имеем три libbass.so ВААS в деплойменте.
3. Есть еще папки BAAS x86 и x86_64 но для них не понятно какой путь выбрать в Remote Path.
Я так понимаю файлы libbass.so из этих папок добавлять в деплоймент не надо?
4. Какие галочки надо установить для libnative-activity.so там и релиз есть и дебаг пути. Или поставить все пять галочек где пусто?
Вот сейчас такой деплоймент на картинке: -
-
Как то странно работает ссылка на проект на форуме. Если скопировать в новую вкладку браузера то все нормально.
-
Cкриншот деплоя 64 бит. 32 бит я не компилировала вообще.
С дебагом у меня тоже были проблемы. Компилятор ембаркадеро упорно писал что не может распознать Readmi5A и отваливался.
Компилировала в релизе с ShowMessage-ми в поисках ошибок.
Если у кого есть терпение на скачивание то ссылка на весь проект: http://nsnllc.um.la/delphi821FMX.zipПроект у меня по пути C:\Users\Lena\Documents\Embarcadero\Studio\Projects\delphi82
Хотелось бы по окончании дискуссии, чтобы на этом форуме кто-то из специалистов выложил статью как правильно создать службу переднего плана в дельфи.
Служба весьма полезная, но централизованной информации нет и вообще все странно работает - в одних версиях нормально, в других падение. -
1 час назад, PowerOwl сказал:
А вообще, почему бы Вам не скинуть полностью проект, тогда можно было бы посмотреть, в каком месте возникает ошибка.
Там большие SO файлы библиотеки BASS, картинки. В ZIP архиве проект 280 Мг. Могу выложить на хостинг и дать ссылку, но вряд ли кто захочет такой размер скачать... Можно конечно уменьшить размер убрав какие-то временные файлы студии, но это моя первая программа на паскале, боюсь что-то удалять.
P.S.
А эмулятор не удалось запустить.
-
1 час назад, Олег Киреев сказал:
И в этой новой версии OS сообщает "В приложении произошёл сбой".
Получается дело не в запуске сервиса, ведь запуск сервиса теперь в отдельной кнопке. Видимо что-то не так для этих версий андроида в манифесте...
-
Здравствуйте.
Для публикации в гугл магазине можно создать .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, но не получается. Где ошибка? -
Цитата
Ну так эмуляторы ведь есть.
Подскажите, пожалуйста, как запустить утилиту создания эмулятора. В предыдущих версиях это было в меню Пуск. В 10.4 там ее нет.
[Android]Входящий звонок
в Android
Опубликовано
Подскажите, пожалуйста, не будет ли утечки памяти, если пользователь несколько раз подряд нажмёт кнопку воспроизведения?