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 17869
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 16233
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18877
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 24464
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25840
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 21202
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41793
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 177092
1243 델파이 XE 컨버전 가이드 (첨부파일) file 관리자 2012.06.21 6673
1242 파이어몽키에서 미디어 플레이어 개발 관련 Humphery 2013.12.18 6637
1241 바코드 스캐너 기능 구현하기(iOS, Android) [2] 험프리 2015.01.14 6624
1240 [동영상 강의] 델파이 기본 교육_17.인사관리(편집과차) 관리자 2012.07.25 6567
1239 [델파이 문법] 문법 요소 #2 file 관리자 2012.09.20 6564
1238 [동영상강의] 델파이 기본 교육_8.개체와 컴포넌트 사용방법(수동) 관리자 2012.06.08 6564
1237 [동영상강의] 델파이 기본 교육_16.인사관리 화면(연결과 조회) 관리자 2012.07.19 6562
1236 [델파이 문법] 클래스와 객체 #5 file 관리자 2012.04.23 6558
1235 [델파이 문법] 클래스와 객체 #7 file 관리자 2012.04.30 6536
1234 [델파이 문법] 클래스와 객체 #18 file 관리자 2012.07.02 6533
1233 [동영상 강의] 델파이 기본 교육_19.예외(Exception)처리 관리자 2012.08.06 6529
1232 [델파이 문법] 클래스와 객체 #17 file 관리자 2012.06.28 6514
» [안드로이드] 네트워크 연결 상태 체크 함수. [1] c2design 2013.10.29 6495
1230 [델파이 문법] 클래스와 객체 #4 file 관리자 2012.04.19 6483
1229 [동영상강의] 델파이 기본 교육_10.폼의 속성과 이벤트 관리자 2012.06.14 6481
1228 David I의 31일 동영상(한글자막) - TLang컴포넌트로 다국어 파이어몽키 앱 만들기(델파이 동일 적용) [1] 관리자 2013.05.06 6444
1227 [델파이 문법] 프로시저와 함수 #3 file 관리자 2012.07.31 6431
1226 [델파이 문법] 프로그램과 유닛 #4 file 관리자 2012.09.12 6403
1225 [무료 동영상 강의] 전체 모음 링크 관리자 2014.07.10 6395
1224 [델파이 문법] 데이터 타입, 변수 및 상수 #4 file 관리자 2013.02.19 6386