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

Yarpda

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

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

  • Посещение

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

    8

Сообщения, опубликованные Yarpda

  1. Оказалось что Z-order тут не причем. Все дело в том что в 10.3. фактически перестала работать команда Application.ProcessMessages (по крайней мере в андроид). Элементы интерфейса во время выполнения процесса не обновляются, что печально, но это как говорится уже другая тема...

  2. Заметил, что при переходе на 10.3 перестало получаться выводить картинку поверх ListView (например) под Андроид. В предыдущих версиях с этим проблем не было. Полагаю, что проблема как-то связано с нововведением в 10.3 с Z-order. Но не смог найти какую-либо информацию по этому поводу. Как им пользоваться, какие особенности и т.д.

  3. Я почему-то регистрируюсь для скачивания CE на сайте Emb. Ссылка для скачивания интерполятора открывается, а письмо на почту с лицензией не приходит. Хотя написано, что проверьте почту мы все направили.

    Никто с таким не сталкивался?

  4. 21 час назад, Brovin Yaroslav сказал:

    В 10.3 расширено апи уведомлений для возможности указывать канал уведомлений для андроида. Это должно решить вашу проблему.

    Ага, осталось всего-то решить проблему перехода на 10.3... ?

  5. В 21.11.2018 в 00:02, Barbanel сказал:

    Посмотрите здесь

    Также посетите гитхаб этого чувака, скачайте его библиотеку KastriFree. Там есть работающий пример уведомлений.

    Как я понял, там только для определенной версии Delphi

    Цитата

    ***** These instructions apply to Delphi 10.2.3 ONLY. You cannot apply this patch for any other version of Delphi *****

    Получается у кого версия меньше (например 10.1) то обойти уже никак?

    Еще интересно будет ли новая система разрешения работать в 10.3 из коробки (но это уже другой вопрос).

  6. Я пробовал прикрутить obb файл, но распаковывать его как-то не догадался. Да и это наверное не совсем правильно, т.к. распаковывать и так не маленький файл повторно как то совесть не позволяет. На сколько я знаю в android (не FMX) есть механизм работы с файлами внутри obb напрямую (как с папкой), но как это сделать под FMX так и не нашел... 

  7. Да такая же петрушка при TargetSDK выше 24 начинается с медиаплеером. Он вообще создает вылеты приложения, сопровождающиеся похожими артефактами. И главное как это исправлять вообще не понятно, т.к. явно ошибки где-то не в своем коде, а гораздо глубже...

  8. 5 часов назад, Tumaso сказал:

    Абсолютно неправильное понимание.

    2. использовать на устройстве sdk наиболее приближенной к targetSdkVersion (но не превышая) - т.е. если например targetSdkVersion="23", то на Android 4.3 будет использовать sdk 18, на android 8.1 - sdk 23

    С MinSDK все понятно. С TargetSDK "не все так однозначно". Ставится она не средой разработки, а руками в манифесте и никто этого не проверяет. Может быть это и нормально, но для меня как начинающего программиста на Андроид это немного смущает. Хотя по идее этот SDK влияет на поведение программы на конечном устройстве.

     

    6 часов назад, Yarpda сказал:

    TargetSDK ставит система в зависимости от того на какой версии SDK был действительно собран этот пакет.

    28 минут назад, haword сказал:

    нет, это не зависит от версии. это напрямую зависит от поддержки программой этой sdk. например в делфи сейчас официально нет поддержки запроса разрешений. а значит выставить целевой sdk 23  уже не можем. 

    Таким как раз я и хотел бы идеть поведение среды разработки. А сейчас мы как и можем поставить любую ТаргедСДП, хоть 28-ую, хотя в действительной поддержки этого SDK в приложении нет. И ни Emb, ни Market никак на это не реагирует.  В общем для меня этот подход весьма странен. Хотя может я чего-то и не понимаю...

  9. 36 минут назад, Равиль Зарипов (ZuBy) сказал:

    1) уже ответил @haword. Нужно обеспечивать совместимость, т.к. последние годы андроид усиленно работает над безопасностью

    разделили разрешения на обычные и опасные, закрыли доступ к мак адресам

    Ага, видимо по-этому Эмбаркадеро ставит в MIN и TargetSDK только 14 и не дает менять в настройках проекта. Чтобы обеспечить поддерживаемую совместимость. )) А если хочешь, то ты конечно можешь в манифесте руками поменять, но мы дальше не причем.  (Интересно как они будут выходить из этой ситуации в связи с новой политикой Google про TargetSDK). Мне кажется как должно быть: миниальное СДК ты ставишь, а TargetSDK ставит система в зависимости от того на какой версии SDK был действительно собран этот пакет. (Кстати я уже столкнулся с проблемами с MediaPlayer при ручной смене TargetSDK более 17). А как быть тем кого Гугл заставит поменять ТаргетСДК в скором времени?

    43 минуты назад, Равиль Зарипов (ZuBy) сказал:

    2) как понять "И Google play это никак не ловит"?

    Ну как понять. Когда закидываешь APK на Маркет, Гугл анализирует содержание пакета. По-идее он мог бы и проверять под каким SDK собран пакет и какой стоит в TargetSDK и говорить о несоответствии и запрещать публиковать такие APK. Но он этого не делает, поэтому можно собрать под любым SDK и в манифесте руками поставить любой и все пройдет, а действительную совместимость никто не проверяет. Вот что я имел ввиду.

  10. В копилку знаний. Напишу как решил задачу. Может кому-то будет интересно.

    Таких как мне надо параметров у  MediaPlayer'a конечно нет. Но есть свойство VideoSize.X и Y там можно посмотреть реальный размер воспроизводимого видео в пикселях. 

    Берем эти значения, делим высоту на ширину и выясняем астект (соотношение сторон). После чего берем ширину контейнера в котором отображает видео на форме и умножаем на этот аспект. Получаем нужную высоту контейнера. В итоге если у вас контейнер видео с привязкой Top, Bottom то его размер всегда будет пропорционально равным размеру проигрываемого видео-файла, что избавит от ненужный черных рамок.

     

  11. Полагаю, что "программно нажать"  не получится. Я когда-то давно решал подобную задачу под Win обработкой вводимого значения в onChange (в мобильном есть событие OnTyping - оно наверное лучше будет). Берем набранный текст в переменную, анализилируем на пробел и первый следующий символ, если символ в нижнем регистре, меняем на верхний и закидываем подмененный текст в поле ввода, ставим курсор в конец. пользователь при этом ничего не заметит, просто буква станет большой.  Или уже обрабатывать все поле, после окончания ввода (но тогда надо будет объяснить пользователю что вводить можно маленькими, он сам потом сделает как надо).

    Можно наверное и OnKeyUp поиграться с подменой отдельных символов, но как оно в мобильном будет работать не знаю, но в теории должно...

  12. 3 минуты назад, Равиль Зарипов (ZuBy) сказал:

    бред какой-то.

    Ну почему же бред. В настройках SDK делфи стоит ссылка на 23 SDK. В Манифесте руками правлю на любой от 14 до 28. Все собирается. В маркет заливается. Или я, что-то не так делаю?

  13. 10 часов назад, ENERGY сказал:

    Желательно выбирать тот SDK, который советует EMBT т.к. он протестирован = более стабильная программа (прога все равно будет прекрасно работать под последним Android 8). Плюс еще новый SDK сам по себе может быть сырой. 

    Но скоро нам всем придется делать с последними SDK :

    Starting in late-2018, all new and updated apps will be required to target an SDK that is no more than 1 year older than the current codename release.

    https://www.androidpolice.com/2017/12/19/play-store-require-new-updated-apps-target-recent-api-levels-distribute-native-apps-64-bit-support/

    Тут то как раз вопрос, это на что-то может повлиять (исправление, например исправление ошибок, которые были в прошлых SDK, а в новых типа нет. Или может быть компоненты по другому как-то начитают выглядеть и т.д.).

    А TargetSDK можно прописать какой-хочешь вручную и собрать под каким хочешь... И Google play это никак не ловит. А версия NDK например на что-то влияет или вообще можно не обращать на это внимание?

  14. Экспериментальным путем выяснено, что TMediaPlayer под Андроид начитает гораздо менее стабильно работать (по крайней мере с видео) если в манифесте MinSDKVersion или TargetSDKVersion стоит больше 17.

    Обычно глюки проявляются при открытии новых файлов, или закрытии форм, на которых размещен MediaPlayerControl. У меня вплоть до видео-артефактов доходит, когда закрываешь форму, на которой проигрывалось видео. В портретном режиме через раз,  а в ландшафтном - почти постоянно (в зависимости от формата воспроизводимого файла). Иногда не вылетает, а просто дико артефачит  (жаль скрин снять не получилось, т.к. система во время артефактов не отвечает). Формат после 2-3 секунд закрывается, но то место где на закрытой форме находился MediaPlayerControl на другой форме перестает отвечать на нажатия, область где контейнера не было - на нажатия реагирует. В общем тихий ужас. Проверялось на нескольких устройствах (телефон (андроид 6.0) и планшет (адроид 4.4.2)).

    Ставишь TargetSDK- 18 и выше, - постоянные глюки. Ставишь 17 и ниже (14 - по умолчанию) - полет нормальный. Закономерность четкая и стабильная, проверял раз 15. Пробовал каждую версию SDK.

    С чем связано не знаю. Пост просто так, в копилку знаний, возможно кто-то тоже сталкивается с подобными  проблемами (я полтора дня потерял, выясняя почему перестало работать, хотя вчера работало и в коде особо ничего не менялось).

     

  15. Google постоянно обновляет и выпускает новые SDK. Хотелось бы для себя прояснить есть ли смысл собирать свой пакет в самых последних версиях SDK. Есть ли в случае FMX разница под каким SDK и NDK (настройки SDK Manager) собрано приложение?

    И если есть то какая?

  16. 1 минуту назад, FREEFAR сказал:

    А если сам плеер уничтожать и пересоздавать - все равно беда?

    По началу MediaPlayer был на форме, которая создавалась динамически. Но там глюки были и на нормальных машинах, поэтому от такой реализации пришлось отказать. Как временный выход - перенес его в датамодуль и использовать только один экземпляр MediaPlayer, плюс доработки напильником при закрытии формы нужно было делать. В конце концом более менее приемлемый вариант получился. На машине с 3 гб Ram нормально. Где 1 гб - пару раз открытий видео и вылет (хотя это конечно и от версии андроида зависить или еще от чего-то).

  17. Вопрос такой: Есть видео, которое проигрывается, оно может быть разных размеров (3:4, 16:9  и т.д.). Контрол на котором воспроизводится видео изначально фиксированного размера. От этого получается в  одних видео обрезки по краям, что не очень красиво. Хотелось бы сделать так чтобы контрол сам менял свои размеры (по вертикали) в зависимости от того какого формата кадра видео воспроизводится.Для этого нужно знать какую реальную область на контроле занимает сам "квадрат" видео. . Есть идеи как это можно сделать?

    Delphi 10.1

  18. Up темы. Подскажите куда копать. На новых устройства с большим объемом памяти еще куда ни шло, но на старых, вылеты почти сразу наблюдаются.

  19. Подскажите, существуют ли  в FMX механизмы работы с файлами расширений (OBB)? В андроид SDK есть возможность скачать этот библиотеку (Google play APK Expansion library), но как ее использовать в FMX проекте никакой информации нет. Подскажите кто-то уже сталкивался с такой проблемой? 

    P.S. для справки: APK Expansion file можно загрузить в Google Play, если размер APK превышает 100 мб. Данный файл представляет из себя архив с расширением obb, который содержит дополнительных контент приложения. Автоматически помещается помечается в папку androind/obb/<project_name>/file.obb.

     

  20. 12 минут назад, DMS сказал:

    А как можно сделать Листбокс трехколоночным?

    LB можно сделать каким угодно, наверное даже сразу с TEdit (сам правда не проверял, более опытные форумчане поправьте меня, если я ошибаюсь), но это надо знать как со стилями работать. В целом там ничего сложного (на форуме даже есть видое-курсы по этому поводу, но к сожалению платные...). Имхо без понимания принципа работы со стилями в FMX довольно сложно, хотя и можно... но в итоге лично у меня вышло, что пришлось городить огород из 3 страниц кода, чтобы нужные данные в LB выводить, а в итоге оказалось, что можно было тоже самое 5 кликами мышки сделать в дизайнере стилей...

  21. Мое мнение, что TEdit Должен быть 1 напротив него кнопка добавить (лучше в виде иконки нативной какой-нибудь). При ее нажатии, информации из TEdit Уходит в TListBox (чтобы человек видел, что он уже добавил). Как вариант, если нужно исправить щелкаем по строке LB, и данные из itema попадают в тот-же TEdit для исправления. Человек исправил, нажал на галочку, измененные данные ушли в TListBox. А в листбокс можно напихать сколько угодно, у него свой скрол если что есть.

  22. 1 час назад, DMS сказал:

    вот здесь бы с примерчиком)

    Вот здесь например есть пример решения, там же есть ссылка на проект (это ModernLV. http://blog.rzaripov.kz/2016/11/0-modernlistview.html), но думаю что и из стандартного LV можно тоже самое добиться при желании. Тут конечно проще.

  23. 48 минут назад, DMS сказал:

    Вот допустим, что есть список из 4 тыс. элементов, которые нужно отобразить в TListView. Сразу грузить всё - не вариант. Советуют загрузить небольшую часть, а остальное догружать по мере прокрутки. А как это реализовать? (какое событие отслеживать, какие подводные камни могут быть).

    По-моему тут все просто. Грузим приемлемое количество, смотрим на каком месте скрола пользователь, если близко к концу добавляем еще несколько LV.AddObject(LVItem) и так до бесконечности... 

×
×
  • Создать...