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

Semitako

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

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

  • Посещение

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

    3

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

  1. Like
    Semitako получил реакцию от Ingalime в Есть ли в FireMonkey какие-либо процедуры шифрования текста?   
    Используйте LockBox.
    Мне кажется в ней Вы найдете все, что Вам нужно.
    Раньше использовал, в том числе при использовании FMX и под Android.
  2. Thanks
    Semitako получил реакцию от Ingalime в RAD11 проблема запуска приложения   
    Вариантов может быть много, на самом деле.
    Например, у меня была похожая ситуация, которую удалось исправить методом "перебора"... А именно - причина была в том, что некоторые компоненты на форме использовали свойство ControlType = Platform. Как только переключил на ControlType = Styled, все заработало.
    Почему - не знаю. Даже разбираться не стал. Только перепроверил, несколько раз! Именно в этом была причина.
    Если вспомню другие причины - напишу. Но, если мне память не изменяет, были и другие причины. Но что касается "голого" приложения (т.е. код тоже весь "ремил" для проверки), то я сталкивался именно с этим.
    P.S. При этом, как и у Вас, в более старой версии все билдилось и запускалось, а в новой версии билдилось и падало на заставке.
  3. Like
    Semitako отреагировална gonzales в Push в Delphi11   
    Оставлю здесь информацию, как заставить работать пуши при переходе на delphi11. Если Вы заметили, что после перехода на 11 версию у Вас отвалились пуши, система не показывает firebase token, то проблема решается так.
    1. Скачиваем JSON с консоли FireBase

     
    2. Открываем его, видим следующий вид

    3. Вписываем в Настройках проекта в секцию Services в следующем соответствии:
    API key - current_key
    Application id - mobilesdk_app_id
    Project id - project_id
    GSM sender id - project_number
    4. И не забываем выставить в секцию Entitlement List галочку Receive push notifications.
    После этого все опять начинает работать. 
  4. Like
    Semitako отреагировална Rusland в Запуск приложения от PUSH-уведомления   
    Slava Marchenko подсказал что при закрытом приложении получить сам текст можно так:
    procedure TFormMain.FormActivate(Sender: TObject); var CurNotification : TPushServiceNotification; begin if Length(fPushService.StartupNotifications) > 0 then for CurNotification in fPushService.StartupNotifications do if Assigned(CurNotification) then Memo.Lines.Text := CurNotification.Json.ToJSON; end;  
  5. Like
    Semitako отреагировална krapotkin в Не подключается Huawei   
    Короче, действуем примерно так.
    Я надеюсь, что базовые действия - скачать google latest adb driver - мы уже провели, но наш No- или Brand- name телефон недоступен
    Тогда
    1) идем в диспетчер устройств, находим там наше невстающее устройство, кликаем дважды,  и на закладке Сведения выбираем свойство ИД оборудования. Копируем себе
    что-то типа 

    2)  идем к файлам того самого драйвера, открываем android_winusb.inf 
    находим разделы
    [Google.NTx86] и [Google.NTamd64]
    и вписываем туда, прямо в оба
    ;galaxy tab a 2019
    %SingleAdbInterface%        = USB_Install, USB\VID_04E8&PID_6866
    %CompositeAdbInterface%     = USB_Install, USB\VID_04E8&PID_6866&MI_01
     
    3) делаем обновить драйвер, выбираем вариант Вручную, и указываем тот модифицированный файл
    если не берет автоматом, то "Выбрать из списка уже установленных..." --> "Есть диск" --> "Да, мне пофиг что он не подписан"
    4) The End
     
  6. Like
    Semitako получил реакцию от Ingalime в Использование FFMPEG в Firemonkey   
    Самый простой и лучший, на мой взгляд, - это использование библиотек FlashAV.
    P.S. Понимаю, что вопрос давно устарел, но просто попался на глаза и решил написать. Вдруг кому-то еще пригодится.
  7. Like
    Semitako отреагировална Dmitry_4501 в libbass.so не загружается.   
    Держите, кому нужно. В архиве библиотеки BASS (для Windows и Android), а так же все найденные мною дополнения (У меня есть дополнения не для всех платформ. Например, какие-то дополнения я нашел только под Windows, а библиотеки каких-то дополнений BASS есть не на каждый процессор)
    ВАЖНОЕ ЗАМЕЧАНИЕ: Для дополнений у меня нет юнитов, но их не сложно сделать самому. Просто скачиваем с сайта un4seen необходимые плагины для Windows и переписываем его на динамическую загрузку (LoadLibrary, GetProcAddress и т.д.).
    Библиотеку протестировал, проверил не все функции, но основное все работало прекрасно. Проверял следующее:
    BASS_Init, BASS_StreamCreateFile, BASS_StreamCreateURL, BASS_ChannelPlay, BASS_ChannelPause, BASS_ChannelIsActive, BASS_ChannelGetAttribute, BASS_ChannelSetAttribute, BASS_ChannelGetLength, BASS_GetConfig, BASS_SetConfig, BASS_GetConfigPtr, BASS_SetConfigPtr (вроде все, может что-то упустил). Все работало на Windows и Android.
    Если нужна будет помощь с подключением библиотеки - задавайте вопросы  
     
     
     
    bass.zip
  8. Like
    Semitako отреагировална OnePeople в [Android]Входящий звонок   
    if TJBuild_VERSION.JavaClass.SDK_INT >= 26 then begin playbackAttributes := TJAudioAttributes_Builder.Create .setUsage(TJAudioAttributes.JavaClass.USAGE_MEDIA) .setContentType(TJAudioAttributes.JavaClass.CONTENT_TYPE_MUSIC) .build(); AudioFocusRequest:=TJAudioFocusRequest_Builder(TJAudioManager.JavaClass.AUDIOFOCUS_GAIN).Create .setAudioAttributes(playbackAttributes) .setAcceptsDelayedFocusGain(true) .setOnAudioFocusChangeListener(afChangeListener, afHandler) .build(); res := FAudioManager.requestAudioFocus(AudioFocusRequest); end else begin res := FAudioManager.requestAudioFocus(afChangeListener, TJAudioManager.JavaClass.STREAM_MUSIC, TJAudioManager.JavaClass.AUDIOFOCUS_GAIN); end;  
  9. Like
    Semitako отреагировална OnePeople в [Android]Входящий звонок   
    Ну смотрите, вообще любой нормальный плеер когда начинает играть запрашивает фокус себе, чтобы другие приложения приостановили проигрывание, когда происходит звонок приложение телефон также забирает аудио фокус себе, ваше задача отловить этот момент, при внедрении этого кода, ваше приложение будет останавливать проигрывание когда потеряет фокус. Во первых это единственно правильный метод. Во вторых ваше приложение будет останавливать проигрывание и при запуске видео в Ютуб, или входящем звонке с мессенджеров.
  10. Thanks
    Semitako отреагировална OnePeople в [Android]Входящий звонок   
    Вам не нужно этого делать, вам нужно обрабатывать потерю аудиофокуса. Код корявый лень в порядок приводить...
    type TMyAudioFocusChangeListener = class; // Создаем класс прослушивания фокуса аудио TForm1 = class(TForm) ... private { Private declarations } afChangeListener: TMyAudioFocusChangeListener; Создаем переменную прослушивания фокуса аудио ... public procedure GetAudioFocus; procedure onAudioFocusChange(focusChange: Integer); end; TAudioFocusChangeEvent = procedure(focusChange: Integer) of object; // описания события изменения фокуса TMyAudioFocusChangeListener = class(TJavaLocal, JAudioManager_OnAudioFocusChangeListener) // описание класса прослушивания фокуса аудио private [weak] FParent : TForm1; FOnAudioFocusChanged: TAudioFocusChangeEvent; public constructor Create(AParent : TForm1); property OnAudioFocusChanged: TAudioFocusChangeEvent read FOnAudioFocusChanged write FOnAudioFocusChanged; Destructor Destroy; Override; procedure onAudioFocusChange(focusChange: Integer); cdecl; end; var Form1: TForm1; AuFocus: JAudioManager_OnAudioFocusChangeListener; JAudioManagerListener: TMyAudioFocusChangeListener; implementation constructor TMyAudioFocusChangeListener.Create; // создание класса begin inherited Create; FParent := AParent; end; destructor TMyAudioFocusChangeListener.Destroy; // уничтожение класса begin inherited; end; procedure TMyAudioFocusChangeListener.onAudioFocusChange(focusChange: Integer); // событие изменения фокуса begin if Assigned(FOnAudioFocusChanged) then begin FOnAudioFocusChanged(focusChange); // передача события изменения фокуса end; FParent.onAudioFocusChange(focusChange); // вызов процедуры изменения фокуса формы end; procedure TForm1.onAudioFocusChange(focusChange: Integer); //процедура изменения фокуса формы begin if (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS) then // фокус потерян begin // music stop // действия если фокус потерян end; end; procedure TForm1.GetAudioFocus; // получаем фокус для своего приложения begin CallinUIThread(procedure var AudioFocusRequest: JAudioFocusRequest; playbackAttributes: JAudioAttributes; afHandler: JHandler; res: integer; begin afChangeListener := TMyAudioFocusChangeListener.Create(Self); // создаем класс прослушивания аудио фокуса для своего приложения afHandler := TJHandler.Create; // создаем указатель своего приложения playbackAttributes := TJAudioAttributes_Builder.Create // создаем параметры прослушивания аудио фокуса .setUsage(TJAudioAttributes.JavaClass.USAGE_MEDIA) .setContentType(TJAudioAttributes.JavaClass.CONTENT_TYPE_MUSIC) .build(); AudioFocusRequest := TJAudioFocusRequest_Builder(TJAudioManager.JavaClass.AUDIOFOCUS_GAIN).Create // создаем запрос с параметрами прослушивания аудио фокуса .setAudioAttributes(playbackAttributes) .setAcceptsDelayedFocusGain(true) .setOnAudioFocusChangeListener(afChangeListener, afHandler) .build(); res := FAudioManager.requestAudioFocus(AudioFocusRequest); // непосредственно запрашиваем фокус if res = TJAudioManager.JavaClass.AUDIOFOCUS_REQUEST_DELAYED then // отказано else if res = TJAudioManager.JavaClass.AUDIOFOCUS_REQUEST_GRANTED then begin //фокус получен LogCAAdd('AUDIOFOCUS_REQUEST_GRANTED'); end else if res = TJAudioManager.JavaClass.AUDIOFOCUS_REQUEST_FAILED then // отказано LogCAAdd('AUDIOFOCUS_REQUEST_FAILED'); end ); end;  
×
×
  • Создать...