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

Андрей Рулин

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

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

  • Посещение

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

    1

Андрей Рулин стал победителем дня 9 октября 2019

Андрей Рулин имел наиболее популярный контент!

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения Андрей Рулин

  1. Поиск по гуглу показывает, что в apks кроме папки splits должна быть ещё и standalones, но у меня такой нет.
  2. Хочу проверить, правильно ли работает тот aab, который я пытаюсь загрузить в магазин приложений. Если в самом магазине взять версию для тестирования он вместо нормального apk весом в 17 Мб(генерируется в режиме Realise-Delpoyment) мне вываливать два файла. base-arm64_v8a.apk - этот не устанавливается base-master.apk - этот устанавливается но не запускается. Я так подозреваю, что их надо оба установить. Второй путь - это я лично используя bundletool-all.jar пытаюсь преобразовать aab в apk При это выдаётся куча apk типа base-xxxhdpi.apk(несколько килобайт) , base-master_2.apk (10 мб), base-arm64_v8a.apk (7 мб) и даже base-arm64_v8a_2.apk весом 33 Мб, что из них ставить на телефон совершенно без понятия. Ни один из apk и близко размером не совпадает с тем , что генерируется Delphi в режиме Realise-Delpoyment(17 мб).
  3. Кто как решает проблему быстрого переноса приложения с VCL на FMX? Я лично написал самописный конвертер, который во первых переносит компоненты, во вторых устанавливает автомасштабирование для Android. Во вложение то, что получается на выходе. Может кому-то пригодится. Вот адрес конвертора https://github.com/stalker1917/DfmToFMX Возможно у кого есть способы делать перенос быстрее/лучше? Debug.zip
  4. Должен признать, что это я лажанулся, событие OnClick таки отрабатывается, разночтение между Andoroid и Windows начинаются дальше, но это уже вопрос другой темы.
  5. Опять мой ничтожный разум не может постигнуть гениальных замыслов , авторов FMX Компонент TSpeedButton в Android64(в 32 не пробовал) никак не реагирует на событие OnClick и OnMouseUp ( событие OnMouseDown не пробовал). В Win32 всё нормально. HitTest установлена как True. При нажатии на кнопку вокруг неё появляется серый ореол, при повторном нажатии исчезает. На кнопке установлен произвольный стиль. Среда Delphi 11. Может что с настройками? Или есть обходной путь? Собственно мне надо , чтобы как на картинке было 4 кнопки.
  6. Ну кривенько-корявенько, заработало всё-таки по первыому подходу try Port.Disconnect; Port.Suspend; Port.Connect(PortIndex,False); except //Подавляем вывод сообщения о глюке. end; ... procedure TServerConnectionTH.Connect(index: integer;IsStart:Boolean=True); begin if (ServerConnectionTH = nil) and ManagerConnected then begin FAdapter := FBluetoothManager.CurrentAdapter; if (FSocket = nil) or (ItemIndex <> index) then begin if index > -1 then begin LDevice := FPairedDevices[index] as TBluetoothDevice; FSocket := LDevice.CreateClientSocket(StringToGUID(ServiceGUI), False); if FSocket <> nil then begin ItemIndex := index; //FluetoothManager.cancelDiscovery(); //Может и не даёт ничего FSocket.Connect; if IsStart then Start else Resume; end; end; end; end; end; procedure TServerConnectionTH.Disconnect; begin if (FSocket <> nil) then FSocket.close; FSocket := nil; end; Добавил в Disconnect FSocket := nil; + После дисконнекта остановку потока. Кривенько, потому, что информацию об отключении я получаю по факту того, что мне перестали подступать данные. А наверняка есть напрямую решение.
  7. Да, так работает, хотя в целом коннект и так и так занимает порядка секунды. Про подписку вы имеете ввиду что-то вроде этого кода на Java? https://www.codeproject.com/Articles/814814/Android-Connectivity @Override protected void onResume() { super.onResume(); // Register the BroadcastReceiver for ACTION_FOUND IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); this.registerReceiver(broadcastReceiver, filter); } @Override protected void onPause() { super.onPause(); this.unregisterReceiver(broadcastReceiver); }
  8. На это и пишет Можно выбрать такой вариант вроде как это оно, но неточно.
  9. Я стал при восстановлении соедиениения делать дисконнект через if (FSocket <> nil) then FSocket.close; А потом реконнект. Стала вываливаться ошибка "socket closed" . Видимо не рекоенктиваться потом. По поводу bluetoothAdapter.cancelDiscovery(); Пишет, что cannot access to protected symbol...
  10. Всё таки Canvas.FillText, работает, как не странно. Пойду таким путём. Я к сожалению не понял, что собственно в битмап должен обрисовывать и каким оператором. У меня есть текст String, который я сейчас засовываю в Label. Это и есть "модель данных" в ваших терминах?
  11. Сделал работу с BLueTooth , как в примере https://www.programmersforum.ru/showthread.php?t=312413 procedure TServerConnectionTH.Connect(index: integer); begin if (ServerConnectionTH = nil) and ManagerConnected then begin FAdapter := FBluetoothManager.CurrentAdapter; if (FSocket = nil) or (ItemIndex <> index) then begin if index > -1 then begin LDevice := FPairedDevices[index] as TBluetoothDevice; FSocket := LDevice.CreateClientSocket(StringToGUID(ServiceGUI), False); if FSocket <> nil then begin ItemIndex := index; FSocket.Connect; Start; end; end; end; end; end; Всё отлично работает, проблемы начинаются если разнести устройства и связь обрывается. После этого они уже между собой знаться не хотят и выдаётся сообщение 'IOException: Broken Pipe' . Иногда восстановления связи даже после однократного перезапуска программы не происходит. Кто-то решал подобную задачу?
  12. Если в PaintBox - всё равно затирается. То есть если код заменить на PaintBox1.Canvas.BeginScene(); PaintBox1.Canvas.DrawBitmap(MainBmp,r1,r2,1,False); PaintBox1.Canvas.EndScene(); то затирается. Причём даже игнорируется расположение этого PaintBox на форме. Второй вариант какой-то изврат. Тогда эти Label вообще проще выкинуть на помойку и использовать что-то вроде Canvas.FillText (не удивлюсь, правда если это работать не будет, в VСL по крайней мере Canvas.TextOut работал) . Собственно вот пример что должно быть , есть карта, есть цифры. Цифры должны быть текстом, потому, что динамически меняется цвет. И числа тоже могут меняться.
  13. Если я в OnPaint формы провожу такую прорисовку Canvas.BeginScene(); Canvas.DrawBitmap(MainBmp,r1,r2,1,False); Canvas.EndScene(); То затираются все Label , Edit и всё прочее на форме. Как сделать ,чтобы у меня отрисовывалась картинка , которую я хочу. А поверх неё эти Label , Edit и т.д. ?
  14. К сожалению , до сих пор в Runtime нельзя менять цвет прогресс бара, так что по сравнению с VCL версии польза от него так себе. Легче что-то своё запилить. Кстати может кто-то уже запилил?
×
×
  • Создать...