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

Anatoliy

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

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

  • Посещение

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

  1. Like
    Anatoliy отреагировална krapotkin в Фреймворк для стандартного ListView   
    Вот и картинки подвезли. Идиотский Deployment отказывается переписывать старые файлы на новые....
    Пока полностью не удалил приложение, файл-описание раскладки был старый, без картинок
    Как видно из заголовка 3000+ итемов с авторасчетом высоты. 6 секунд
    Крутится плавно...

    ListViewTest.apk.rar
  2. Like
    Anatoliy отреагировална Brovin Yaroslav в Какие статьи вы хотели бы видеть в блогах?   
    http://docwiki.embarcadero.com/RADStudio/Rio/en/Firebase_Android_Support
  3. Like
    Anatoliy отреагировална mazayhin в Как узнать Device Name на Андроиде?   
    Это будет имя Bluetooth-адаптера.
    //uses System.Bluetooth; TBluetoothManager.Current.CurrentAdapter.AdapterName  
  4. Like
    Anatoliy отреагировална Yuriy2606 в Приложение не работает на Spreadtrum SC9863A   
    Здравствуйте.
    Проблема решилась очень просто - обновлением RAD до версии Embarcadero® Delphi 10.3 Version 26.0.33219.4899
    Ссылка на торрент https://softtorrent.ru/tt/3276.SoftTorrent.ru.torrent
    Предыдущую версию полностью удалил -> перезагрузка -> установка свежей версии.
    Заработало всё в штатном режиме.
     
  5. Like
    Anatoliy отреагировална qz5 в Приложение не работает на Spreadtrum SC9863A   
    Попробуй спросить на этом форуме, там есть владельцы смартфоном с таким процессором:
    https://4pda.ru/forum/index.php?showtopic=946744
    https://4pda.ru/forum/index.php?showtopic=952959
    https://4pda.ru/forum/index.php?showtopic=957113
    Я нашел такие телефоны с этим процессором.
    Попроси владельцев этих смартов установить твою и любую другую программу написанную на Firemonkey.
    https://play.google.com/store/apps/details?id=kz.rzaripov.PushTest
    Обязательно напиши результат (работает ли твоя прога и чужие на их девайсах).
    Если не работает - нам всем это надо знать.
     
    Особенно напиши в теме Doogee N10 - там много людей, проще контакт найти.
  6. Like
    Anatoliy отреагировална qz5 в Версия андроид   
    Я разбавлю своим вариантом: Leagoo Power 2.
    У него цена около 3000 рублей, из коробки идет Андроид 8.1, но можно поставить Андроид 9 и даже... Android 10!!!
    С одной стороны у меня среди родственников есть смарты от 4ой до 9-ой версии Андроид, да и моя прога сейчас на всех работает (пока она простая).
    Но с другой стороны решил поискать дешевый смарт, на который можно несколько разных версий Андроид поставить, но:
    1. чтобы это было легко, без всяких разблокировок и т.п. (у новых Xiaomi, Huawei как раз проблемы с заблокированным загрузчиком)
    2. чтобы был максимально дешевый
    3. чтобы можно было поставить Андроид 8.1 и Андроид 9, причем разные сборки
    4. чтобы не надо было ставить всякие Flash Tools и т.п. - искал, чтобы прошивка была простой и максимально без лишних программ
    Оказалось, что Leagoo Power 2 Pro:
    1. Поддерживает GSI-прошивки от Project Treble (Андроид 8.1, Андроид 9 и Android 10)
    2. стоит около 3000 рублей
    3. Для прошивки не нужно никаких лишних программ! Достаточно ADB, а он и так уже идет вместе с Delphi (можно и самому ADB ставить на комп, если Delphi нет например)
    Взял на будущее, чтобы было дешевое устройство, на котором можно экспериментировать с прошивками
    Правда сам пока не пробовал - телефон получил, всё работает, но пока закинул его в коробочку, тестирую на смартфоне с Андроид 7 (он всё равно постоянно на столе и там нужные мне программы).
     
    Как прошить ТВРП: https://4pda.ru/forum/index.php?showtopic=928803&st=120#entry81458052
    Другие версии Андроид брать здесь: https://4pda.ru/forum/index.php?showtopic=892755
    Где купить: решайте сами, многие покупают на Пандао, но я почитал отзывы - Пандао какой-то странный магазин, ничего там не покупал и не стал из-за 200 рублей рисковать.
    Я взял там, где советует официальный производитель: https://vk.com/wall-148943419_19677
    Доставила почта Сингапура за 20 дней.
    p.s. я кучу разных вариантов пересмотрел и остановился именно на нем. Самая легкая перепрошивка из всех, недорогой смарт, есть запчасти, возможность ставить разные кастомы.
    может кому пригодится ?
     
  7. Like
    Anatoliy отреагировална Barbanel в ip адрес устройства Delphi fmx android   
    Не скажу как это сделать через Indy, но через системные обертки это можно.
    Обратите внимание на метод JWifiInfo.getIpAddress
    Надеюсь вам поможет.
    NetworkState.zip
  8. Like
    Anatoliy отреагировална Vitaldj в Версия андроид   
    Вы само то поняли, что написали? Какой вопрос, такой ответ. Во всех отмеченных выше постах, так же указания на кучу торговых марок. Евгений предпочитает ксаоми. Я тоже не вижу в этом проблем. У жены ксаоми, прекрасно идут все приложения, включая приложения написанные на FGX.  Не нравиться ксаоми, выбираете из тех, что предложили другие. Так, что поосторожнее с формулировками. Следите за словами.
  9. Thanks
    Anatoliy отреагировална Евгений Корепов в Helper для TBitmap - асинхронная загрузка картинки из URL   
    Пока тестировал хелпер в боевом проекте он потихоньку оброс исрпавлениями/улучшениями:
    Загрузка из потока сделана через TBitmapSurface - это позволяет избежать множества глюков. LoadFromStream вынесен из Synchronize (основного потока) в поток HTTPClient - по результатам бенчмарка операция оказалась самая жручая. После исправления интерфейс перестал залипать совсем. Добавлен overload вариант с передачей в процедуру TListItemImage - для использования в TListView и корректной перерисовки подгруженных картинок через AListItemImage.Invalidate. unit BitmapAsyncLoader; interface uses FMX.Graphics, FMX.Surfaces, System.Net.HttpClient, System.Types, System.Classes, FMX.ListView.Types, FMX.ListView.Appearances; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromURLAsync(const AUrl : String); overload; procedure LoadFromURLAsync(const AUrl : String; const AListItemImage : TListItemImage); overload; end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; ABitmapSurface : TBitmapSurface; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then begin ABitmapSurface:=TBitmapSurface.Create; if TBitmapCodecManager.LoadFromStream(AHTTPResponse.ContentStream, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then TThread.Synchronize(Nil, procedure begin if Assigned(Self)then Assign(ABitmapSurface); ABitmapSurface.Free; end ) else ABitmapSurface.Free; end; end, AURL ); except end; end; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String; const AListItemImage : TListItemImage); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; ABitmapSurface : TBitmapSurface; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then begin ABitmapSurface:=TBitmapSurface.Create; if TBitmapCodecManager.LoadFromStream(AHTTPResponse.ContentStream, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then TThread.Synchronize(Nil, procedure begin if Assigned(Self) and Assigned(AListItemImage) then begin AListItemImage.BeginUpdate; Assign(ABitmapSurface); AListItemImage.Invalidate; AListItemImage.EndUpdate; end; ABitmapSurface.Free; end ) else ABitmapSurface.Free; end; end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then AHTTPClient.DisposeOf; end. Тестовый проект, на этот раз с ListView (по кнопке добавляется 100 итемов) прилагаю.
    BitmapAsyncLoaderListView.7z
  10. Thanks
    Anatoliy отреагировална Евгений Корепов в Helper для TBitmap - асинхронная загрузка картинки из URL   
    Для одного своего проекта сделал, поделюсь, вдруг кому пригодится. Тестировал под Windows и Android.
    Для использования просто добавьте BitmapAsyncLoader в uses, а дальше все просто:
    ImageControl.Bitmap.LoadFromURLAsync('https://bipbap.ru/wp-content/uploads/2017/10/0_8eb56_842bba74_XL-640x400.jpg'); Код юнита хелпера:
    unit BitmapAsyncLoader; interface uses FMX.Graphics, System.Net.HttpClient, System.Types, System.Classes; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromUrlAsync(const AUrl : String); end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then TThread.Synchronize(Nil, procedure begin try Self.LoadFromStream(AHTTPResponse.ContentStream); except end; end ); end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then begin AHTTPClient.DisposeOf; end; end. Архив с тестовым проектом прилагаю.
    BitmapAsyncLoader.7z
  11. Like
    Anatoliy отреагировална Евгений Корепов в [РЕШЕНО]: Как отловить кнопки пульта ДУ   
    Спасибо! Посмотрел diff - как и предполагал, Эмбаркадера поленилась скопипастить все коды, видимо в буфер обмена у них влезла только часть ? Ну как так то?

     
    Спасибо вам за проделанную работу!
  12. Like
    Anatoliy отреагировална Tumaso в Библиотека компонентов Alcinoe для Delphi   
    @aleksandrguru сами то использовали alcinoe? я пробовал использовать.
    главные минусы - автор библиотеки не утруждает себя ответами на возникающие вопросы, многие вещи буферизации изображения и обновления этого буфера работают непонятно как.
    версию для Rio я не пробовал, честно говоря уже нет желания дальше чтото делать на этой библиотеке, но вот в Tokyo при добавлении TMapView работа alcinoe ломается, изображения на экране обновляется по непонятным правилам (не спасает например прямой вызов перестроения буфера). В TALImage невозможно вручную занести изображения, только либо из файла, либо из ресурса. И так далее.
  13. Like
    Anatoliy отреагировална Barbanel в Аналог TDBGrid для FMX   
    Вы случайно не в Эппл работаете?
    "Если у нас чего-либо нет - значит пользователям это не нужно" (С)
    Шучу-шучу)))
    Разумеется я отдаю себе отчет о накладных расходах, и о траффике. Миллион записей мы и за год не сгенерируем, а больше пары тысяч отображать и не требуется, а если и потребуется то был бы инструмент - проблема решится.
    Вопрос был лишь в том, есть ли такой аналог как DBGrid.
    Пытаюсь написать нечто похожее через хелпер к TGridModel, пока получается.
    Когда меня все будет устраивать - выложу в общий доступ.
  14. Like
    Anatoliy отреагировална hippocamus в Узнать реальный размер или позицию контрола   
    Решение найдено - после добавления TLabel в панель нужно вызывать TLabel.RecalcSize.
  15. Like
    Anatoliy отреагировална Yuriy2606 в Приложение вылетает на Android 9   
    Решение:
    Do any of the following:
    1- Update the play-services-maps library to the latest version:
    com.google.android.gms:play-services-maps:16.1.0 2- Or include the following declaration within the <application> element of AndroidManifest.xml.
    <uses-library android:name="org.apache.http.legacy" android:required="false" /> Закинул сюда, может кому-то пригодится.
    Ссылки:
    https://stackoverflow.com/questions/50461881/java-lang-noclassdeffounderrorfailed-resolution-of-lorg-apache-http-protocolve
    https://www.delphiworlds.com/2019/02/a-fix-for-using-tmapview-on-android-9-devices/
  16. Like
    Anatoliy отреагировална Tumaso в TIDTCPClient, TIDTCPServer   
    Чтобы приложение оставалось активным в фоновом режиме (я про андроид), приложение должно отображать постоянное уведомление.
    Сам такое уведомление еще не реализовывал, поэтому технической реализации не подскажу (пока по крайней мере)
  17. Like
    Anatoliy отреагировална Alex7wrt в Подключение Admob к iOS   
    Получилось, но только с подключением дополнительных фреймворков. Использовал JVEsuite.
  18. Like
    Anatoliy отреагировална Slym в Версия андроид   
    У меня IPhone6 вдулся от постоянного висения на шнурке...
    Теперь правило вечером отключить... но нет! нет отладки - нет зарядки и садится в ноль!
    Теперь правило в понедельник всегда на зарядку...
  19. Like
    Anatoliy отреагировална Barbanel в Версия андроид   
    OMG!!!
    Я на днях обнаружил что наш Huawei P7 Lite, которому уже почти два года (и все эти два года он бездумно лежал на зарядке, от компа) ощутимо вздулся. Mea culpa.
    Другие ихние модели  - норм (правда они чуть помоложе).
    Отключил от зарядки, на всякий)))
  20. Like
    Anatoliy отреагировална Barbanel в Настройка Android SDK   
    Хех, будет весело ?
    Android NDK (native development kit) – это набор инструментов, которые позволяют реализовать часть вашего приложения используя такие языки как С/С++.
    Для того чтобы среда могла использовать эти утилиты при необходимости. Чуть больше про NDK можно прочитать здесь.
    Каждый АПИ-левел содержит новые возможности или исправления, отсутствующие в предыдущем АПИ.
    Какой именно АПИ нужен вам - можете решать сами.
    Различают минимальный АПИ (грубо говоря, это минимальная версия Андроида на котором программа может запуститься, но не обязательно будет работать в полном объеме)
    и целевой АПИ (версия Андроида, для которой собсно программа и предназначена).
    Как правило раньше хватало минимального АПИ 14, а целевой - 22 (если ине не изменяет память, не ручаюсь что цифры точные).
    Сейчас эти цифры изменились, минимальный если я не ошибаюсь 22 или 24, целевой - от 26 и выше. Связано это с тем, что Гугл закручивает гайки в плане безопасности (или просто загручивает гайки, потому что тупо может), и объявляет старые версии устаревшими и неподдерживаемыми.
    Может да, а может и нет. Смотря какие фичи из сдк используются.
    Но вообще, чаще всего да, могут.
    Добро пожаловать в новый чудный мир! ))))))
    На самом деле все работает, просто вы кое-что не сделали.
    Указывать разрешения в настройках проекта более недостаточно. Нужно, да, но теперь этого мало.
    Нужно запрашивать эти разрешения у пользователя в процессе работы программы, динамически. Более того, программа должна корректно отработать, даже если пользователь не выдал вам эти разрешения.
    Т.е. если вы хотите доступ к камере чтобы сфоткать что-то, вы спрашиваете пользователя, что программе нужна камера. Пользователь может и отказать, вы проверяете его ответ и в случае отказа делаете вид что вам не нужна камера, а не крашитесь как раньше)))
    Точно так же с другими разрешениями. Если программе в принципе необходимо разрешение, и без него она теряет свой смысл - то сообщать об этом пользователю.
    Тем с запросом разрешений на этом форуме - завались, есть даже примеры в самой Студии. Это на самом деле несложно.
  21. Like
    Anatoliy отреагировална Евгений Корепов в Версия андроид   
    К сожалению нисколько. Тут просто здравый смысл - вы приобретаете телефон хорошего качества, с нормальной гарантией и сервисом. Программа Android One гарантирует вам обновления (ежемесячные обновления и обновления OS) - это значит что устройство сможет помогать вам в разработке не один год. В последствии вы сможете продать устройство за приемлемые деньги, а не за 300 рублей (как раз по такой цене я распродал мусор Dexp купленный изначально, 4 года назад, по неопытности). Вот и все аргументы, никакого скрытого умысла.
    P.S. Добавлю - один из телефонов Dexp взорвался у меня прямо на столе. Чудом не сгорел рабочий кабинет, но часть рабочих бумаг погорело, слава богу все само потухло. Меня на месте в этот момент не было, телефон был подключен к компу - до этого занимался отладкой одного из приложений. Телефон превратился в оплавленный комок пластмассы. ))
  22. Like
    Anatoliy отреагировална Евгений Корепов в как очистить память клавиатуры   
    Ага, теперь нормально воспроизводится.
    Самый простой способ избежать этого, вот такой:
    procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text:=EmptyStr; Memo1.ResetFocus; Memo1.SetFocus; end; Правда будет видно что виртуальная клавиатура исчезает, а затем опять появляется. 
  23. Like
    Anatoliy отреагировална Евгений Корепов в Wifi Multicast packets   
    Я использую для такого Indy, там все готовенькое, в том числе и TIdUDPServer со всем нужным вам функционалом (и потоками).
    Вот в теме немного обсуждения 
     
  24. Like
    Anatoliy отреагировална Vitaldj в Версия андроид   
    Поосторожнее на поворотах. Тут спросили, Евгений ответил. Причём тут реклама?
  25. Like
    Anatoliy отреагировална Barbanel в Компоненты вкладки с другой формы/фрейма   
    У нас было аналогично, под Андроидом наблюдались микрофризы, а под Виндовс все выглядело гладко.
    Возможно производительности ПК под Виндовс с лихвой хватает, а под Аднроидом ощущается нехватка скорости/оптимизации.
    Я думаю тут Ярослав мог бы дать ответ.
×
×
  • Создать...