Перейти к содержанию

Вся активность

Лента обновляется автоматически     

  1. Последний час
  2. >[DCC Error] E2597 Undefined symbols for architecture arm64: У меня такая ошибка возникала когда в разных модулях была функция с одним и тем же именем. Но это в С++ Builder.
  3. Сегодня
  4. Хорошая статья - Спасибо большое! Но у меня не получается запустить на устройстве. все 10 раз перепроверил - сделал как в статье. ошибка: [DCC Error] E2597 Undefined symbols for architecture arm64: Error: "_AudioOutputUnitStop", referenced from: l174 in libbass.a(libbass.a-arm64-master.o); l181 in libbass.a(libbass.a-arm64-master.o); l183 in libbass.a(libbass.a-arm64-master.o); l391 in libbass.a(libbass.a-arm64-master.o); Error: "_AudioOutputUnitStart", referenced from: l168 in libbass.a(libbass.a-arm64-master.o); Error: "_AudioUnitSetProperty", referenced from: l170 in libbass.a(libbass.a-arm64-master.o); l181 in libbass.a(libbass.a-arm64-master.o); _BASS_Init in libbass.a(libbass.a-arm64-master.o); Error: "_AudioUnitUninitialize", referenced from: l181 in libbass.a(libbass.a-arm64-master.o); l391 in libbass.a(libbass.a-arm64-master.o); Error: "_AudioSessionSetProperty", referenced from: _BASS_Init in libbass.a(libbass.a-arm64-master.o); l615 in libbass.a(libbass.a-arm64-master.o); Error: "_AudioUnitGetProperty", referenced from: l170 in libbass.a(libbass.a-arm64-master.o); Error: "_AudioComponentInstanceDispose", referenced from: l181 in libbass.a(libbass.a-arm64-master.o); l391 in libbass.a(libbass.a-arm64-master.o); Error: "_AudioSessionSetActive", referenced from: _BASS_Init in libbass.a(libbass.a-arm64-master.o); l614 in libbass.a(libbass.a-arm64-master.o); l616 in libbass.a(libbass.a-arm64-master.o); Error: "_AudioUnitAddPropertyListener", referenced from: _BASS_Init in libbass.a(libbass.a-arm64-master.o); Error: "_AudioUnitInitialize", referenced from: _BASS_Init in libbass.a(libbass.a-arm64-master.o); Error: "_AudioComponentInstanceNew", referenced from: _BASS_Init in libbass.a(libbass.a-arm64-master.o); Error: "_AudioComponentFindNext", referenced from: _BASS_Init in libbass.a(libbass.a-arm64-master.o); Error: "_AudioSessionInitialize", referenced from: l615 in libbass.a(libbass.a-arm64-master.o); ld: symbol(s) not found for architecture arm64 Гугл не помог... что я делаю не так. help pleeease)!
  5. Без разницы. конкретно этот пример отрабатывает три минуты. также на ios есть возможность регистрировать функцию, которой IOS будет выделять время для выполнения, там тоже жесткие ограничения и когда ей выделять время - одному джобсу известно(было, теперь уже нет)... т.е. она может выполняться раз в час, сутки, месяц и т.д. На сегодняшний день как я понял возможно удерживать приложение в фоне работоспособным это - VOiP(и тот в следущей версии толи в этой уже) обещали прикрыть(Facebook в шоке работает над решением), работа с микрофоном, воспроизведение аудио.. вроде еще геолокация должна позволять приложению работать, но что то у меня не вышло. с микрофоном история такая - как только запись прервали - приложение выключается, с аудио - тоже.... именно по этому я просил у вас в лс, рабочий пример записи в буффер с микрофона а не в файл, чтобы серверу отправлять аудио без прерывания записи... сейчас работаю над этим.
  6. Спасибо, а если каждый 2 минуты аппликация будет вызывать какой нибудь метод из моего веб сервиса?
  7. Отвечу сам . Выяснил. Если загружать отдельно пакет для 64 версии, то все работает как надо. А вот если формируем aab, то начинаются такие проблемы. Причем все работает с aab нормально, если приложение не содержит сервиса. По всей видимости или делфа не верно формирует пакет aab для сервиса, либо на гуле при оптимизации происходят какие-то метаморфозы. Теперь другая проблема, как сформировать пакет aab так чтобы все работало?
  8. Вчера
  9. Ingalime

    [IOS]Siri

    Подскажите, пожалуйста, можно ли из своего приложения запустить на iphone распознаватель голоса Siri? RAD10.3
  10. Сам недавно бился с этим вопросом. ответ нашел на этом форуме. Но после долгого гугления вопроса сложилось впечатление, что на сегодняшний день из ios можно выжать максимум три минуты работы приложения в фоне, потом приложение перестает реагировать. в моем случае было необходимо передавать координаты. Что только не перепробовал - три минуты и все. можно мухлевать: Воспроизводить аудио или записывать с микрофона - но ребята из apple при публикации к такому отнесутся не очень. вот исходники которые нарыл - пример отрабатывает в фоне три минуты BackgroundTaskManager.zip
  11. Последняя неделя
  12. Martifan

    TThread В фоновом режиме

    Доброго времени суток. Подскажите пожалуйста, как заставить работать TThread в приложении, если приложение свернуто, т.е находится в фоновом режиме. Я делаю так: var I: Integer; begin I := 0; TThread.CreateAnonymousThread(procedure () var Return: String; begin repeat Label1.Text := I.ToString; I := I + 1; Sleep(1000); // Application.ProcessMessages; until I > 10; TThread.Synchronize (TThread.CurrentThread, procedure () begin end); end).Start; end; Когда активно приложение, все работает хорошо, после того как сворачиваю, т.е. нажимаю кнопку Home, аппликация сворачивается и процесс останавливается. Когда обратно разворачиваю, процесс продолжается. Как заставить работать приложение в фоновом режиме? Заранее спасибо.
  13. Slym

    multicast udp

    А в инде все готово... procedure TForm1.FormCreate(Sender: TObject); begin IdUDPServer1.ReuseSocket:=TIdReuseSocket.rsTrue; IdUDPServer1.DefaultPort:=9898; IdUDPServer1.Active:=true; end; procedure TForm1.IdUDPServer1AfterBind(Sender: TObject); begin IdUDPServer1.Bindings[0].AddMulticastMembership('224.0.0.50'); end;
  14. gonzales

    multicast udp

    Да, вчера в ночи тоже это вычитал))) Осталось понять как это сделать на Инди
  15. @Alex7wrtCan you give me more info(or demo code) about your solution?
  16. Finally solved. Although it is not perfect, but it can satisfy my use. Share to everyone: (Base on @ Brovin yaroslav and @ cezif 's post, Thanks!) procedure TWindowsMedia.UpdateMediaFromControl; function GetScreenScale: Single; var ScreenService: IFMXScreenService; begin Result := 1; if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then Result := ScreenService.GetScreenScale; end; var R: TRect; Bounds: TRectF; Form: TCommonCustomForm; ScaleRatio: Single; begin FVMRWindowlessControl9.SetAspectRatioMode(VMR9ARMode_LetterBox); if FWnd <> 0 then begin if (Control <> nil) and not (csDesigning in Control.ComponentState) and (Control.ParentedVisible) and (Control.Root <> nil) and (Control.Root.GetObject is TCommonCustomForm) then begin Form := TCommonCustomForm(Control.Root.GetObject); ScaleRatio := GetScreenScale; Bounds := TRectF.Create(0, 0, Control.AbsoluteWidth * ScaleRatio, Control.AbsoluteHeight * ScaleRatio); Bounds.Fit(RectF(0, 0, Control.AbsoluteWidth * ScaleRatio, Control.AbsoluteHeight * ScaleRatio)); Bounds.Offset(Control.AbsoluteRect.Left, Control.AbsoluteRect.Top); SetParent(FWnd, WindowHandleToPlatform(Form.Handle).Wnd); SetWindowPos(FWnd, 0, Bounds.Round.Left, Bounds.Round.Top, Bounds.Round.Width, Bounds.Round.Height, 0); R := TRect.Create(0, 0, Bounds.Round.Width, Bounds.Round.Height); if FVMRWindowlessControl9 <> nil then FVMRWindowlessControl9.SetVideoPosition(nil, @R); if FVMRWindowlessControl7 <> nil then FVMRWindowlessControl7.SetVideoPosition(nil, @R); ShowWindow(FWnd, SW_SHOW) end else begin SetParent(FWnd, ApplicationHWND); ShowWindow(FWnd, SW_HIDE) end; end; end;
  17. Slym

    multicast udp

    https://habr.com/ru/post/141021/ ключевой момент "Подключение к группе"
  18. gonzales

    multicast udp

    Доброго времени суток!! Подскажите знатоки, уже мозг себе сломал. Имеется устройство Xiaomi Mi Gateway - что-то наподобие шлюза умного дома от Xiaomi. Эта приблуда шлет в локалку мультикаст репорты по адресу 224.0.0.50 на порт 9898. В Wirenshark я все это прекрасно вижу. Но не могу настроить UDPServer на прием этих пакетов. Вопросов по существу несколько, если у меня вот такой мультикаст, как настроить UDPServer на прием, нужно ли создавать какой-то binding или нужно настроить default port? Я пробовал и то и другое, но так ничего и не увидел. Если у кого-то есть какие-то мысли, буду рад услышать!
  19. OK, I have basically located the cause of the problem, and the next step is how to fix this bug.
  20. Проблема обозначена в заголовке. Подробнее: при дефолтных установках TFDConnection.ResourceOption (включенных EscapeExpand, MacroCreate, MacroExpand, ParamCreate, ParamExpand) функция Locate возвращает False. При отключении этих параметров Locate падает с сообщением "Unrecognized token {" Вынужден вместо Locate использовать Filter, очень сильно проигрывая в скорости. Хотелось бы все-таки понять, в чем тут дело.
  21. Вопрос решился открытием разрешения "Память" приложению на телефоне.
  22. My program need to play videos with full screen and run under 4k monitor (Windows 10 64bit, Firemonkey framework). I found a post which fixing the TMediaPlayer scaling problem by @ Brovin yaroslav and @ cezif : It works very fine under 1080p monitor (1920x1080). But when I run my program under 4k monitor(3840x2160), the video can't been stretched with correct display. Can any guys can help me to fix this problem? Thanks a lot.
  23. Здравствуйте Уважаемые. В продолжение темы. У меня тоже что и у пользователя "Cody71727172" выше. Может кто знает как решить эту проблему??? С Уважением. Олег.
  24. Приветствую. Кто может подсказать в чем дело. Программа содержит сервис. Задача чтобы сервис через определённый промежуток слал запросы на сервер и обрабатывал ответ (внутри сервиса создают поток). При перезагрузке телефона нужно чтобы сервис запускался автоматом. При отладке все работает как часы. Если установить программу с apk, при отладке все ок. Все шлёт, перезапускается. Но стоит выложить программу в Google play и установить её оттуда, сервис перестаёт запускаться при запуске программы и запускаться автоматом при перезагрузке. При перезагрузке запускается программа, причём фоном. На экране её нет, но на сервере вижу, что запросы шлёт программа, а не сервис. Причём та же программа установленная с Google play на android 8 работает правильно. А при установке на android 9 (xiaomi) начинаются проблемы. Все разрешения в манифесте прописаны и в настройках телефона тоже. Проблема именно после установки с Google play начинается и на android 9. Всю голову сломал, не пойму куда копать. Проверял программами информерами на телефоне содержит ли моя программа сервис, его название и т д. Все на месте.
  25. Ещё раньше
  26. Доброго времени суток, уважаемые форумчане! столкнулся с необычной проблемой. при попытке откомпилировать версию приложения под IOS Release Appstore возникает такая проблема: [PAClient Error] Error: E0776 2020-03-28 16:43:52.848 xcodebuild[759:12532] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/1d/0tgf_n1j39jfghjrqz5r697h0000gn/T/Project3_2020-03-28_16-43-52.847.xcdistributionlogs'. [PAClient Error] Error: E0776 error: exportArchive: No 'teamID' specified and no team ID found in the archive [PAClient Error] Error: E0776 Error Domain=IDEFoundationErrorDomain Code=1 "No 'teamID' specified and no team ID found in the archive" UserInfo={NSLocalizedDescription=No 'teamID' specified and no team ID found in the archive} При этом, если создать новое приложение и подписать его этим же сертификатом - приложение успешно компилируется. т.е. проблема в самом проекте... может кто то сталкивался?
  27. Причем тут гугл, есть речь про российское налогообложение? ИП тот же физик. А если еще и на счет ИПешный будешь деньги полччать, то совсем никаких намеков на проблемы быть не может.
  28. Господа Delphi-программисты под Android (FireMonkey), Нужна ваша помощь или совет в направления решения в несложной, достаточно типичной и прозрачной задаче: Я хочу выполнять некоторые вычисления (или выдавать Toastы) через каждые 30 сек. в Android-приложении. Что-то типа сервиса (службы): Приложение запускает задание и может закрываться, но периодические вычисления продолжаются (результат сохраняется, допустим, в ini - не важно пока), т.е. служба работает. Я не знаю, как это решить: 1. Организовал как сервис. Сервисы убиваются androidом ... И это политика androidов: экономить батарию и т.д. 2. Сделал через AlarmManager. Тоже это не работает на MI 9T (Android 10: API 29). На старых (Android 4...: API 19) всё работает. 3. Хотел использовать job scheduler: добавлять задания и удалять исполненные. Но не знаю как. ничего не нагуглил под Firemonkey. Может кто знает? Какие ещё варианты и вообще, это решается на Firemonkey Delphi XE 10.3.3? На поиск решения мною потрачено много время - сдвинуться не могу. Если Delphi это не умеет, так и скажите - перепрыгну на другую платформу. Может Delphi об этом думает, чтоб это скоро реализовать? В интернете тишина. Если Delphi это умеет, просьба дать идею или совет или пример ...
  29. Форум жив! Это радует. Ответ, через 4 месяца, лучше, чем без ответа вообще (без сарказма). Благодарю за внимание! Я долго разбирался с ранее описанными проблемами. И в некотором роде разобрался. Пусть останется для истории. Ранее я несколько сумбурно описал проблемы при использовании TThreadedQueue, отчасти это связано, что на тот момент я не понимал природу этих проблем. Итак имеем: -Проблема 1: «замусоривание» данных при использовании TThreadedQueue<T> , где <T>=Tbytes; (и как выяснилось любой динамический массив). Ранее я это называл {жучок 2} -Проблема 2: TThreadedQueue.PopItem при определенных обстоятельствах перестаёт «ожидать» данные заданное кол-во времени соответственно не «усыпляет» поток в котором он был вызван. Ранее я это называл {жучок 1} Начну с 2-ой проблемы. Пытаясь разобраться, я пошел по пути написать своей TThreadedQueue. Что и было сделано. Итак, оригинальный TThreadedQueue реализован через TMonitor, который в WIN32\64 реализуется через критическую секцию. Т.к. меня в первую очередь интересует windows платформа, то свой TThreadedQueue я реализовал сразу на критической секции. Далее изучая исходники TThreadedQueue, я выяснил, что PopItem реализован через WINAPIшные WaitForSingleObject(WaitForMultipleObjects) у которых один из параметров dwMilliseconds(время ожидания в мсек, которое передаётся из конструктора TThreadedQueue). И как выяснилось именно эти функции реализуют описанную проблему. В разных версиях Windows и при разном кол-ве ядер CPU функции ведут себя по-разному в плане «ожидания». Далее не буду углубляться… я пришел к выводу, что такой подход имеет смысл. Правильный подход это всегда использовать dwMilliseconds= INFINITE. И за слишком частые вызовы WaitForMultipleObjects с параметром ожидания 1мсек, или 100мсек, Microsoft попросту «наказывает» программиста за неэффективное проектирование кода. Пробовал экспериментировать с задержками, в поиске найти «безопасную» задержку, так вот безопасная это только INFINITE. На 500мсек., при 50 потоках ждать проблему приходиться до 8 минут. При 1 секунде- не дождался, но… скорее всего если оставить программу работать на несколько суток, то эффект был бы получен. Возвращаясь к бесконечной задержке ожидания, в числе прочего меня к ней подтолкнул исходники TThreadedQueue. Если без подробностей, то в нем есть публичный метод DoShutDown, он позволяет «выйти» из бесконечного ожидания PopItem, при этом вызывать его естественно нужно не из потока «читателя». DoShutDown – необходимо использовать ВСЕГДА, при использовании TThreadedQueue. А использование бесконечной задержки – гарантия, что проблема не возникнет. Да проблемы проявляется скорее в «экстремальной» нагрузке, при 1-2 «читателей-писателей» или при низкой активности «писателей» проблема может и не проявиться, но лучше не рисковать. Фактически данная особенность не имеет отношение ни к Delphi ни к реализации TThreadedQueue, это WINAPI и возможно, что на других платформах этого не будет. Что касается 1-ой проблемы с «замусориванием» данных, то решение есть – никогда не использовать динамические массивы в TThreadedQueue<T>, а значит и в любом многопоточном приложении, а т.е. в любом… Поясню. Ранее написанный пример демонстрирует «замусоривание» данных. Если в примере заменить TBytes на статический массив array[0..2048]of byte – проблема исчезает. Так же, если «обернуть» TBytes в class, то проблемы так же исчезает. Фактически динамические массивы нужно использовать очень осторожно, они не потокобезопасны даже при использовании критических секций. Это очень печальная «особенность» в Delphi. Опять же проявляется только под «экстремальной» нагрузкой.
  1. Загрузить ещё активность
×
×
  • Создать...