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

Андрей Рулин

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

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

  • Посещение

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

    1

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

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

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

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

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

  1. А хочеться. Например сделав свою зарядку. Которая бы подавала питания и одновременно была бы подключена к периферии через D+ и D-. И надо сказать Levovo TB-8505F именно это и разрешает к примеру. Но у него зато обратная проблема. Я зарядил до 100% и вот тогда почему-то планшет с какого до бодуна не хочет обмениваться данными и говорит No Permisson. То есть когда идёт зарядка, он обменивается данными. А когда зарядки не идёт, как раз и не обменивается, хотя ожидается , что он себя будет вести ровно наоборот. При этом у меня в манифесте стоит <uses-feature android:name="android.hardware.usb.host" /> <uses-permission android:name="android.permission.USB_PERMISSION" /> <permissions> <feature name="android.hardware.usb.host"/> </permissions> ... <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" /> ... <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> AndroidManifest.rar
  2. Olvion Да, FMX известна своими глюками. Особенно под Android , одна и та же программа может нормально работать в Windows, но косо на андроиде. 1. Delphi 11 немного исправит ситуацию , но не радикально. При переходе на 11 надо проекты все заново создать и туда файлы со старого перенести. Иначе на Андройде не запустится. 2. В графике надо много чего руками инициализировать , что в VCL по умолчанию стоит. 3. Тяжёлые вычисления надо в отдельный поток помещать, костыли типа application.processmessages в FMX нормально работать не будут , особенно на Андройде. 4. Логирование наше всё, особенно опять же под Андройд. 5. На Андройде надо писать, если есть много кода на Delphi который, надо перенести, за этим FMX и нужен. Для создания приложения с нуля Java лучше. Кстати аналогично у C# , Xamarin тоже хорош, только если есть много легаси кода на C#. 6. Delphi само на FMX пока не написана, а по прежнему на VCL. Вот напишут, есть шанс , что под Windows/Linux хотя бы будет всё стабильно.
  3. Если в VCL мне надо повторно воспроизвести звук , я пишу что-то вроде этого if MediaPlayer1.NotifyValue = nvSuccessful then begin MediaPlayer1.Notify := true; MediaPlayer1.Play; end; Как это сделать на FMX?
  4. Многие планшеты очень не любят общаться с устройствами USB, когда на них подаёшь дополнительное питание(а без оного питания планшета не хватает для устройства). Samsung так и вовсе отказывается. Lenovo сделали поинтереснее - они во время зарядки всё-таки разрешают доступ к устройству. Но уж как зарядилось, так всё , привет. Можно ли как-то решить эту проблемы в настройках устройств или надо какие-то аппаратные извращения применять?
  5. Проблема решена - создал с нуля новый проект, который описал в п.3. и перекопировал туда все файлы из старого. И ведь не первый раз сталкиваюсь , очень похожий же глюк был с проектами к примеру при компиляции проектов Win32 из Delphi 2006 на новых версиях(но тогда не компилировалось). А всё как в первый раз...
  6. 1.Read и Write external Storage стоит как true на обоих версиях. Что-то есть ещё? 2. Сравнил папку assets - все файлы одинаковые. Манифест отличается только названием после com, чтобы одновременно на телефоне запускать и 32 и 64 бита. classes.dex для 64 бит огромный 5 Мб, но может это так и надо. Это если в папке Android64\Debug\****\classes\ А в папке Android64\Debug\*****.classes\ - файл внезапно одинаковый с версией 32 бита и составляет 143 Кб. 3. Если создать пустой проект по умолчанию и откомилировать с кодом выше, то работает на 64. 4. Если все файлы в пустом проекте задеплоить, что и в основном , всё тоже работает.
  7. На Delphi 11 создаю приложение на Android32, всё работает. На 64 пишет максимум заставку, но реально не запускается. У меня в приложении есть логирование , которое на старте выполняет такой код procedure TForm1.FormCreate(Sender: TObject); var i:Integer; s,s1:string; begin s:='debug.txt'; {$IFDEF ANDROID} S1:= TPath.GetPublicPath+'/'+s; Assignfile(f,s1); //Список операторов s1:=''; {$ELSE} Assignfile(f,s); //Список операторов {$ENDIF} Rewrite(f); На Android32 , логирование соотвественно идёт нормально. На Android64 даже вообще файл debug.txt не создаётся. В каком направлении примерно хотя бы копать?
  8. Поиск по гуглу показывает, что в apks кроме папки splits должна быть ещё и standalones, но у меня такой нет.
  9. Хочу проверить, правильно ли работает тот 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 мб).
  10. Кто как решает проблему быстрого переноса приложения с VCL на FMX? Я лично написал самописный конвертер, который во первых переносит компоненты, во вторых устанавливает автомасштабирование для Android. Во вложение то, что получается на выходе. Может кому-то пригодится. Вот адрес конвертора https://github.com/stalker1917/DfmToFMX Возможно у кого есть способы делать перенос быстрее/лучше? Debug.zip
  11. Должен признать, что это я лажанулся, событие OnClick таки отрабатывается, разночтение между Andoroid и Windows начинаются дальше, но это уже вопрос другой темы.
  12. Опять мой ничтожный разум не может постигнуть гениальных замыслов , авторов FMX Компонент TSpeedButton в Android64(в 32 не пробовал) никак не реагирует на событие OnClick и OnMouseUp ( событие OnMouseDown не пробовал). В Win32 всё нормально. HitTest установлена как True. При нажатии на кнопку вокруг неё появляется серый ореол, при повторном нажатии исчезает. На кнопке установлен произвольный стиль. Среда Delphi 11. Может что с настройками? Или есть обходной путь? Собственно мне надо , чтобы как на картинке было 4 кнопки.
  13. Ну кривенько-корявенько, заработало всё-таки по первыому подходу 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; + После дисконнекта остановку потока. Кривенько, потому, что информацию об отключении я получаю по факту того, что мне перестали подступать данные. А наверняка есть напрямую решение.
  14. Да, так работает, хотя в целом коннект и так и так занимает порядка секунды. Про подписку вы имеете ввиду что-то вроде этого кода на 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); }
  15. На это и пишет Можно выбрать такой вариант вроде как это оно, но неточно.
×
×
  • Создать...