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 15442
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13962
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39257
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174713
1263 이 달의 기술자료 - 2020년 09월 file 험프리 2020.08.27 260
1262 델파이/C++빌더에 TTcpClient, TTcpServer, TUdpSocket 등록하기 [1] file 험프리 2020.08.26 623
1261 [고객 사례- 델파이, 예술, 창작] 아트젠, 컴퓨터로 완성하는 미술 작품 관리자 2020.08.25 395
1260 2020 년 8 월 GM 업데이트 관리자 2020.08.24 485
1259 C++17 알고리즘 라이브러리 병렬 정렬 사용하기 관리자 2020.08.13 405
1258 [고객 사례- 의료, C++빌더, 모바일, IoT] 브루너 컨설팅, 손목 웨어러블 헬스케어 기기 관리자 2020.08.11 401
1257 [고객 사례- POS, 주문, C++빌더, 멀티플랫폼] BCPOS - 클라우드를 연동한 다양한 간편 결제 지원 POS 관리자 2020.08.04 756
1256 이 달의 기술자료 - 2020년 08월 험프리 2020.07.30 363
1255 [10.4 시드니][패치] RAD스튜디오 10.4 '세 번째 패치(Patch 3)': VCL그리드, C++Win64 디버깅, C++ 안드로이드 예외처리 핸들링 및 리소스 등 관리자 2020.07.29 686
1254 [생산성] RAD 스튜디오, 델파이, C++빌더 단축키 표 관리자 2020.07.28 414
1253 [발표자료] VCL 애플리케이션 확장하기 with RAD 서버 관리자 2020.07.22 389
1252 [발표자료] 20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio 관리자 2020.07.22 263
1251 [무료 툴] 델파이 JSON 데이터 자동 연동 프로그램 file 관리자 2020.07.20 807
1250 델파이 개발자 관점에서 본 C++ 빌더 file 김원경 2020.07.20 1189
1249 [10.4 시드니][패치] RAD스튜디오 10.4 '두 번째 패치(Patch 2)'를 다운로드 받으세요! 관리자 2020.07.20 917
1248 안드로이드 SDK 수동 설치 방법 file 김원경 2020.07.15 4093
1247 OAuth 2.0 연동 - 네이버 API 연동(네이버 아이디로 로그인) 험프리 2020.07.15 1191
1246 RAD Studio의 생산성 툴링 : 탐색기 김원경 2020.07.09 355
1245 RAD Studio의 생산성 툴링 : 북마크 김원경 2020.07.09 358
1244 iOS 앱스토어 1024x1024 아이콘 문제에 대한 해결 방법 김원경 2020.07.08 478