Network check

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Network check

Mesaj gönderen gaus »

Hepinize kolay gelsin arkadaşlar;
viewtopic.php?f=36&t=32779 konusunu inceledim biraz uğraştım ama bilgi eksikliğimden kaynaklı olduğunu düşündüğüm hatalarım var
sorum da şu
ben yukarıda ki gibi bir timer ile değil de bir buton ile bu işlemi yapmak istiyorum

Kod: Tümünü seç

   FNS := TNetworkState.Create;
  if not FNS.IsConnected then
  begin
    Main.Name.Text := 'off';
  end else
  begin
    Main.Name.Text := 'on';
  end;
end;
bu kodu denedim ama bir sonuç alamadım
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Network check

Mesaj gönderen gaus »

kolay gelsin çözümünü bir alman forum sitesinden yarımyamalak almancam ile çözdüm şimdi iki tane olay var;
birincisi;

Kod: Tümünü seç

unit checknet;

interface
function IsConnected: Boolean;

function IsWiFiConnected: Boolean;

function IsMobileConnected: Boolean;


implementation
uses
  System.SysUtils,
  Androidapi.JNIBridge,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.JavaTypes,
  FMX.Helpers.Android;
type
  JConnectivityManager = interface;
  JNetworkInfo = interface;

  JNetworkInfoClass = interface(JObjectClass)
  ['{E92E86E8-0BDE-4D5F-B44E-3148BD63A14C}']
  end;

  [JavaSignature('android/net/NetworkInfo')]
  JNetworkInfo = interface(JObject)
  ['{6DF61A40-8D17-4E51-8EF2-32CDC81AC372}']
    {Methods}
    function isAvailable: Boolean; cdecl;
    function isConnected: Boolean; cdecl;
    function isConnectedOrConnecting: Boolean; cdecl;
  end;
  TJNetworkInfo = class(TJavaGenericImport<JNetworkInfoClass, JNetworkInfo>) end;

  JConnectivityManagerClass = interface(JObjectClass)
  ['{E03A261F-59A4-4236-8CDF-0068FC6C5FA1}']
    {Property methods}
    function _GetTYPE_WIFI: Integer; cdecl;
    function _GetTYPE_WIMAX: Integer; cdecl;
    function _GetTYPE_MOBILE: Integer; cdecl;
    {Properties}
    property TYPE_WIFI: Integer read _GetTYPE_WIFI;
    property TYPE_WIMAX: Integer read _GetTYPE_WIMAX;
    property TYPE_MOBILE: Integer read _GetTYPE_MOBILE;
  end;

  [JavaSignature('android/net/ConnectivityManager')]
  JConnectivityManager = interface(JObject)
  ['{1C4C1873-65AE-4722-8EEF-36BBF423C9C5}']
    {Methods}
    function getActiveNetworkInfo: JNetworkInfo; cdecl;
    function getNetworkInfo(networkType: Integer): JNetworkInfo; cdecl;
  end;
  TJConnectivityManager = class(TJavaGenericImport<JConnectivityManagerClass, JConnectivityManager>) end;

function GetConnectivityManager: JConnectivityManager;
var
  ConnectivityServiceNative: JObject;
begin
  ConnectivityServiceNative := SharedActivityContext.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE);
  if not Assigned(ConnectivityServiceNative) then
    raise Exception.Create('Could not locate Connectivity Service');
  Result := TJConnectivityManager.Wrap(
    (ConnectivityServiceNative as ILocalObject).GetObjectID);
  if not Assigned(Result) then
    raise Exception.Create('Could not access Connectivity Manager');
end;

function IsConnected: Boolean;
var
  ConnectivityManager: JConnectivityManager;
  ActiveNetwork: JNetworkInfo;
begin
  ConnectivityManager := GetConnectivityManager;
  ActiveNetwork := ConnectivityManager.getActiveNetworkInfo;
  Result := Assigned(ActiveNetwork) and ActiveNetwork.isConnected;
end;

function IsWiFiConnected: Boolean;
var
  ConnectivityManager: JConnectivityManager;
  WiFiNetwork: JNetworkInfo;
begin
  ConnectivityManager := GetConnectivityManager;
  WiFiNetwork := ConnectivityManager.getNetworkInfo(TJConnectivityManager.JavaClass.TYPE_WIFI);
 Result := WiFiNetwork.isConnected;
end;

function IsMobileConnected: Boolean;
var
  ConnectivityManager: JConnectivityManager;
  MobileNetwork: JNetworkInfo;
begin
  ConnectivityManager := GetConnectivityManager;
  MobileNetwork := ConnectivityManager.getNetworkInfo(TJConnectivityManager.JavaClass.TYPE_MOBILE);
  Result := MobileNetwork.isConnected;
end;

end.

Böyle bir unit oluşturun;
daha sonra ;
Resim
resimdeki ayarları yaptıktan sonra ister timer ile ister buton ile şu şekilde kontrol ettirebilirsiniz;

Kod: Tümünü seç

 if not IsConnected then
 begin
   showmessage('internet yok');
 end
 else
 begin
   showmessage('internetvar');
   exit;
 end;
burada showmessage yerine istediğiniz işlemleri yapabilirsiniz;
not:hem wife hem mobile internette istediğiniz sonuçları alabilirsiniz
denedim kesinlikle çalışıyor
Cevapla