unit Network;

interface

function IsConnected: Boolean;  // 인터넷 연결 확인

function IsWiFiConnected: Boolean; // WiFi 사용 확인

function IsMobileConnected: Boolean; // 3G,LTE 등 데이터 네트워크 사용 확인

 

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.

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14550
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13190
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15697
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21216
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22483
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18109
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38378
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173884
85 RAD 스튜디오 모바일 개발 환경 설정(안드로이드, iOS) [1] file 험프리 2014.05.19 15927
84 [업데이트][hotifx] RAD Studio XE5 Update 2 Hotfix 6(iOS SDK 7.1 and XCode 5.1 대응) [1] Humphery 2014.05.08 2633
83 델파이로 만든 공학용계산기 앱 Android/iOS 동시 런칭. [4] file c2design 2014.04.11 4149
82 Instagram Filter 효과와 같은 앱 소스(소스 포함) [2] Humphery 2014.04.09 6066
81 공학용 계산기앱 안드로이드 마켓 등록 완료. [2] file c2design 2014.04.03 4237
80 델파이 안드로이드 서비스(링크) 구현방법 Humphery 2014.01.15 4503
79 안드로이드 - 장비 부팅 시 앱을 자동시작(링크) Humphery 2014.01.15 6626
78 [업데이트]RAD Studio Update2에서 iOS Device 컴파일 시 라이브러리 누락 패치 file Humphery 2014.01.03 3434
77 안드로이드 앱 서명 및 배포 file Humphery 2014.01.02 10307
76 파이어몽키 모바일에서 사용자 파일 배포 및 사용 file 험프리 2013.12.27 6188
75 파이어몽키에서 미디어 플레이어 개발 관련 Humphery 2013.12.18 6594
74 안드로이드 API를 파이어몽키에서 사용하기(Toast 메세지 구현) file Humphery 2013.12.17 6214
73 웹상의 이미지를 폼(TImage)에서 사용하는 방법 [3] file Humphery 2013.12.14 11762
72 Delphi XE5 and RAD Studio XE5 Android and iOS Code Samples Humphery 2013.12.14 9342
71 [개발보고] 델파이 안드로이드 앱 출시 기술정보 [7] file c2design 2013.11.08 7098
70 [안드로이드] 외부어플 브라우져 및 PDF 호출 방법 c2design 2013.10.29 5062
» [안드로이드] 네트워크 연결 상태 체크 함수. [1] c2design 2013.10.29 6484
68 XE5 안드로이드 SMS 전송 방법 [2] c2design 2013.09.23 6058
67 맥 OS X 애플리케이션에서 씨리얼포트 연결하기 관리자 2013.08.12 3959