Перейти к содержанию
  • Регистрация
  • 0
Alex7wrt

Запрет потери активности приложения

Вопрос

Добрый день.

Есть ли в FMX кросплатформенный способ изменять время активности приложения, то есть количество секунд бездействия, по истечению которых приложение уйдет в фон? Либо вообще запретить переход приложения в фоновый режим, то есть затемнение и отключение экрана - как это происходит во время просмотра видео или в некоторых играх, например Angry Birds? Интересует Android и iOS.

Изменено пользователем Alex7wrt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0
8 часов назад, Alex7wrt сказал:

затемнение и отключение экрана

Запретить отключение экрана приложения в Андроид:

в файл проекта (Project - View Source) добавить строки:

//  в uses
  {$IFDEF ANDROID}
  Androidapi.Helpers,
  Androidapi.JNI.App,
  Androidapi.JNI.GraphicsContentViewText,
  {$ENDIF}

{$R *.res}
// и далее - перед Application.Initialize
begin
  {$IFDEF ANDROID}
  TAndroidHelper.Activity.getWindow.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON);
  {$ENDIF}
  Application.Initialize;
  ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
{$IFDEF ANDROID}
  procedure KeepScreenOn(aEnable: boolean);
  var
    vFlags: integer;
  begin
    vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;

    if aEnable then
    begin
      CallInUIThread (   // uses FMX.Helpers.Android
      procedure
      begin
        TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
      end );
    end
    else
      CallInUIThread (
      procedure
      begin
        TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
      end );
  end;
  {$ENDIF}

Это для Berlin и ниже.

При использовании Tokyo - вызов CallInUIThread не нужен, можно вызывать напрямую, т.к. теперь главный Delphi поток это Java  UIThread.

 

iOS

uses
  iOSapi.UIKit;

{$R *.fmx}

procedure TForm6.Button1Click(Sender: TObject);
var
  UIApp : UIApplication;
begin
  UIApp := TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication);
  UIApp.setIdleTimerDisabled(True);
end;
Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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