일본인 개발자인 山本隆(야마모토 타카시)의 글을 참고해 안드로이드 앱에서 Wifi 상태를 읽고 키고끄는 기능을 구현해 보고 공유합니다.

❑ 안드로이드 WifiManager 델파이 브릿지 파일 생성

Java2OP 툴을 이용해 WifiManager 델파이 브릿지 파일을 만듭니다.

Java2OP.exe -classes android.net.wifi.WifiManager -unit Androidapi.JNI.WifiManager


위 명령어를 실행하면 아래와 같이 Androidapi.JNI.WifiManager.pas 유닛파일이 생성됩니다. 



해당 유닛파일을 프로젝트 경로 또는 본인이 관리하는 라이브러리 경로에 복사합니다.(저는 D:\Projects\common\rtl\XE7\android 경로에 복사 후 Option > Library Path에 경로를 등록했습니다.)


만약, 아래와 같은 "Missing JDK. Please install JDK 1.7+ or make sure that it is in your PATH" 메시지가 표시된다면


 커맨드라인에서 아래의 명령어를 이용해 환경변수에 추가 후 다시 시도하기 바랍니다.(도움말)
SET PATH=%PATH%;C:\Program Files\Java\jdk1.7.0_25\bin


❑ Androidapi.JNI.WifiManager 유닛을 이용해 WiFI 제어기능 구현

새로운 프로젝트를 생성하고, 위에서 생성한 Androidapi.JNI.WifiManager를 추가합니다.

uses 절에 구현에 필요한 유닛을 추가합니다.

1
2
3
4
5
6
uses
  Androidapi.Helpers,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNIBridge,
  Androidapi.JNI.WifiManager;

WiFi 설정(키고 끄기)하기

1
2
3
4
5
6
7
8
9
10
11
12
procedure SetWifiEnabled(AEnable: Boolean);
var
  Obj: JObject;
  WifiManager: JWifiManager;
begin
  Obj := SharedActivityContext.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
  if Obj = nil then
    Exit;
 
  WifiManager := TJWifiManager.Wrap((Obj as ILocalObject).GetObjectID);
  WifiManager.setWifiEnabled(AEnable);
end;

WiFi 상태 조회

1
2
3
4
5
6
7
8
9
10
11
12
function IsWifiEnabled: Boolean;
var
  Obj: JObject;
  WifiManager: JWifiManager;
begin
  Obj := SharedActivityContext.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
  if Obj = nil then
    Exit;
 
  WifiManager := TJWifiManager.Wrap((Obj as ILocalObject).GetObjectID);
  Result := WifiManager.isWifiEnabled;
end;

❑ 사용자 권한 설정

위 Wifi 제어와 상태조회 기능을 사용할 경우 사용자 권한을 추가해야 합니다.

Project Option > Uses permissions

  • Access wifi state : Wifi 상태 조회

  • Change wifi state : Wifi 상태 설정

❑ 최종 화면과 소스코드

참고 글


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15559
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 14003
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16537
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22124
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23375
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18967
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39365
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174768
269 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 108307
268 델파이 XE2에서 dbExpress를 이용해 오라클 연결하기 file 박병일 2012.02.15 17733
267 다중 클라이언트를 위한 DataSnap 서버 만들기 관리자 2011.12.22 16119
266 델파이XE2의 VCL Styles 활용하기 박병일 2012.01.19 15366
265 dbExpress 의 SQLConnection 에서 트랜젝션 처리하기 박병일 2012.02.08 13976
264 [델파이 문법 시리즈] #1. 제네릭 - 개요 file 관리자 2012.03.21 13171
263 델파이 XE2 DataSnap Client 만들기 [1] 관리자 2011.12.22 12897
262 [델파이 업그레이드 마이그레이션 무상 컨설팅] 체크리스트와 가이드(첨부 파일) [1] file 관리자 2012.02.08 12882
261 "모바일 앱" 개발 또는 유지관리, 데브기어와 해결하세요! file 관리자 2015.03.26 12737
260 [델파이 문법] 클래스와 객체 #8 file 관리자 2012.05.07 12584
259 델파이로 만든 구글 지오코딩 쎔플 입니다. 박병일 2012.02.06 11021
258 [델파이 문법] 클래스와 객체 #1 file 관리자 2012.04.12 10873
257 [오픈소소] 델파이용 TProcessInfo 클래스 file 관리자 2012.05.23 10454
256 VCL Style Util 박병일 2012.01.11 10287
255 [델파이 문법 시리즈] #2. 제네릭 - 용어 file 관리자 2012.03.22 10012
254 [델파이 문법] 클래스와 객체 #10 file 관리자 2012.05.22 9857
253 [델파이 문법] 클래스와 객체 #3 file 관리자 2012.04.18 9325
252 델파이 XE2 Update4의 새기능 - 더 쉬운 모바일 REST 접속 file 박병일 2012.03.06 9145
251 [델파이 문법] 프로그램과 유닛 #1 file 관리자 2012.09.03 9071