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

OnePeople

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

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

  • Посещение

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

    26

Весь контент OnePeople

  1. Для API >= 14 и API < 29 Intent := TJIntent.Create(); Intent.setAction(TJIntent.JavaClass.ACTION_INSTALL_PACKAGE); Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); Intent.putExtra(TJIntent.JavaClass.EXTRA_NOT_UNKNOWN_SOURCE, true); Intent.setDataAndType(ApkUri,StringToJString('application/vnd.android.package-archive')); TAndroidHelper.Activity.StartActivity(Intent); API > 25 Manifest.permission.REQUEST_INSTALL_PACKAGES
  2. function checkNetwork: Boolean; function GetConnectivityManager: JConnectivityManager; var ConnectivityServiceNative: JObject; begin ConnectivityServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE); if not Assigned(ConnectivityServiceNative) then exit; Result := TJConnectivityManager.Wrap((ConnectivityServiceNative as ILocalObject).GetObjectID); if not Assigned(Result) then exit; end; var cm: JConnectivityManager; activeNetwork: JNetworkInfo; begin try cm := GetConnectivityManager; activeNetwork := cm.getActiveNetworkInfo; Result := Assigned(ActiveNetwork) and ActiveNetwork.isConnected; except Result := false; end; end;
  3. )))Ну наверное при том что вы пишете для андроид, а самое верное это сделать то что советует Гугл. А в Делфи там переделывать 5 секунд. Если вы этого не можете переделывать код из java в Делфи и не хотите учиться этому, совет, не пишите для андроид вообще/
  4. не наоборот, я приложение для телика тестировал на телефоне, чтобы его туда постоянно не устанавливать)))
  5. Всё верно, но вот мне потребовалось чтобы приложение одинаково выглядело и на телевизоре fullhd и на смартфоне fullhd и тогда без масштабирования выходила шняга полная, но это очень редкая ситуация)
  6. Все зависит от разрешения в котором запускается приложение оно может быть меньше чем разрешение экрана и просто масштабироваться, я решаю это свойством scale. var ScreenService: IFMXScreenService; begin Result := 1; if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then begin Result := ScreenService.GetScreenScale; // Получаем текущий масштаб Выставляем элементам нужный масштаб end;
  7. Где код, как вы получаете S? Ну и скрин deployment для Android 64? Прошу заметить что Android чувствителен к регистру File и file это разные папки.
  8. Тогда делать в базе пометку открыт или закрыт!? Или создавать базу(список) с индексами открытых элементов
  9. https://docwiki.embarcadero.com/RADStudio/Sydney/en/FireMonkey_Save_State Если пользуетесь переводчиком, на родном языке тоже оставляйте пост или спойлер!
  10. if (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS) or (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS_TRANSIENT)
  11. var FAudioService: JObject; FAudioManager: JAudioManager; в 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} Не знаю чем вам помочь, на какую строку ругается?
  12. Скиньте проект посмотреть
  13. Тут вы делаете что хотите, хоть обращаетесь к визуальным компонентам хоть нет, главное чтобы вы остановили воспроизведение!
  14. в 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;
  15. Androidapi.JNI.Os; Мой лог вам не нужно Каждый раз когда запускаете проигрывание файла
  16. Crony Auto - Лаунчер, целью которого является обеспечение удобства, целостности дизайна и обеспечение достаточного функционала для работы без использования стандартных приложений вашей Android магнитолы. Основные возможности: - Просмотр, запуск и удаление приложений - Прослушивание аудио с памяти устройства или плейлистов радио онлайн - Работа как в режиме воспроизведения с флешки, так и создание плейлистов - Просмотр погоды - Работа с OBD2 по Bluetooth - Виджет яндекс-навигации с указанием пути движения - Темы оформления Текущая версия: 0.4.0.402 Ссылка на приложение: 4PDA
  17. А зачем это всё? В style.xml <item name="android:windowTranslucentStatus">false</item> В OnCreate TAndroidHelper.Activity.getWindow.setFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_LAYOUT_NO_LIMITS, TJWindowManager_LayoutParams.JavaClass.FLAG_LAYOUT_NO_LIMITS); TAndroidHelper.Activity.getWindow.getDecorView.setFitsSystemWindows(false); TAndroidHelper.Activity.getWindow.setStatusBarColor($00000000);
  18. Правильнее через аудио фокус!
  19. Ну смотрите, вообще любой нормальный плеер когда начинает играть запрашивает фокус себе, чтобы другие приложения приостановили проигрывание, когда происходит звонок приложение телефон также забирает аудио фокус себе, ваше задача отловить этот момент, при внедрении этого кода, ваше приложение будет останавливать проигрывание когда потеряет фокус. Во первых это единственно правильный метод. Во вторых ваше приложение будет останавливать проигрывание и при запуске видео в Ютуб, или входящем звонке с мессенджеров.
  20. Вам не нужно этого делать, вам нужно обрабатывать потерю аудиофокуса. Код корявый лень в порядок приводить... 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;
  21. Напишите полный код что за куски? Так быстрее будет понятно что не так
  22. А такое дальше не идёт Path1.Data.ClosePath? Если есть, уберите.
  23. Ну тут нужно смотреть справку по svg формату, код вашей отрисовки скинте
×
×
  • Создать...