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

Ingalime

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

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

  • Посещение

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

    5

Активность репутации

  1. Like
    Ingalime отреагировална slav_z в Как сделать простейшую анимацию?   
    простейший способ:

  2. Like
    Ingalime отреагировална OnePeople в Android: сканирование и подключение к WiFi   
    Вы можете его даже не создавать
    TJNetworkCapabilities.JavaClass.TRANSPORT_WIFI
  3. Like
    Ingalime отреагировална OnePeople в Динамическое создание объекта во фрейме   
    onMouseDown :=  (Self.Parent as TFrame6).imgMouseDown;
  4. Like
    Ingalime отреагировална OnePeople в [Android] А возможно ли на Delphi делать такие мобильные приложения?   
    Да для простых приложений это самое быстрое решение, я вам так скажу сейчас уже мало осталось того что не написать на делфи для андроид, дело в том что люди не хотят искать и писать, им нужно чтобы раз и все получилось...
  5. Like
    Ingalime отреагировална OnePeople в Android: сканирование и подключение к WiFi   
    Здесь все зависит от того, как сделано в android. Следовательно вам всегда в первую очередь нужно смотреть справку developer.android.com.
    Все что ниже это то как делаю я, не истина, так как мне для хобби достаточно. На примере 
     
    1. JConnectivityManager. 
    Захожу в справку, ищу JConnectivityManager, открываю пример работы с API.
    Вижу код:
     
    ConnectivityManager cm =         (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); Начинаю переписывать на Delphi (паскале, не считаю) и вижу что getSystemService возвращает JObject. Если мы получаем не определенный объект то нам нужно сопоставить его с определенным классом, так сказать объект обернуть в класс 
    НАШКЛАСС.ОБЕРНУТЬ(ИД_ОБЪЕКТА)
    TJConnectivityManager.Wrap((ConnectivityServiceNative as ILocalObject).GetObjectID); Если же объект создается методом new, тогда мы можем просто использовать init, create. (В чем разница я не знаю
                AudioFocusRequest:=TJAudioFocusRequest_Builder.JavaClass.init(TJAudioManager.JavaClass.AUDIOFOCUS_GAIN);
                AudioFocusRequest:=TJAudioFocusRequest_Builder(TJAudioManager.JavaClass.AUDIOFOCUS_GAIN).Create;
    Я пользуюсь обоими видами конструкцию, но предпочитаю init
    )
     
    2.Захожу в справку, ищу JWifiNetworkSpecifier, вижу
    Apps should use the WifiNetworkSpecifier.Builder class to create an instance.
    Соответственно Network specifier object создается строителем, перехожу дальше в WifiNetworkSpecifier.Builder, смотрю там и так далее.
     
    Есть всякие костыли и идеи людей решающие многие проблемы, но я вам так скажу у вас не будет проблем если вы будете делать так как вам советует гугл, а если и будут, то на китайских устройствах где по какой то причине китайцы просто что то сломали в системе и заменили это своим хламом не отвечающим требованиям гугл(Обычно телефон и BT). Единственная помарка, в Delphi бывает отсутствует все API, и некоторые вещи, вообще не реализованы, но их очень мало и они очень специфические.
     
    .
     
  6. Thanks
    Ingalime отреагировална OnePeople в [Android]Входящий звонок   
    if (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS) or (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS_TRANSIENT)  
  7. Like
    Ingalime отреагировална Евгений Деревянкин в Минимальная поддерживаемая версия Android   
    все нормально, classes.dex собрал, файл классов использовал из папки Android\Debug\Project1.classes\, пока полет нормальный
    https://docwiki.embarcadero.com/RADStudio/Sydney/en/Creating_and_Deploying_a_classes.dex_File_Manually
    извиняюсь в deployment файл классов также подключен как и раньше, отображение прозрачное какое то и я его не заметил
  8. Like
    Ingalime отреагировална Slym в Линковка Kotlin (Котлин) библиотек в Delphi   
    Линковка Kotlin (Котлин) библиотек в Delphi, как делаю:
    Хедеры линкуемых библиотек обычно громадны описанием всех типов...
    Я обычно делаю свой jar на java в нем линкую зависимости и наружу для дельфи оставляю один объект с простыми функциями.
    Хедер дельфи получается компактным и понятным:
    package com.MyCompany.evotor; public interface J2DCallback { void Log(String str); String Trans(String str); String GetValue(String name); void SetValue(String name, String value); Activity GetActivity(); Context GetContext(); } public class FiscalCoreConnection { final private Global Instance; public FiscalCoreConnection(J2DCallback aj2d) throws NullPointerException { Instance = new Global(aj2d); } public String SendJSON(String JSON){ try{ return Instance.SendJson(JSON); } catch (Exception e) { return FiscalCoreException.MakeJson(e); } } } type J2DCallbackClass = interface(IJavaClass) ['{856654D5-7939-44DF-ACD5-E2EF8C6D3AA4}'] end; [JavaSignature('com/MyCompany/evotor/J2DCallback')] J2DCallbackIntf = interface(IJavaInstance) ['{025B14E9-C041-4105-9E85-83CC127CC340}'] procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; TJ2DCallbackImp = class(TJavaGenericImport<J2DCallbackClass, J2DCallbackIntf>) end; [JavaSignature('com/MyCompany/evotor/FiscalCoreConnection')] JFiscalCoreConnection = interface(JObject) ['{5797747D-D61D-4EF6-94F7-5E8994545CC2}'] function SendJSON(JSON:JString):JString; cdecl; end; JFiscalCoreConnectionClass = interface(JObjectClass) ['{81782882-DFCF-4FA9-BD37-02CCCF2409EA}'] function init(j2d : J2DCallbackIntf) : JFiscalCoreConnection; cdecl; end; TJFiscalCoreConnection = class(TJavaGenericImport<JFiscalCoreConnectionClass, JFiscalCoreConnection>) end; TJ2DCallback = class(TJavaLocal, J2DCallbackIntf) public procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; Все зависимости в build.gradle:
    dependencies { implementation 'com.github.evotor:integration-library:v0.4.50' implementation 'com.google.zxing:core:3.4.0' } В Дереве External Libraries забираем jarы зависимостей

    ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя.
    Там же забираем kotlin-stdlib

    ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя.
    Но в kotlin-stdlib.jar есть "лишний" файл kotlin-stdlib-1.5.10.jar\META-INF\versions\9\module-info.class
    Открываем архиватором и удаляем файл или всю папку versions

    Почти все готово... Но котлин еще и посыпан сахаром и не хочет Дельфей dexится, хочет -min-sdk-version=26
    Поможем Delphi:
    Ищем CodeGear.Common.Targets, у меня он в "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin"\
    Ищем в нем --output, и перед ним вставим все про sdk. У меня получилось так:
        <DxCmd>PATH $(JDKPath)\bin;$(PATH); %26 set JAVA_HOME=$(JDKPath)%26 "$(JavaDxPath)" --dex --min-sdk-version=26 --output=</DxCmd>
    Далее цепляем все jar в проект

    Либа производителя, Либа своя обертка, и котлин
    Иии собираем!

    Если есть еще зависимости делаем аналогично:
    находим jar, выпиливаем META-INF\versions\9\module-info.class, линкуем в проект и собираем...
    Не все зависимости используются и нужны, поэтому добавляем поштучно до тех пор пока не заведется.
  9. Thanks
    Ingalime отреагировална Tumaso в [Android]Входящий звонок   
    перенесите
    {$R *.fmx} uses UnitDonate; сразу после implementation
  10. Like
    Ingalime отреагировална gonzales в на Android 11 приложение не видно в списке открытых   
    Удалил какие-то приложения (удалял сразу несколько, поэтому не могу сказать точно, какие) и все заработало?
  11. Like
    Ingalime отреагировална slav_z в Canvas GPU Alpha+Opacity   
    Исправлено в Delphi 11.0

  12. Like
    Ingalime отреагировална Andrey Efimov в Получить imei на android >=10 версии   
    Restriction on non-resettable device identifiers
    В этом разделе: "Starting in Android 10, apps must have the READ_PRIVILEGED_PHONE_STATE privileged permission in order to access the device's non-resettable identifiers, which include both IMEI and serial number. Caution: Third-party apps installed from the Google Play Store cannot declare privileged permissions."
     
    Best practices for working with Android identifiers
  13. Thanks
    Ingalime отреагировална Andrey Efimov в [Androud] установка не из магазина   
    Установить то можно, но только если пользователь подготовлен к этому. Через спец. софт, можно скачать например с Google Play: App Bundle Install (вроде, не помню точно, как называется). На самом деле, подобного софта много.
    Т.к. установка aab не из маркета требует подготовки, то само собой лучше выкладывать на своём сайте сразу apk файлы.
  14. Thanks
    Ingalime отреагировална OnePeople в [Android]Входящий звонок   
    Тут вы делаете что хотите, хоть обращаетесь к визуальным компонентам хоть нет, главное чтобы вы остановили воспроизведение!
  15. Thanks
    Ingalime отреагировална OnePeople в [Android]Входящий звонок   
    в OnCreate
    {$IFDEF ANDROID}
        if FAudioService=nil then
          begin
            FAudioService:= TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.AUDIO_SERVICE);
            if FAudioService <> nil then
              begin
              FAudioManager := TJAudioManager.Wrap((FAudioService as ILocalObject).GetObjectID);
              end;
          end;
      {$ENDIF}
     
    Общая переменная
    var
    FAudioManager: JAudioManager;
  16. Like
    Ingalime отреагировална Vitaldj в Delploy проходит на 10.0 , и портит придоложение на 10.4   
    Нет натива в обезьяне на андроиде. Есть только в FGX native. Это отдельный фреймворк, который FMX не использует от слова - совсем. Вот там полный натив и скорость. И почти все глюки убраны. Да, не бесплатный. Но за качество надо платить. 
  17. Like
    Ingalime отреагировална Andrey Efimov в Запретить помещать приложение во всплывающем окне(Android)   
    Посмотрите эту страницу документации: Configuring your app for multi-window Mode
  18. Like
    Ingalime отреагировална Андрей Рулин в О публикации приложения в магазине   
    Попробовал ещё раз. Самсунг публикует, но и в этот раз на тестировании завернул приложение, правда в этот раз тут моя вина, как разработчика.  Huawei маринует, где-то 4 дня и больше, но потом публикует. 
    Вот пример , как он опубликовал мой проект - https://appgallery.huawei.com/#/app/C104694755
     
     
    Самсунг вроде не требует, но я год назад регистрировался может не помню уже . Huawei точно требует.  Ещё они требуют политику конфиденциальности. Но её можно генератором наклепать. 
    Amazon appstore  - скорее всего не требует. 
  19. Like
    Ingalime отреагировална slav_z в О публикации приложения в магазине   
    Лучше все же купить аккаунт разработчика у гугла... если после этого останется психологический дискомфорт, взять 2-3 сеанса у психолога...
  20. Like
    Ingalime отреагировална Андрей Рулин в О публикации приложения в магазине   
    Amazon appstore  довольно демократичный магазин, публиковался в нём. Жалко, что пользователей у него, похоже немного.
    Магазин Samsung требует фактически Google аккаунта - если просто выложить, то заблокирует как ненадёжный источник. 
  21. Thanks
    Ingalime отреагировална OnePeople в [Android]Входящий звонок   
    Androidapi.JNI.Os;
    Мой лог вам не нужно
     
    Каждый раз когда запускаете проигрывание файла
  22. Like
    Ingalime отреагировална krapotkin в Подключение к БД Firebird из Android   
    примеров полно, но нужно бы ТЗ иметь.
    обращение из программы к серверу - через THttpClient
    сервер - в зависимости от умений и знаний, на любом языке. традиционно у нас в ходу PHP
     
  23. Like
    Ingalime отреагировална Tumaso в запуск приложения на Android   
    вам нужно понизить используемый SDK до 29
  24. Thanks
    Ingalime отреагировална OnePeople в Crony Auto (Alpha)   
    Crony Auto - Лаунчер, целью которого является обеспечение удобства, целостности дизайна и обеспечение достаточного функционала для работы без использования стандартных приложений вашей Android магнитолы.
    Основные возможности:
    - Просмотр, запуск и удаление приложений
    - Прослушивание аудио с памяти устройства или плейлистов радио онлайн
    - Работа как в режиме воспроизведения с флешки, так и создание плейлистов
    - Просмотр погоды
    - Работа с OBD2 по Bluetooth
    - Виджет яндекс-навигации с указанием пути движения
    - Темы оформления
    Текущая версия: 0.4.0.402
    Ссылка на приложение: 4PDA
  25. Thanks
    Ingalime отреагировална gonzales в Рабочая комбинация программ для публикации в AppStore   
    Оставлю здесь полезную информацию. Если при добавлении сертификата в связку ключей у Вас, как у меня появляется ошибка сертификата "Сертификат ненадежен", то проблема решается следующим образом
     
×
×
  • Создать...