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

Steepe_Hare

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

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

  • Посещение

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

  1. Like
    Steepe_Hare отреагировална Brovin Yaroslav в ShowModal - почему нельзя использовать блокирующий режим?   
    Добрый день,
    На андроиде в принципе не поддерживаются синхронные диалоги. И причина прежде всего в архитектуре андроид приложения.
    Если говорить о нативном приложении, то оно состоит из двух потоков Java UI Thread  (Он же главный поток приложения) и Delphi Thread. FireMonkey работает в делфи треде. В то время, как все нативные вещи (диалоги, пикеры, браузеры, карты, медиа проигрыватели и тд) все они работают в Java UI Thread. Помимо этого, когда активити (работает в так же в java UI thread) меняет своё состояние (запущена, приостановлена, остановлена, возобновлена и тд), она должна синхронизировать это состояние в делфи треде. Или другими словами передать эту информацию в делфи тред. Для передачи используются пайпы с событиями. Поэтому пока делфи тред не прочитает новое состояние активити, Java UI thread будет находится в режиме ожидания. Чтение в делфи потока нового состояния происходит в цикле ProcessMessage.
    Теперь возвращаясь к диалогам. Диалоги нативные, поэтому они должны быть синхронизированы (с ожиданием) с java UI thread. С другой стороны, в момент отображения диалога происходит событие из java ui thread Window Gained Focus, возникающее, когда в приложении меняется фокус между окнами (диалоговое окно в данном случае перехватывает фокус). Но как мы выяснили, это приводит к обратной синхронизации с делфи тредом.
    Отсюда возникает классический deadlock. 
    P.S. Это верно до версии Берлин включительно.
  2. Like
    Steepe_Hare отреагировална rareMax в Проиграть несколько аудиофайлов параллельно   
    Мы обсуждали это в чате. К сожалению, сошлись что нужно использовать либо медиаПлееры либо через bass.dll
  3. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в ShowModal not implemented on this platform   
    Нужно поменять в форме авторизации последовательность, сначала закрытие потом выполнение анонимной процедуры.
    Я не проверял, но попробуйте
  4. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в ShowModal not implemented on this platform   
  5. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в "Неподдерживаемый тип файла: application/apk"   
    в папке с проектом файл AndroidManifest.template.xml, в нем можно указать нужный SDK
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> в папке Android\<BuildConfig>\AndroidManifest.xml, можно посмотреть какой сейчас используется
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />  
  6. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в Занимаемое место в ОЗУ   
    видимо как-то так, только указать нужно будет свой процесс
    http://stackoverflow.com/questions/5963402/android-how-to-track-the-memory-usage-of-an-any-running-app-on-device-programm
  7. Like
    Steepe_Hare отреагировална voytalexey в "Неподдерживаемый тип файла: application/apk"   
    А на Самсунге какая версия Андроида? Может просто созданный вами apk-файл требует версии выше чем 4.1.2
  8. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в Красивые интерфейсы мобильных приложений   
    вот пару скринов проектов, по мне так не скучные
     
  9. Like
    Steepe_Hare отреагировална krapotkin в Узнать свой Longitude и Latitude   
    дело в том, что запуск сервиса определения координат требует времени. значительного.
    поэтому нельзя взять и написать
    LocationSensor1.Active := True; Lat := LocationSensor1.Sensor.Latitude; Long := LocationSensor1.Sensor.Longitude; нужно посмотреть демо из поставки студии. там все красиво и подробно расписано
    есть обработчик, который будет вызван, когда новые координаты будут получены
    а пока - пишите не определено и крутите AniIndicator
  10. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в Ресурсы и ссылки для новичка в доступе к MySQL   
    ребята ну сколько можно уже, одно да потому. миллион раз говорилось что для мобилки не подходит прямой доступ к БД! это не десктоп, тут совсем другой подход, не наступайте на грабли
  11. Like
    Steepe_Hare отреагировална Brovin Yaroslav в Feature and bug fix list for RAD Studio 10.1 Berlin Subscription Update 2 - Anniversary Edition   
    Прочитать всю новость целиком на сайте Embarcadero
  12. Like
    Steepe_Hare отреагировална Andrey Efimov в Файловая система Android и Embarcadero   
    Правильно.
    Если это технические файлы, то там им и место, ну максимум в папку приложения, на сд карту вынести. Мусорить на устройстве пользователя не хорошо!
    Если это например фотографии из галереи, то им в галерее место.
    А так можете попробовать писать в общие папки. Если вы смотрели ссылки которые я вам кидал, то скорее всего заметили, что для общих папок в названии метода указано слово "Shared".
    К сожалению, не помню, есть ли какие-то нюансы по записи в такие папки начиная с Android KitKat. В этой версии ввели жёсткие ограничения, чтобы приложения не мусорили + это дополнительная защита. Я писал про это тут Android 4.4 и запись на внешнюю карту памяти... (уже не важно, ниже дал ссылку на справку)
    Попробуйте, поэкспериментируйте с путями...
     
    p.s. Если уж совсем невмоготу, то попробуйте создать папку для приложения во внутренней памяти и там хранить все доп. файлы
     
    Дополнение.
    Вот справка на русском Сохранение файлов, собственно, там написано всё тоже самое.
  13. Like
    Steepe_Hare отреагировална Rusland в Файловая система Android и Embarcadero   
    Надо заменить путь на .\assets\internal , тогда System.IOUtils.TPath.GetDocumentsPath
  14. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в Скоро Новый год! Эффект снега   
    для Delphi полно решении, все методы и компоненты одинаковы с VCL версией. Если не получится, поправим. Только не забудьте приложить демо-проект
  15. Like
    Steepe_Hare отреагировална Rusland в Компонент наподобие "Скрепка-помощник"   
    Можно создать некую анимацию. Например, используя TBitmapListAnimation
    Вот только как объединить изображение и звук (если он есть) не знаю.
    Balloon можно сделать с помощью компонента TCalloutPanel.

     
  16. Like
    Steepe_Hare отреагировална Pax Beach в TMediaPlayer и ресурсы   
    Про генофонд — это правильно ;-)
    Для некоммерческого использования есть библиотека BASS.
    Если не ищутся Android модули, значит не все хорошо в системных путях или путях проекта:

    в Browsing Path должна быть такая строчка.
     
    Или в настройках проекта в Serch Path указать, где искать библиотеки проекта:

     
  17. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в Простой пример передачи данных на сервер   
    Посмотрите тему про пуши, там выкладывали подобное
    UPDATE:
    @master webs выкладывал
  18. Like
    Steepe_Hare отреагировална Rusland в Видео из картинок   
    Вот пример Осипова c BitmapListAnimation... но у меня почему-то картинка едет в сторону при анимации. Может кто-нибудь сможет разобраться в чем причина?
  19. Like
    Steepe_Hare отреагировална Error в Когда много таймеров   
    Добавлю что менеджер событий - это единственное верное решение, в противном случае (куча таймеров) приложение станет настолько не детерминированным, что глюки будут лезть отовсюду, а нормальная отладка просто невозможна.
  20. Like
    Steepe_Hare отреагировална Brovin Yaroslav в У меня не работает DrawBitmap   
    Все ясно. У вас ошибка. Посмотрите внимательно на параметры функции Canvas.DrawBitmap.
    Первый прямоугольник - это область из битмапа, которую вы будите рисовать. Второй прямоугольник - это область на канве, куда вы будите выводить часть битмапа. Вот так будет правильно:
    Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyBitmap.BoundsF, MyRect, 1); P.S. В следующие такие вопросы обязательно прикрепляйте ваш проект. Это сэкономит кучу времени на ненужные вопросы.
  21. Like
    Steepe_Hare отреагировална Brovin Yaroslav в У меня не работает DrawBitmap   
    Повторюсь, Проект?
  22. Like
    Steepe_Hare отреагировална Brovin Yaroslav в Когда много таймеров   
    В любом случае рост таймеров всегда будет сказывать на скорость приложения и запаздывания. Поскольку таймеры в fmx выполняются в главном потоке, то соответственно все OnTimer события будут вызываться по очереди. И чем дольше занимает выполнение этих событий, тем таймеры будут менее точны.
    Предел количества таймеров не знаю :-) НО любую задачу можно выполнить несколькими способами. В вашем случае нужно просто сделать типа Менеджер расписаний, который будет базироваться на одном всего лишь таймере и в OnTimer проверять наступило ли событие или нет.
  23. Like
    Steepe_Hare отреагировална Rusland в Благодраность   
    http://edu.fire-monkey.ru/landing/index.html
  24. Like
    Steepe_Hare отреагировална Kitty в Благодраность   
    Большое спасибо Ярославу, что находит время и фиксит проблемы, которые мы тут поднимаем. И курсы его великолепные!
    Спасибо профессионалам, таким как ZuBy, который терпит наши глупые вопросы и помогает.
    СПАСИБО!!!
  25. Like
    Steepe_Hare получил реакцию от Pax Beach в Другая система координат?   
    Объясните, пожалуйста, почему этот простой код работает по-разному в Win32 и на Андроиде? Картинка 150x200 в битмап уже загружена и нужно ее расчертить.
     
    Image1.Bitmap.Canvas.BeginScene; try Image1.Bitmap.Canvas.Stroke.Kind := TBrushKind.Solid; Image1.Bitmap.Canvas.Stroke.Color := TAlphaColors.Blue; for I := 0 to 9 do Image1.Bitmap.Canvas.DrawLine(TPointF.Create(I * 15, 0), TPointF.Create(I * 15, Image1.Bitmap.Height), 1); for J := 0 to 9 do Image1.Bitmap.Canvas.DrawLine(TPointF.Create(0, J * 20), TPointF.Create(Image1.Bitmap.Width, J * 20), 1); finally Image1.Bitmap.Canvas.EndScene; end; Под Виндой создается точная сетка 10x10, а под Андроид как будто другая система координат и территория делится на огромные квадраты (больше, чем надо).
×
×
  • Создать...