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

Равиль Зарипов (ZuBy)

Модераторы
  • Постов

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

  • Посещение

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

    265

Весь контент Равиль Зарипов (ZuBy)

  1. Да, это легко реализовать. Проблема заключается в следующем: привязка к платформе, когда касается кастомного шрифта, все рушится. Поэтому я и предложил кроссплатформенное решение
  2. приложение запускается и всё, ничего нажать невозможно
  3. ну что я могу сказать, все висит. ничего не могу сделать android 6.0.1
  4. В два цикла или цикл + findcomponent И если задать имя радиобаттонам будет быстрее
  5. вот батник на исполнение с генерацией classes.dex (в идеале) @echo off setlocal if x%ANDROID_SDK% == x set ANDROID_SDK="C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows" if x%JAVA% == x set JAVA="C:\Program Files\Java\jdk1.8.0_66\bin" set ANDROID_PLATFORM=%ANDROID_SDK%\platforms\android-23 set DX_LIB=%ANDROID_SDK%\build-tools\23.0.3\lib set EMBO_DEX="C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\android\release\classes.dex" set FMX_JAR="C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\android\release\fmx.jar" set PROJ_DIR=%CD% set VERBOSE=0 echo. echo COPY ORIGINAL fmx.jar copy %FMX_JAR% %PROJ_DIR%\fmx.jar" echo. echo UPDATE FILE NotificationPublisher.class %JAVA%\jar uf "fmx.jar" "com.embarcadero\rtl\notifications\NotificationPublisher.class" echo. echo CONVERTING FROM jar TO dex mkdir output\dex 2> nul if x%VERBOSE% == x1 SET VERBOSE_FLAG=--verbose call %DX_LIB%\dx.jar --dex %VERBOSE_FLAG% --output=%PROJ_DIR%\output\dex\test_classes.dex --positions=lines %PROJ_DIR%\fmx.jar echo. echo MERGING dex FILES echo.com.android.dx.merge.DexMerger java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger %PROJ_DIR%\output\dex\classes.dex %PROJ_DIR%\output\dex\test_classes.dex %EMBO_DEX% echo. del output\dex\test_classes.dex del output\jar\test_classes.jar rmdir output\jar echo. echo Now we have the end result, which is output\dex\classes.dex :Exit endlocal распаковать архив проверить пути к java, android sdk, delphi что не работает: обновление JAR файла (с оригинальным fmx.jar все генерируется) directory.rar
  6. java файл NotificationPublisher(java).rar class файл NotificationPublisher(class).rar fmx.jar файл переименован в rar fmx.jar.rar откомпилил файл вот так cls&javac -d "c:\users\ZuBy" "NotificationPublisher.java" -cp "android-19.jar";"android-support-v4.jar" потом просто заменил в jar архиве файл NotificationPublisher.class на новый (незнаю, правильно или нет) так делать не правильно, пробовал такой командой (источник) cls&jar uf fmx.jar "com.embarcadero\rtl\notifications\NotificationPublisher.class" ошибок не выдаёт, но файл имеет не правильную иерархию а вот так должно быть уже незнаю что делать
  7. Не думаю что такое есть, но даже если есть это из Делфи не доступно. Обычно это опция клавиатуры
  8. Ну такого вы не добьетесь. Если приложение висит в менеджере задач, не значит что оно работает в фоне. Там ведь карточки запущенных недавно приложении. Это можно отключить, но толку не будет. А почему при закрытии не стартовать сервис?
  9. function hasNavbar: Boolean; // uses Androidapi.JNI.Util, {$IFDEF ANDROID} var Window: JWindowExt; realSize: JPoint; screenSize: JPoint; metrics: JDisplayMetrics; difference, navBarHeight, resourceID: Integer; {$ENDIF} begin Result := false; {$IFDEF ANDROID} metrics := TJDisplayMetrics.Create; realSize := TJPoint.Create; screenSize := TJPoint.Create; Window := GetWindowExt; Window.getWindowManager.getDefaultDisplay.getRealMetrics(metrics); realSize.x := metrics.widthPixels; realSize.y := metrics.heightPixels; Window.getWindowManager.getDefaultDisplay.getSize(screenSize); if realSize.x <> screenSize.y then begin difference := realSize.y - screenSize.y; resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navBarHeight := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID)); if navBarHeight > 0 then Result := difference = navBarHeight; end; {$ENDIF} end; вот проверьте
  10. я хотел вытащить вот это значение boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
  11. есть еще один вариант (но не нашел его в интерфейсах, не объявлен) for api 14 and up boolean PermanentMenuKey = ViewConfiguration.get(this).hasPermanentMenuKey(); // true if physical, false if virtual for lower api: boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME); if (hasBackKey && hasHomeKey) { // no navigation bar, unless it is enabled in the settings } else { // 99% sure there's a navigation bar } источник укороченный вариант описание boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); if(!hasMenuKey && !hasBackKey) { // Do whatever you need to do, this device has a navigation bar } источник
  12. мне кажется я знаю в чем проблема, но пока решения не нашел. есть два пути установки флагов Window.addFlags и Window.setFlags и они по разному работают, проверьте на андроид 5.1 вариант с Window.addFlags
  13. да проверил на своём Nexus'e - работает resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('config_showNavigationBar'), StringToJString('bool'), StringToJString('android')); if (resourceID > 0) and (TAndroidHelper.Activity.getResources.getBoolean(resourceID)) then begin resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then NavigationBar := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID) / sScale); end;
  14. что за девайс? корректно (ведет себя так как ожидается) на девайсах: 6.0 - Nexus 5, HTC M8, Samsung S5 5.0 - Nexus 7 5.0.1 - Nexus 9, LG Leon 5.1.1 - Samsung J7
  15. хорошо, теперь все видит но ошибки остаются cls&javac -source 1.7 -target 1.7 "E:\fmx\com\embarcadero\rtl\notifications\NotificationPublisher.java" -cp "C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\android\release\android-19.jar";"C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\android\release\android-support-v4.jar" -d "e:\fmx" ошибки вот теперь я ничего не понимаю: библиотеки видит - все отлично код не трогал, добавил только одну строку почему ошибки выходят?
  16. решим откомпилировать только один файл, который изменял javac -source 1.7 -target 1.7 "E:\fmx\com\embarcadero\rtl\notifications\NotificationPublisher.java" -cp "C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\android\release\android-19.jar" -d "e:\fmx" ошибки import android.support.v4.app.NotificationCompat.Builder; из библиотеки android-support-v4.jar он не может найти класс который хранится в другой библиотеке, но как две библиотеки указать, чтобы он компилил и с android-19.jar и android-support-v4.jar
  17. у скайпа есть такие штуки [android] https://msdn.microsoft.com/en-us/library/office/dn745884.aspx [ios] https://msdn.microsoft.com/en-us/library/office/dn745885.aspx
  18. там не сколько jar, а нужно все java файлы откомпилировать. как это сделать?
  19. ну мне жалко отдавать деньги за ваши компоненты, они прекрасны конечно. Но пока можно и без них справиться
  20. Если Button это TButton, проблемы возникнут во первых со стилями, если ерзать вверх вниз( освобождать и загружать) стили, то очень скоро память на девайсе закончится. О чем выше я писал. Во вторых динамическая загрузка картинок (которую я хотел) не получилось у меня реализовать.
×
×
  • Создать...