zoukankan      html  css  js  c++  java
  • Delphi XE5 android 获取网络状态《转》

    unit Androidapi.JNI.Network;
    
    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) 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) 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.

    调用方法:

    if  IsConnected  then
     ShowMessage('IsConnected');
    if IsWiFiConnected then
     ShowMessage('IsWiFiConnected');
    if IsMobileConnected then
     ShowMessage('IsMobileConnected');
  • 相关阅读:
    flume sink两种类型 file_rool 自定义sing com.mycomm.MySink even if there is only one event, the event has to be sent in an array
    为什么引入进程20年后,又引入线程?
    As of Flume 1.4.0, Avro is the default RPC protocol.
    Google Protocol Buffer 的使用和原理
    Log4j 2
    统一日志 统一订单
    网站行为跟踪 Website Activity Tracking Log Aggregation 日志聚合 In comparison to log-centric systems like Scribe or Flume
    Percolator
    友盟吴磊:移动大数据平台的架构、实践与数据增值
    Twitter的RPC框架Finagle简介
  • 原文地址:https://www.cnblogs.com/LceMeaning/p/3509327.html
Copyright © 2011-2022 走看看