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

#WAMACO

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

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

  • Посещение

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

    27

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

  1. Like
    #WAMACO получил реакцию от Ingalime в unauthorized access to "libqslite.so"   
    Видимо использовать более свежую версию студии!  Со времен XE7 много воды утекло, многое поправили.
  2. Like
    #WAMACO отреагировална Евгений Корепов в Узнать IP адрес устройства без дополнительных разрешений   
    Тут в процессе работы над одним проектом понадобилось узнать IP адрес устройства. Очень не хотелось включать дополнительные разрешения приложению. Думал ограничится одним "Доступ в Интернет".
    Вот как это можно сделать:
    С помощью TIdUDPServer посылаем широковещательное сообщение, с помощью того же TIdUDPServer сами получаем его и в ABinding узнаем с какого IP оно пришло. Таким образом мы узнаем IP адрес интерфейса с маршрутом по умолчанию.
    Вот код, все просто:
    unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, IdGlobal, IdSocketHandle, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer; const ConstUDPSendString = 'dfgb2hd3f6gbf'; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } FUDPServer : TIdUDPServer; FMyIP : String; procedure OnUDPServerUDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); procedure GetMyIP; public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); begin GetMyIP; end; procedure TForm1.GetMyIP; begin FMyIP:=''; FUDPServer:=TIdUDPServer.Create; FUDPServer.DefaultPort:=46734; FUDPServer.BroadcastEnabled:=True; FUDPServer.OnUDPRead:=OnUDPServerUDPRead; FUDPServer.Active:=True; FUDPServer.Broadcast(ConstUDPSendString, FUDPServer.DefaultPort); end; procedure TForm1.OnUDPServerUDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); begin AThread.Synchronize(AThread, procedure begin if BytesToString(AData).Equals(ConstUDPSendString) and FMyIP.IsEmpty then FMyIP:=ABinding.PeerIP; end ); end; end.  
  3. Like
    #WAMACO отреагировална Savage в Изменение стандартного звука а push-уведомлении   
    Надо подключать еще  android-support-v4.jar
    Вот мои файлы
    компиляция
    "C:\Program Files\Java\jdk1.8.0_60\bin\javac" -source 1.8 -target 1.8 "R:\fmx\com\embarcadero\rtl\notifications\NotificationPublisher.java" -cp "C:\Program Files (x86)\Android\android-sdk\platforms\android-17\android.jar";"C:\Program Files (x86)\Embarcadero\Studio\19.0\lib\android\debug\android-support-v4.jar" -d "r:\fmx" pause  
    сборка
     
    echo off setlocal set JAVA="C:\Program Files\Java\jdk1.8.0_60\bin" set ANDROID_PLATFORM="C:\Program Files (x86)\Android\android-sdk\platforms\android-17" set DX_LIB="C:\Program Files (x86)\Android\android-sdk\build-tools\27.0.3\lib" set EMBO_DEX="C:\Program Files (x86)\Embarcadero\Studio\19.0\lib\android\debug\classes.dex" set FMX_JAR="C:\Program Files (x86)\Embarcadero\Studio\19.0\lib\android\debug\fmx.jar" set PROJ_DIR=%CD% set VERBOSE=0 echo. echo COPY ORIGINAL fmx.jar copy %FMX_JAR% %PROJ_DIR%\fmx.jar" echo. echo UPDATE FILE NotificationPublisher.class %JAVA%\jar uf "fmx.jar" "com\embarcadero\rtl\notifications\NotificationPublisher.class" echo. echo CONVERTING FROM jar TO dex mkdir output\dex 2> nul if x%VERBOSE% == x1 SET VERBOSE_FLAG=--verbose call %DX_LIB%\dx.jar --dex %VERBOSE_FLAG% --output=%PROJ_DIR%\output\dex\test_classes.dex --positions=lines %PROJ_DIR%\fmx.jar echo. echo MERGING dex FILES echo.com.android.dx.merge.DexMerger java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger %PROJ_DIR%\output\dex\classes.dex %PROJ_DIR%\output\dex\test_classes.dex %EMBO_DEX% echo. del output\dex\test_classes.dex del output\jar\test_classes.jar rmdir output\jar echo. echo Now we have the end result, which is output\dex\classes.dex pause :Exit endlocal  
    FMX.zip
  4. Like
    #WAMACO отреагировална Savage в Изменение стандартного звука а push-уведомлении   
    Добавил многострочность в PUSH-уведомление
    Надо или нет пересобирать classes.dex точно не скажу. Говорят, что на 10.2.3 не надо
    Вначале просто подбросить в проект fmx.jar , если изменений нет, то и classes.dex
     
    NotificationPublisher.zip
  5. Like
    #WAMACO получил реакцию от Ingalime в Определить, к какому TObjectList принадлежит элемент   
    Пишите в TagObject элемента  экземпляр TObjectList ! И все!
  6. Like
    #WAMACO отреагировална ENERGY в Что невозможно сделать на Delphi для Android?   
    Delphi хоронят уже лет 15, это все слова. Нет идеальных инструментов. У всех какие то косяки, втч и у нативных средств, ведь все это придумывают люди, люди не роботы.
    На деле Delphi отличное средство для мультиплатформенной разработки вполне сложных программ. Мне как фрилансеру вполне хватает. Производительность гораздо лучше чем у Angular\Ionic, которые по факту WebView - веб в браузере - очень тормозное решение и подходит только для формочки "логин\пароль".  Также по производительности и глюкам Delphi имхо лучше чем ReactJS, и Xamarin aka Mono. 
    Во фрилансе огромная конкуренция, в основном индусы, в этом плане с Delphi можно быстрее разработать ПО чем предлагают сроки остальные.
    Проблема Делфай в том что оно дорогое, и  не так распространено - (это взаимосвязанный фактор) - таким образом сложно найти команду и мало проектов на нем разрабатывается, меньше сообщество и меньше документации и библиотек с готовыми решения Поэтому для одиночек это больше подходит.
     
    Но конечно нужно смотреть на развитие - вот Токио получилась очень сырым продуктом, я до сих пор на Берлине пишу под 4 платформы, если следующая версия выйдет такой же ультраглючной, то следует задуматься.
    А вообще хороший программист - это тот кто знает несколько языков, не бойтесь учить новое - опыт ускорит разработку с любым инструментом.
  7. Like
    #WAMACO получил реакцию от FREEFAR в Что невозможно сделать на Delphi для Android?   
    Не слушайте никого! Есть разные практики....
  8. Like
  9. Like
    #WAMACO получил реакцию от Rusland в Что невозможно сделать на Delphi для Android?   
    Сравнивать RAD надо не с нативными студиями разработки, а с Xamarin, например, там вообще тихий ужас...
    Есть 1С:Мобильная платформа, там тоже можно собирать под Android, iOS - правда все в желтом цвете (про toolbar), но знаю людей, кто на этом столько денег заработал, что авторы нативных приложений и не видели еще... 
    Дело в направленности приложений и ДА, некоторые типы приложений (например, корпоративные) делаются быстрее.
    Не надо рисовать виджет погоды на Delphi, не надо делать путеводитель по сортам кофе на Delphi. Делайте это нативными инструментами. 
    Востребованность в кроссплатформе есть и эта тенденция будет только усиливаться. 
     
    Сейчас это напоминает мне разговор в 1998 году о том, что все ПО под Windows надо писать на C++, потому что на других языках - НЕ НАТИВНО, МЕДЛЕННО РАБОТАЕТ, ПОДВИСАЕТ! 
    А потом, я пришел  в одну контору и руководство провозгласило: ТОРМОЗИТ? Добавьте Гигагерц и ОЗУ -  это дешевле и быстрее, нежели переписывать на нативных языках! Так вот, со временем так же будет и с мобилами! и уже очень скоро!
     
    НЕ РАБОТАЕТ НА КИТАЙСКИХ СМАРТФОНАХ? выбросьте их и купите уже нормальные аппараты!  это дешевле, нежели платить Kotlin разрабу!
  10. Like
    #WAMACO получил реакцию от Олег Киреев в Приложение для упорядоченного хранения любой информации в виде jpg, docx, pdf, rar файлов,просто текст который можно отправить в Word отображающейся в дереве v.9.0   
    Вам надо поработать над UI/UX приложения (по-гуглите, очень много ресурсов по этой теме)
    Все очень не удобно, не понятно, не однозначно.
  11. Like
    #WAMACO получил реакцию от Евгений Корепов в Delphi 10.2.3, AdBanner, Java, trouble   
    embarcadero выпустили патч исправляющий эту ошибку
    RAD Studio 10.2.3 Android Push Notification Patch
    This patch resolves an issue with push notifications on Android due to missing files.
    It fixes the following publicly reported issue: RSP-20137
    English, French, German and Japanese
    Available only to registered users of RAD Studio, Delphi, C++Builder 10.2 (Professional or higher) and All-Access
  12. Like
    #WAMACO отреагировална ENERGY в [Отклонение] TFloatAnimation и TFrame   
    Столкнулся с такой же проблемой, если любой компонент (в моем случае TImage ) лежит на фрейме не работает TFloatAnimation вообще.
    Решение: 
    При создании фрейма нужно указывать Self формы, а не  nil.
    : MyFrame := TMyFrame.Create(Self);
  13. Like
    #WAMACO отреагировална Savage в Изменение стандартного звука а push-уведомлении   
    Задачу решил.
    Вот измененная процедура, ну и добавил вытягивание параметра sound
        private Builder buildNotification(String msgTitle, String msgText, String msgSound, PendingIntent contentIntent) {
            int icon = this.mContext.getApplicationContext().getApplicationInfo().icon;
            Builder mBuilder = new Builder(this.mContext);
            mBuilder.setSmallIcon(icon);
            mBuilder.setTicker(msgTitle);
            mBuilder.setContentTitle(msgTitle);
            mBuilder.setContentText(msgText);
            mBuilder.setContentIntent(contentIntent);
    // savage
            if (msgSound == "") {
               mBuilder.setSound(RingtoneManager.getDefaultUri(2));
            }
            else
            {
              mBuilder.setSound(Uri.parse("android.resource://" + this.mContext.getPackageName() + "/raw/"+msgSound));
            }
    //
            return mBuilder;
        }
    Звуковой файл надо добавить в Deployment
    Расположение res/raw/
    При формировании push-сообщения имя файла указывается без расширения. К примеру, если звуковой файл был event1.mp3, то в пуше посылаем "sound":"event1"
     
    Во вложении патченый файл.
    Сборка fmx.jar и classes.dex как в этой теме
     
    NotificationPublisher.zip
  14. Like
    #WAMACO отреагировална Yarpda в Узнать отображаемый размер видео на контроле Mediaplayer   
    В копилку знаний. Напишу как решил задачу. Может кому-то будет интересно.
    Таких как мне надо параметров у  MediaPlayer'a конечно нет. Но есть свойство VideoSize.X и Y там можно посмотреть реальный размер воспроизводимого видео в пикселях. 
    Берем эти значения, делим высоту на ширину и выясняем астект (соотношение сторон). После чего берем ширину контейнера в котором отображает видео на форме и умножаем на этот аспект. Получаем нужную высоту контейнера. В итоге если у вас контейнер видео с привязкой Top, Bottom то его размер всегда будет пропорционально равным размеру проигрываемого видео-файла, что избавит от ненужный черных рамок.
     
  15. Like
    #WAMACO отреагировална Akad в Парсинг XML файла   
    Сохранил все (с). Не соберётся с ходу, так как тянет LACore.Log. Можно убрать полностью или заменить на своё.
     
    LACore.XML.pas.zip
  16. Like
    #WAMACO отреагировална DMS в Что невозможно сделать на Delphi для Android?   
    Это существенный минус, из-за которого AS нельзя даже относить к RAD-средствам
  17. Like
    #WAMACO получил реакцию от Ingalime в Delphi 10.2.3, AdBanner, Java, trouble   
    Да
  18. Like
    #WAMACO получил реакцию от FREEFAR в Delphi 10.2.3, AdBanner, Java, trouble   
    Да
  19. Like
    #WAMACO отреагировална ENERGY в Программа для конвертации стилей под другие платформы на основе указанного *.style   
    Набросал простенькую программу для создания стилей под все платформы на основе указанного. 
    Программа только меняет информацию о платформе, никаких других измений со стилем не делает.
    К примеру есть стиль для Android - указываем его программе, - она создает стили для Windows, Mac,  iOs на основе указанного.
    Затем их можно добавлять в StyleBook, запускать и отлаживать этот Android стиль под Windows, что сэкономит массу времени.
    Exe файл находится в \Win32\Release\Styles4Platforms.exe

     
     
    An app to convert current firemonkey style to other platforms based on the specified *.Style file. App only changes the information about the platform and does not do any other changes with the style.
     
     
     
    Styles 4 Other Platforms.7z
  20. Like
    #WAMACO отреагировална Fedor K в THTTPClient асинхронность   
    Что конкретно печально в асинхронности клиента? На какой платформе? Если с примером - то вообще замечательно.
    п.с. Еще раз повторю, что нареканий со стороны работы асинхронности не было замечено в течении года в нагруженном мобильном приложении на обоих осях, Delphi Berlin Update 2.
     
  21. Like
    #WAMACO отреагировална krapotkin в [Вебинар] FGX Native. Новейшая кроссплатформенная платформа для мобильной разработки на Delphi   
    не в качестве спора, просто мысли по поводу на основании своего опыта
    1. тормоза при старте скорее ваши, чем FMX. Моя программа стартовала абсолютно сравнимо с любыми приложениями на этом же телефоне.
    Первая форма была простой как мычание. Картинка и кнопка на ней. 
    2. Наверное, многое зависит от конкретики. Я на берлине добился вполне адекватного поведения. Охватом китайцев похвастаться не могу, но в основном все работало как минимум предсказуемо.
    3. сервисы и на новых телефонах, например на моем Xiaomi, не превратят телефон в трекер, ибо будут нещадно тормозиться и прибиваться системой. поэтому надеяться на этот функционал можно только при запущенной программе
  22. Like
    #WAMACO отреагировална sinuke в AppBar scrolling   
    Вот набросал примерчик. В примере используется обработка жеста igiPan. Для того, чтобы во время изменения размера AppBar не работал скролл у ЛистВью, использовался чуть доработанный modernListView, в котором добавлено свойство CanScroll (не помню, публиковал ли Равиль его или нет). В общем надеюсь смысл будет понятен

    Тестовый проектик: AppBarSizing.zip
  23. Haha
    #WAMACO отреагировална POV в Рисовать без Repaint   
    А с чего ты взял что контролируешь операционку? Она живёт своей жизнью и поплёвывает на самоуверенных кодеров )
  24. Like
    #WAMACO отреагировална sinuke в Возможно ли сделать такой интерфейс с ЛистВью?   
    Ну вот набросал примерчик. Он упрощенный, но смысл такой же примерно (код листвью со скриншота выше выложить не могу просто из-за того, что там идут зависимости от модели данных).
    Лично я все рисую кодом - так полный контроль того, что выводится на экран. И собственно так можно выводить практически что угодно. И не нужны никакие монструозные ТМС компоненты

    ListView_Schedule_Sample.zip
  25. Haha
    #WAMACO получил реакцию от Равиль Зарипов (ZuBy) в Служба - двухсторонняя связь   
    Сначала человек пишет...
    потом...
    Товарищ, но в АС же JAVA! :)) хохмачи конечно... удивляюсь каждый раз...
×
×
  • Создать...