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

OnePeople

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

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

  • Посещение

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

    56

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

  1. Androidapi.JNI.Os; Мой лог вам не нужно Каждый раз когда запускаете проигрывание файла
  2. Crony Auto - Лаунчер, целью которого является обеспечение удобства, целостности дизайна и обеспечение достаточного функционала для работы без использования стандартных приложений вашей Android магнитолы. Основные возможности: - Просмотр, запуск и удаление приложений - Прослушивание аудио с памяти устройства или плейлистов радио онлайн - Работа как в режиме воспроизведения с флешки, так и создание плейлистов - Просмотр погоды - Работа с OBD2 по Bluetooth - Виджет яндекс-навигации с указанием пути движения - Темы оформления Текущая версия: 0.4.0.402 Ссылка на приложение: 4PDA
  3. А зачем это всё? В 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);
  4. Правильнее через аудио фокус!
  5. Ну смотрите, вообще любой нормальный плеер когда начинает играть запрашивает фокус себе, чтобы другие приложения приостановили проигрывание, когда происходит звонок приложение телефон также забирает аудио фокус себе, ваше задача отловить этот момент, при внедрении этого кода, ваше приложение будет останавливать проигрывание когда потеряет фокус. Во первых это единственно правильный метод. Во вторых ваше приложение будет останавливать проигрывание и при запуске видео в Ютуб, или входящем звонке с мессенджеров.
  6. Вам не нужно этого делать, вам нужно обрабатывать потерю аудиофокуса. Код корявый лень в порядок приводить... 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;
  7. Напишите полный код что за куски? Так быстрее будет понятно что не так
  8. А такое дальше не идёт Path1.Data.ClosePath? Если есть, уберите.
  9. Ну тут нужно смотреть справку по svg формату, код вашей отрисовки скинте
  10. var item: tlistboxitem; i:integer; begin ComboBox1.Clear; for i := 1 to 2 do begin item := tlistboxitem.Create(nil); ComboBox1.Items.AddObject(inttostr(i), item); end; end; Так тоже работает
  11. Возмите TabControl отсюда https://github.com/Zeus64/alcinoe/
  12. procedure DownloadImages; var RS: TResourceStream; begin RS:=TResourceStream.Create(HInstance, 'FonMain', RT_RCData); try Fon <<<<<<<<<<<<<<<<<< Где Create??? Fon.Width:=420; Fon.Height:=680; Fon.LoadFromStream(RS); finally RS.Free; end; end; Тута нет procedure TForm1.FormCreate(Sender: TObject); begin Regim:=0; Buf:=TBitmap.Create; Buf.Width:=420; Buf.Height:=680; form1.Border.Styling:=false; DownloadImages; //zagruzka kartinok end;
  13. Ошибку чего??? Вы создаете процедуру, с именем каким вы хотите, как это может быть ошибкой, проверяйте синтаксис
  14. По поведению на различных прошивках я не могу вам ни чего сказать вообще не думаю что это связанно с версией андроида, а связанно с прошивкой вендора. Выдернул из рабочего проекта, строго не пинать, за корявость) 1. type {$IFDEF ANDROID} TMyAudioFocusChangeListener = class; {$ENDIF} TForm1 = class(TForm) 2. private { Private declarations } {$IFDEF ANDROID} afChangeListener: TMyAudioFocusChangeListener; 3. public 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; 4. 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 Form1.Memo2.Lines.Add('focus change:'+focusChange.ToString); if (focusChange=TJaudioManager.JavaClass.AUDIOFOCUS_LOSS) then begin MusicControl.AudioFocus:=false; case MusicControl.MusicType of TMusicType.Music: if MusicControl.Music.MusicState=TMusicState.Play then begin MusicPlayPause; exit; end; TMusicType.Radio: if MusicControl.Radio.MusicState=TMusicState.Play then begin RadioPlayPause; exit; end; end; end; end; 5. procedure TForm1.GetAudioFocus; begin // {$IFDEF ANDROID} 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 LogCAAdd('AUDIOFOCUS_REQUEST_DELAYED') else if res = TJAudioManager.JavaClass.AUDIOFOCUS_REQUEST_GRANTED then begin MusicControl.AudioFocus:=true; LogCAAdd('AUDIOFOCUS_REQUEST_GRANTED'); end else if res = TJAudioManager.JavaClass.AUDIOFOCUS_REQUEST_DELAYED then LogCAAdd('AUDIOFOCUS_REQUEST_DELAYED'); end ); {$ENDIF} end; P.S. Для android 8 выше! для поддержки ранешних версий Android нужно немного дописать
  15. Audiofocus отлавливать, пример могу через пару часиков скинуть, а лучше сами в справке Гугла посмотрите
  16. Проверьте пути к файлу procedure TForm1.TetheringAppProfile1Resources3ResourceReceived( const Sender: TObject; const AResource: TRemoteResource); var GetImage : TMemoryStream; begin GetImage := TMemoryStream.Create; GetImage.LoadFromStream(AResource.Value.AsStream); GetImage.Position := 0; ImageViewer1.Bitmap.LoadFromStream(GetImage); GetImage.Free; end;
  17. В DesignMode зайдите и попробуйте поменять размеры Height и Width на 0
  18. У меня было на винде создавал папку с именем aux)))) А оказывается нельзя её создать!
  19. TDirectory.CreateDirectory(IncludeTrailingPathDelimiter('/storage/emulated/0/3D Мебель: Расчет')); TDirectory.CreateDirectory(IncludeTrailingPathDelimiter(FinalyDir)); Проверьте создаются ли папки? TDirectory.ForceDirectories('/storage/emulated/0/3D Мебель: Расчет/Проект № ' + AppForm.Order.OID) вернет true если все хорошо
  20. Ну пишите сразу код, а то не понятно куда вы записываете, что в bitmap и т.д.
  21. Ну все правильно дайте на чтение также разрешение, соответственно и в манифесте также FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE); FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); PermissionsService.RequestPermissions([ FPermissionReadExternalStorage, FPermissionWriteExternalStorage], nil);
  22. Покажите код записи И приложите ваш манифест
  23. Так окно запроса разрешений появляется??? PERMITWRITEEXT := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); PermissionsService.RequestPermissions([PERMITWRITEEXT], nil)
  24. Если в манифесте есть <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> то все должно работать! Context.getExternalFilesDir(String) и Context.getExternalCacheDir() в эти каталоги должно и без разршения записывать если API 19 или выше!
×
×
  • Создать...