реализация addDefaultNetworkActiveListener в Delphi

Используя упомянутое решение здесь, я смог получить статус сети. Но мне также нужно реализовать событие при изменении статуса. Я знаю, что должен использовать addDefaultNetworkActiveListener, но у меня проблемы с интерфейсом OnNetworkActiveListener. Кто-нибудь знает, как выглядит интерфейс для OnNetworkActiveListener?

Спасибо, Сэм.


person Sam    schedule 21.08.2017    source источник


Ответы (1)


Вам нужно построить что-то вроде этого:

uses
  Androidapi.JNIBridge, Androidapi.JNI.Net;

type
  TNetworkActiveListener = class(TJavaLocal, JConnectivityManager_OnNetworkActiveListener)
  public
    procedure onNetworkActive; cdecl;
  end;

Затем объявите переменную:

  FNetworkActiveListener: TNetworkActiveListener;

создайте его и добавьте:

  FNetworkActiveListener := TNetworkActiveListener.Create;
  // Use the code from the other answer for GetConnectivityManager
  GetConnectivityManager.addDefaultNetworkActiveListener(FNetworkActiveListener);
person Dave Nottage    schedule 21.08.2017
comment
Вместо этого FNetworkActiveListener следует объявить как JConnectivityManager_OnNetworkActiveListener, поскольку именно этого ожидает addDefaultNetworkActiveListener(). И, как и в Win32, вы не должны смешивать ссылки на объекты и ссылки на интерфейсы (даже если проблема подсчета ссылок не является проблемой для мобильных устройств). - person Remy Lebeau; 22.08.2017
comment
@RemyLebeau Не говорю, что это не проблема, однако вы можете сообщить, что для всех случаев, когда EMBT делает то же самое в модулях RTL / FMX - person Dave Nottage; 22.08.2017