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

Игорь Маринин

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

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

  • Посещение

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

    2

Игорь Маринин стал победителем дня 12 июля 2020

Игорь Маринин имел наиболее популярный контент!

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

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

Достижения Игорь Маринин

  1. Игорь Маринин

    Canvas.TextToPath

    подскажите, что за параметр RectF? например: myRectf:= RectF(100, 100, bmp.width - 100, bmp.height - 100); bmp.Canvas.FillText(myRectf, 'текст', false, 1, [], TTextAlign.Center, TTextAlign.Center); выводит всё правильно с учётом Rectf. тут же хочу сделать обводку текста: bmp.Canvas.TextToPath(path, myRectf, 'текст', false, TTextAlign.Center, TTextAlign.Center); bmp.Canvas.DrawPath(path, 1); и нифига, контур где-то в стороне, как буд-то не учитывает RectF, так как после: Path.Translate(100, 100); bmp.Canvas.DrawPath(path, AOpacity); рисует контур уже четко вокруг текста. я полагал, что должно выводить сразу по центру прямоугольника заданного в rectf а этот же код на андроиде вообще черти шо: что так где-то в стороне, что после translate то же в стороне.
  2. Intent := TJIntent.JavaClass.init; Intent.setAction(StringToJString('android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION')); TAndroidHelper.Activity.startActivity(Intent); открывает форму установки прав, где есть и моё приложение. но если добавить: Intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName))); то intent.resolveActivity(TAndroidHelper.Context.getPackageManager) возвращает NIL. хотелось бы, что бы сразу для моего приложения был запрос прав. апи 30. андроид 13. в манифесте указано <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> попробовал ещё PermissionsService.RequestPermissions(['MANAGE_ALL_FILES_ACCESS_PERMISSION'], ... вообще никакой реакции..
  3. вообщем по умолчанию, доступ к памяти запрещен: TJEnvironment.JavaClass.isExternalStorageManager возвращает False Intent.setAction(StringToJString('android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION')); intent.resolveActivity(TAndroidHelper.Context.getPackageManager) возвращает NIL, (no activity found to handle Intent) если вызвать при этом Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_APPLICATION_DETAILS_SETTINGS); то общие настройки приложения открываются нормально. в настройках доступа к памяти есть три пункта. если выбрать просто "разрешить", то if Androidapi.JNI.Support.TJcontent_ContextCompat.JavaClass.checkSelfPermission(TAndroidHelper.Context, TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE) возвращает TJPackageManager.JavaClass.PERMISSION_GRANTED, но при этом приложение видит только стандартные расширения файлов. если выбрать в правах доступа к памяти пункт "разрешить в любом режиме", тогда уже приложению доступны все файлы. почему активити 'android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION' отсутствует пока не пойму. на устройстве андроид 11-й. и проверку наверное делать не на READ_EXTERNAL_STORAGE а на MANAGE_EXTERNAL_STORAGE, но в 11.3 его нет.
  4. нашел такое, буду пробовать: Jcontent_ContextCompatClass = interface(JObjectClass) ['{DBBBF89C-A4F3-4A4C-A725-4B2FF89151B5}'] {class} function checkSelfPermission(context: JContext; string_: JString): Integer; cdecl; Jcontent_PermissionCheckerClass = interface(JObjectClass) ['{4627A63C-3386-4ABA-83DD-08BAA19760C2}'] {class} function checkPermission(context: JContext; string_: JString; i: Integer; i1: Integer; string_1: JString): Integer; cdecl; {class} function checkSelfPermission(context: JContext; string_: JString): Integer; cdecl; спасибо! удачи!!!
  5. да вроде бы у меня последняя 11.3 версия дельфи. вообще буду разбираться, есть над чем подумать. спасибо!
  6. спасибо! Androidapi.JNI.Support.Compat ну у меня в дельфи такого нет.. буду думать... насчет моего кода понял. разрешений точно нет, пока вручную не включишь. а вот эта проверка: if (TJEnvironment.JavaClass.isExternalStorageManager = false) разве не аналогична if TJContextCompat.JavaClass.checkSelfPermission(TAndroidHelper.Context, JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE)) <> TJPackageManager.JavaClass.PERMISSION_GRANTED буду искать ошибку. спасибо!
  7. а такой код вообще не вызывает никакого диалога на 13 андроиде: if (TJBuild_VERSION.JavaClass.SDK_INT >= 30) then if (TJEnvironment.JavaClass.isExternalStorageManager = false) then begin Intent := TJIntent.Create; Intent.setAction(StringToJString('android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION')); intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('package:').concat(TAndroidHelper.Context.getPackageName))); if (intent.resolveActivity(TAndroidHelper.Context.getPackageManager) <> nil) then TAndroidHelper.Context.startActivity(Intent); end;
  8. я понял, спасибо! спрашивал потому, что у меня в Androidapi.JNI.Support нет TJContextCompat ну и ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION то же нет нигде. но эту строковую константу я то могу заменить как писал выше. у меня 11.3, странно..
  9. спасибо! у вас 11.3 ? не могли бы уточнить, где описан TJContextCompat? а так же ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION ? Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); можно заменить на Intent.setAction(StringToJString('android.settings.MANAGE_ALL_FILES_ACCESS_PERMISSION')); ?
  10. вообщем установка targetSdkVersion в 29 возвращает доступ ко всем файлам. гугл здесь пишет, что достаточно MANAGE_EXTERNAL_STORAGE объявить, но нифига с targetSdk выше 29 не работает. а насчет опции "разрешить чтение памяти в любом режиме" в разрешениях доступа к файлам так и не понял. в некоторых прогах, типа x-plorer, заходишь в права и там три варианта выбора включая этот. как оно у меня раньше было ума не приложу. но при выборе искало все файлы при sdk 32. ну пока придется 29 апи писать. на гитхабе ещё какой то код нашел, но вываливается с ошибкой заколебали вообщем, постоянно что то придумывают с этой безопасностью. костыли какие то приходится придумывать..
  11. что-то в конец запутался. в настройках проэкта в правах включено read external storage. в манифест ещё добавил: android:requestLegacyExternalStorage="true" в проге запрашиваю права: PermissionsService.RequestPermissions( [ JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE), JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE), ], даю разрешение в системе на доступ. далее в проге, через : TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.STORAGE_SERVICE); LVolumes := LStorageManager.getStorageVolumes; получаю UUID флешки нормально. сканирую папки на наличие определенных файлов. и вот тут самое интересное, что система при поиске возвращает файлы только стандартных расширений, типа *.txt. *.mp3 а других файлов как буд-то нет. уже и по старинке через findFirst искал - то же самое. был заметил, что в системе в разрешениях доступа файлов у меня было три пункта и если выбрать "разрешить чтение памяти в любом режиме" то о чудо все файлы при поиске находились. если просто "разрешить во время выполнения" то фиг, только стандартные расширения. как-то обходился этим, но сейчас не пойму: где что менял при сборке, или система обновилась, но теперь этого пункта в системе нет. только два пункта. может есть у кого какие мысли, как всё же добиться что бы при поиске прога получала все имеющиеся файлы ? или если это где-то в сборке влияет на наличие пункта ""разрешить чтение памяти в любом режиме"" уже и на старом api собирал и в деплой и стор конфигурации: нет этого пункта в разрешениях и всё.. помогите плиз, а то уже голова кипит..
  12. что то на FMX уже нет такого свойства fonts, только у VCL. может куда запихнули? что-то не могу найти.
  13. в базе плеера собрано более 120 000 караоке песен!- миди караоке,- караоке с бэк вокалом с дисков: LG, Samsung, BBK- зарубежное CDG караоке- азиатское караоке (Узбекистан, Таджикистан, Кыргызстан, ..)- профессиональное минусовое MP3 (EMP) караокебаза постоянно пополняется, имеются все российские музыкальные новинки в профессиональном EMP формате. https://play.google.com/store/apps/details?id=com.encore.EnCore
×
×
  • Создать...