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

Tumaso

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

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

  • Посещение

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

    39

Активность репутации

  1. Like
    Tumaso получил реакцию от Ingalime в В 10.2 работает, а в RIO зависает при присвоении медиа-файла   
    TMediaPlayer в android и ios вообще никогда стабильно не работал, и targetSDK тут даже не причем. Он кривой сам по себе изначально, смиритесь.
    Стабильное решение медиаплейера есть в библиотеке alcinoe,  но там поддерживается пока только tokyo, поддержка rio будет позже.
  2. Like
    Tumaso получил реакцию от Yarpda в В 10.2 работает, а в RIO зависает при присвоении медиа-файла   
    TMediaPlayer в android и ios вообще никогда стабильно не работал, и targetSDK тут даже не причем. Он кривой сам по себе изначально, смиритесь.
    Стабильное решение медиаплейера есть в библиотеке alcinoe,  но там поддерживается пока только tokyo, поддержка rio будет позже.
  3. Like
    Tumaso отреагировална Brovin Yaroslav в С днем рождения Андрей Ефимов ???   
    Хочу от всей души поздравить с днем рождения нашего модератора Андрея Ефимова @Andrey Efimov. Человек, на которого можно положиться и который всегда готов прийти на помощь. Из года в год помогает нашему форуму становиться лучше. 
    С днем рождения! Успехов тебе в работе, в личных делах. И не забывать про Делфи!
  4. Like
    Tumaso получил реакцию от Anatoliy в Обновить приложение   
    @Anatoliy
    разобрался? после Google Play быстро забываешь, что в AppStore (как и во всех продуктах Apple) ВСЁ через заднее место.
    Для уже опубликованных приложений в appstore обновление получается нужно через создание новой версии делать, а не через удаление текущей сборки.
  5. Like
    Tumaso отреагировална jornada в Доступ к Yandex.Disk   
    Лучше поздно, чем никогда) Например так
    // RESTRequest1.AddFile(FileName);
     AStream := TMemoryStream.Create();
     AStream.LoadFromFile('D:\1.mp4');   
     RESTRequest1.AddBody(AStream, ctVIDEO_MP4);
  6. Like
    Tumaso получил реакцию от Anatoliy в Обновить приложение   
    @Anatoliy
    сначала удалите текущую версию - мышкой подвести к колонке даты/времени текущей сборки, появится круглая красная иконка удаления. нажать и сборка удалится.
    после этого выбрать новую сборку - там и будет ваша новая версия. выбираете ее и отправляете на проверку
  7. Like
    Tumaso получил реакцию от Anatoliy в Обновить приложение   
    @Anatoliy
    сорри, я видимо наверное не правильно понял тебя. В консоли AppStore, когда загружаешь новую версию, нужно старый пакет удалить и там же выбрать пакет с новой версией. После этого отправляешь на проверку.
    После проверки, если она будет успешна, приложение обновится в магазине AppStore. Клиентам же оно попадет не сразу, тут нужно будет просто подождать.
  8. Like
    Tumaso отреагировална Slym в Артефакты на экране (Android)   
    Боролись как-то с артефактами отображения (мы их прозвали "крокодилами" из-за сходства на первом скриншоте с этим багом)...
    Могли отображаться также левые спрайты, или обрезки скролившихся контролов...
    Коллега выяснил что не надо трогать Form.Fill, из-за переключения в недрах FMX нативной и не нативной канвы: если нужен фон - брось Rect по контенту и в нем делай заливку...
  9. Thanks
    Tumaso получил реакцию от Anatoliy в Обновить приложение   
    Просто нужно подождать.
  10. Like
    Tumaso отреагировална FeLDMARShaL в [iOS] Полноценная фоновая работа приложения   
    Расскажу о том как я добился нормальной фоновой работы приложения. В моем понимании нормальная фоновая работа приложения - это сохранять геокоординаты и систематически (по мере их накопления передавать на сервер). По сути у нас получился трекер. Те кто считают что iOS такое не умеет делать, и все что будет написано ниже это фейк лучше закройти эту тему. Итак начнем, по пунктам:
    1) Добавляем к проекту ключ NSLocationAlwaysAndWhenInUseUsageDescription - для новых иОС это обязательно, начиная с 11 или 12 версии уже не помню

    2) Сообщаем приложению о намерении что мы будем использовать геокоординаты в фоне (редактируем ключ UIBackgroundModes выставляя галочку напротив location)

    3) Далее  для того чтобы не поломать другие приложения которые используют геолокацию создаем специальную дерективу, которая будет сообщать о том что наше приложение будет использовать геолокацию в фоне, я ее назвал iOS_RequestAlwaysAuthorization

    4) Дальше намного сложнее, нам нужно исправить исходники самой Delphi, а именно System.iOS.Sensors. Изменять будем процедуру TiOSLocationSensor.DoStart, все что отличается от стандартного у меня в рамках описания моей директивы:
    function TiOSLocationSensor.DoStart: Boolean; var I: Integer; begin {$ifdef iOS_RequestAlwaysAuthorization} if TOSVersion.Check(8) and (FLocater <> nil) then FLocater.requestAlwaysAuthorization; {$else iOS_RequestAlwaysAuthorization} if TOSVersion.Check(8) and (FLocater <> nil) then FLocater.requestWhenInUseAuthorization; {$endif iOS_RequestAlwaysAuthorization} // check authorization if Authorized = TAuthorizationType.atUnauthorized then SensorError(SLocationServiceUnauthorized); // check if location sensor is enabled if not FLocater.locationServicesEnabled then SensorError(SLocationServiceDisabled); // start location updates if (LocationChange = TLocationChangeType.lctLarge) and CanUseSignifChangeNotifs then FLocater.startMonitoringSignificantLocationChanges else FLocater.startUpdatingLocation; // start heading updates if CanUseHeading then begin FLocater.startUpdatingHeading; end; // start monitoring regions if CanMonitorRegions then for I := 0 to Regions.Count - 1 do FLocater.startMonitoringForRegion(ConvLocationRegion(Regions[I])); Result := FLocater.locationServicesEnabled; if Result then Result := Authorized = TAuthorizationType.atAuthorized; {$ifdef iOS_RequestAlwaysAuthorization} FLocater.setAllowsBackgroundLocationUpdates(True); FLocater.setPausesLocationUpdatesAutomatically(False); {$endif iOS_RequestAlwaysAuthorization} end; Собственно усе, можно наслаждаться фоновой работой. Все это работает под Delphi 10.2.3. На телефоне iPhone 6s под управлением iOS 11. Как было сказано выше, работает как геолокация так и инет и вообще все остальные процессы внтури приложения, такие как TTimer
    Собственно вот результат данного трекера:

     
    Если приблизить то можно увидеть насколько точно и часто он обновляет координаты:

     
    И да, огромное спасибо человеку с ником Artyom Karapetyan, именно он натолкнул на мысль того как надо правильно все сделать
  11. Haha
    Tumaso получил реакцию от Barbanel в Http client server   
    вы хотите, чтобы чат был написан для вас без вашего участия?)
  12. Like
    Tumaso отреагировална Alex7wrt в Передача звука с микровона в потоке от клиента серверу   
    Когда-то приводил пример в другой теме, но он на Delphi
     
  13. Like
    Tumaso получил реакцию от Sergionn в ErrorSoft TurboUpdate - Автообновление ваших Windows приложений   
    Ничего личного, но само название ErrorSoft как бы намекает....
  14. Like
    Tumaso получил реакцию от Anatoliy в API level 26 ??? Всё таки как выложить приложение на Play Market?   
    @Yuriy2606, нужно динамически запрашивать необходимые разрешения у пользователя.
    Наверное, правильнее будет установить 10.3 CE, там поддержка получения разрешений идет из коробки (модуль System.Permissions). Плюс 10.3 поддерживает android 9
    Что касается получения ключа, то проверьте, что у вас в hosts и нет ли блокировки доступа bds.exe к Интернет на уровне антивируса
  15. Like
    Tumaso отреагировална sinuke в [Android] Прозрачный StatusBar в RAD 10.3 Rio   
    Привет
    Вчера была выпущена финальная версия RAD Studio 10.3 Rio, в которой много нововведений для Андройд. Но вот про статусбар снова "забыли". Хотя не совсем, добавили файлик styles-v21.xml, который превносит новую материальную тему на устройствах под управлением Android 5.0 и выше вместо устаревшей Holo.
    Но все равно свойство формы SystemStatusBar так и не реализовали. Поэтому при запуске статус бар будет окрашен в унылый серый цвет (см. скриншот).

    Для того, чтобы сделать статусбар прозрачным и поместить под него содержимое формы, то достаточно сделать несколько несложных шагов:
    1. Убираем из деплоймента (Project -> Deployment) файл styles-v21.xml (можно просто снять галочку рядом с именем файла)

    2. Добавить в деплоймент проекта новый файл styles-v21.xml (styles-v21.zip) и прописать ему путь res\values-v21\

    3. В результате получится следующий вид

     
    P.S. В новом файле по сравнению со стандартным добавилась строчка <item name="android:windowTranslucentStatus">true</item>, которая и отвечает за прозрачный статусбар
    P.P.S. Чтобы определять размер статус бара, все также можно воспользоваться решеним ZuBy - http://blog.rzaripov.kz/2016/12/android-ios.html
    P.P.P.S. Тестовый проектик - StatusBar.zip
  16. Like
    Tumaso отреагировална Barbanel в Нарисовать TСontrol без вывода на экран   
    Попробуйте перед снятием скриншота насильно применять стиль всех для элементов.
    Вызывайте для каждого контрола процедуру ApplyStyleLookup();
  17. Like
    Tumaso получил реакцию от Anatoliy в Андроид. Не удаётся установить приложение.   
    Удалите вручную приложение с телефона перед установкой новой версии.
    Можно еще попробовать установить -cleaninstall в Run->Parameters, далее в появившемся диалоге в дереве  слева выбираете Debugger, справа в поле Parameters и указываете -cleaninstall
  18. Thanks
    Tumaso получил реакцию от Maka в Скриншот без компрессии   
    Попробуй вместо своей функции вызвать ACntrl.MakeScreenshot
  19. Like
    Tumaso отреагировална kami в Delphi 10.1 FMX android данные с сервера в base64 закодирован хранится pdf как его раскодировать и сохранить на устройстве   
    А в чем загвоздка?
    Достать поле из JSON - вроде просто, обычная работа с JSON далеко не самой сложной структуры.
    Раскодировать из Base64 - uses System.NetEncoding; TNetEncoding.Base64.DecodeStringToBytes и сохранить их в файл
    Потом открыть файл через интент.
  20. Like
    Tumaso отреагировална dnekrasov в Перехват сообщений в Windows   
    Делаем как обычно, если надо переопределить какое-то событие окна
    interface uses {$IFDEF MSWINDOWS} Winapi.Windows, Winapi.Messages, FMX.Platform.Win, {$ENDIF} System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs; type TMainForm = class(TForm) private procedure CreateHandle; override; {$IFDEF MSWINDOWS} procedure WMIMENotify(var Msg: TMessage); message WM_IME_NOTIFY; {$ENDIF} public end; var MainForm: TMainForm; implementation {$R *.fmx} {$IFDEF MSWINDOWS} var OldWndProc: Pointer = nil; function NewWndProc(Wnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; var Mess : TMessage; begin case Msg of WM_IME_NOTIFY: begin Mess.Msg := Msg; Mess.WParam := wParam; Mess.lParam := lParam; Mess.Result := 0; MainForm.Dispatch(Mess); Result := Mess.Result; end; else Result := CallWindowProc(OldWndProc, Wnd, Msg, WParam, LParam); end; end; {$ENDIF} { TMainForm } procedure TMainForm.CreateHandle; begin inherited CreateHandle; {$IFDEF MSWINDOWS} OldWndProc:= Pointer(SetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_WNDPROC, Integer(@NewWndProc))); {$ENDIF} end; {$IFDEF MSWINDOWS} procedure TMainForm.WMIMENotify(var Msg: TMessage); begin {что-то делаем} end; {$ENDIF}  
  21. Like
    Tumaso отреагировална ENERGY в В Embarcadero отсутствует Android Service   
    Совет. Не пишите под Android на Delphi ниже последней версии Берлина (10.1 upd 2).
    А если выше, то точно не Токио первых версий, только последние версии Токио, иначе все будет тормозить и глючить.
  22. Like
    Tumaso получил реакцию от Anatoliy в [DELPHI FMX Android] [6.0] Не удается загрузить SSL библиотеку   
    На stackoverflow описано решение этой проблемы. Суть в том, что мы принудительно заставляем Indy использовать OpenSSL вместо BorinSSL:
    1. добавляем в project deployment для андроида 2 файла: libcrypto.so и libssl.so (взять их можно на https://forums.embarcadero.com/thread.jspa?threadID=211147), в качестве Remote path для обоих файлов указываем .\assets\internal
    2. убеждаемся, что в .dpr модуль System.StartUpCopy указан самым первым
    3. при запуске приложения вызываем IdOpenSSLSetLibPath(TPath.GetDocumentsPath) 
    примечание к версии SSL - на файлы по ссылке из п.1 Google не выдает предупреждений, а на более старые версии будет ругаться
  23. Like
    Tumaso получил реакцию от dnekrasov в [DELPHI FMX Android] [6.0] Не удается загрузить SSL библиотеку   
    На stackoverflow описано решение этой проблемы. Суть в том, что мы принудительно заставляем Indy использовать OpenSSL вместо BorinSSL:
    1. добавляем в project deployment для андроида 2 файла: libcrypto.so и libssl.so (взять их можно на https://forums.embarcadero.com/thread.jspa?threadID=211147), в качестве Remote path для обоих файлов указываем .\assets\internal
    2. убеждаемся, что в .dpr модуль System.StartUpCopy указан самым первым
    3. при запуске приложения вызываем IdOpenSSLSetLibPath(TPath.GetDocumentsPath) 
    примечание к версии SSL - на файлы по ссылке из п.1 Google не выдает предупреждений, а на более старые версии будет ругаться
  24. Like
    Tumaso отреагировална krapotkin в Непонятный LiveBinding Object   
    самое правильное по всем статьям просто руками написать загрузку данных в UI, реакцию на изменения в UI и выгрузку данных в МД
    времени занимает в 100 раз меньше, чем ловить глюки и отлаживать "технологии"
  25. Like
    Tumaso отреагировална x11 в Непонятный LiveBinding Object   
    Я не смотрел проект и буду подсказывать, как.
    Просто напишу, что LiveBinding - тормознутая и глючная технология. Разработчики так и не довели её до ума.
    Если есть возможность, лучше отказаться от LiveBinding.
×
×
  • Создать...