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

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

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

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

  • Посещение

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

    2

Сообщения, опубликованные Игорь Маринин

  1. подскажите, что за параметр 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. спасибо!  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

     

    буду искать ошибку. спасибо!

  6. а такой код вообще не вызывает никакого диалога на 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;

     

  7. я понял, спасибо!

    спрашивал потому, что у меня в Androidapi.JNI.Support нет TJContextCompat

    ну и ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION то же нет нигде. но эту строковую константу я то могу заменить как писал  выше.

    у меня 11.3, странно.. 

  8. спасибо! у вас 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'));  ?

     

     

  9. вообщем установка targetSdkVersion в 29 возвращает доступ ко всем файлам.

    гугл здесь пишет, что достаточно MANAGE_EXTERNAL_STORAGE объявить, но нифига с targetSdk выше 29 не работает.

    а насчет опции "разрешить чтение памяти в любом режиме" в разрешениях доступа к файлам так и не понял.

    в некоторых прогах, типа x-plorer, заходишь в права и там три варианта выбора включая этот.

    как оно у меня раньше было ума не приложу. но при выборе искало все файлы при sdk 32.

    ну пока придется 29 апи писать.

    на гитхабе ещё какой то код нашел, но вываливается с ошибкой

    заколебали вообщем, постоянно что то придумывают с этой безопасностью. костыли какие то приходится придумывать..

  10. что-то в конец запутался.

    в настройках проэкта в правах включено 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 собирал и в деплой и стор конфигурации: нет этого пункта в разрешениях и всё..

    помогите плиз, а то уже голова кипит..

     

  11. в базе плеера собрано более 120 000 караоке песен!

    - миди караоке,
    - караоке с бэк вокалом с дисков: LG, Samsung, BBK
    - зарубежное CDG караоке
    - азиатское караоке (Узбекистан, Таджикистан, Кыргызстан, ..)
    - профессиональное минусовое MP3 (EMP) караоке

    база постоянно пополняется, имеются все российские музыкальные новинки в профессиональном EMP формате.

    https://play.google.com/store/apps/details?id=com.encore.EnCore

  12. поделитесь пожалуйста пустым проектом, готовым к публикации для TV устройств.

    что-то никак не получается опубликовать, сейчас отклонили с такими ошибками:

    APK:8
    No Now Playing notification [card]"
    Your App does not contain a “Now Playing” notification [card] for when the user has selected the HOME button within the app. Please refer to our Displaying a Now Playing Card documentation for more details.

    APK:8
    Play/Pause key event is not respected during playback
    Your media apps that play video or music content must respect the play/pause key during playback. Please refer to our Media Play/Pause documentation and Update the Playback State documentation for details.

    Missing DPad functionality
    Your app requires user interaction for menus or app navigation. Please make sure that all menus and app navigation are fully functional using a DPad. Please refer to our DPAD Control and Hardware Declaration documentation.

    ну и баннер не прилепил

    No full-size app banner
    Your app does not contain a full-size app banner or is it not visible in the launcher. We are targeting 1080P, which we consider xhdpi. Apps should include the banner in the xhdpi (320 dpi) drawables folder with a size of (320px × 180px). Please refer to our Home Screen Banner and UI Patterns documentation.

    The title should help users identify apps in the launcher. Please refer to our Visual Design and User Interaction documentation for more information.

    был бы очень благодарен за рабочий пустой костяк с манифестом.

     

  13. изменение theme не помогает. полоска отрисовывается всегда белая. удалил даже StyleBook и без него так же.

    при android:targetSdkVersion="24" ещё нормально, при 25 уже такая фигня.

    когда динамика на форме, видно что и в этой полоске часть формы отрисовывается  .

    Screenshot_20180803-154011.thumb.jpg.7a6c3e5a4aac18b31480d3a713ebd02c.jpg

     

    при borderstyle = none - эту полоску занимаем форма и вроде бы всё работает терпимо..

    вообщем где то проблема с шапкой формы.

     

  14. решил для теста опубликовать на google.play. в настройках выбрал SDK API android-26

    но при загрузке apk заматюкались, что "targetSdkVersion" должна быть не ниже 26.

    полез в манифест и изменил android:targetSdkVersion="%targetSdkVersion%"  на "26" 

    до изменения:

    19.jpg.de2a37b68532d8461b0b034858466556.jpg

    после:

    26.jpg.67993beb54a6566306b7b2ac7e6bf230.jpg

     

    тоесть мое приложение как-то закрашивает статусную строку телефона, один заряд батареи только видно.

    в какую сторону копать?

  15. Женя, спасибо!

    я пока в эту хрень попробовал добавить голосовой движок:

     

    на стрелку вправо запустил проигрывание песни, на кнопки что дают  "0" запускаю голосовой ввод.

    сегодня, на день пограничника, потестил, вроде бы всё удобно -  напелись наславу.

    вообще этот mibox3 очень порадовал, шустрый... мне кажется на этом рынке большую нишу отхватит.

     

     

×
×
  • Создать...