일본인 개발자인 山本隆(야마모토 타카시)의 글을 참고해 안드로이드 앱에서 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 15513
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13977
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16519
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22079
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23302
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18946
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39293
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174742
463 리펙토링 1-클래스, 정적메소드, 속성, 필드 이동하기 file 김원경 2017.02.23 652
462 코드 서명 – 여러분이 개발한 프로그램, 컴퓨터 바이러스처럼 보이지는 않나요? 관리자 2021.05.12 649
461 [베를린 U2] 윈도우 10 캘린더 활용하기 (1분 동영상) 험프리 2016.11.15 649
460 [고객 사례- 의료, 델파이] 의료용 소프트웨어(폐활량&심전도 체크) - Advanced Spirometer and ECG 관리자 2019.10.25 647
459 [시애틀] 개발 효율성을 극대화할 수 있도록 멀티-모니터를 활용해 개발환경 레이아웃을 구축할 수 있습니다. Humphery 2015.09.04 647
458 [업데이트][핫픽스][10,2 도쿄] 툴체인 이슈 핫픽스 험프리 2017.05.10 646
457 이 달의 기술자료 - 2015년 08월 험프리 2015.07.28 645
456 [기술백서] 다양한 팀 '협업' 방법론과 개발 방식 관리자 2020.03.18 645
455 [10.3 리오][업데이트 3] 엔터프라이즈 커넥터가 무상 제공됩니다 (엔터프라이즈, 아키텍트 사용 고객 한정) file 관리자 2019.11.22 645
454 이 달의 기술자료 - 2017년 12월 file 험프리 2017.11.24 644
453 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 2편 - 7장. 카메라(뷰 포인트)의 이해와 활용 관리자 2020.02.06 643
452 [RAD Studio 10.4 패치1 ] C ++ 디버깅과 누락 파일 패치 – 패치를 설치하는 새로운 방법! file 김원경 2020.06.01 640
451 [10.2 도쿄] RTL file 김원경 2017.03.24 638
450 [10.2 도쿄][릴리즈2] RAD 서버 싱글 사이트 라이선스 제공 험프리 2017.12.13 638
449 델파이/C++빌더에 TTcpClient, TTcpServer, TUdpSocket 등록하기 [1] file 험프리 2020.08.26 636
448 [10.2 도쿄][릴리즈3] 파이어몽키 UI 템플릿 관리자 2018.03.30 632
447 이 달의 기술자료 - 2016년 06월 file 험프리 2016.05.27 632
446 새롭게 출시될 RAD스튜디오 'NEW' 베타 버전, 지금 신청하세요! (유지보수계약 고객 한정) 관리자 2018.10.05 631
445 올인원 테스트 자동화 솔루션 - 래노렉스(Ranorex) file 관리자 2018.12.11 629
444 [고객 사례- 금융, 델파이] 주식, 화폐 등 금융 정보 분석 소프트웨어 - 게임스탑, 비트코인, 아마존, 구글 등 관리자 2021.02.04 628