검색결과 리스트
글
안드로이드 프레임워크 프로그래밍(6) [Wi-Fi 접속 확인 Toast 만들기]
안드로이드/프레임워크
2015. 1. 30. 23:30
최근 안드로이드 프레임워크 공부를 해보던 중 한 번 도전하고 싶었던 것이 있었습니다. 바로 갤럭시 S2에서 지원하던 Wi-Fi 접속 알림창이었습니다.
※갤럭시 S2 JellyBean 4.1에서의 모습입니다.
위에서 보는 바와 같이 안드로이드 기기가 Wi-Fi에 접속하면 Framework를 통해 Toast가 이를 알려주는 모습을 보고 이를 Nexus 폰에도 적용해보자는 마음으로 도전하게 되었습니다.
※본 포스팅은 Nexus5 KitKat 4.4.4 환경에서 제작되었음을 알립니다.
1. 아래 굵은 표시로 추가된 소스코드를 안드로이드 소스에 추가합니다.
/frameworks/base/services/java/com/android/server/ConnectivityService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | @Override public void handleMessage(Message msg) { NetworkInfo info; switch (msg.what) { case NetworkStateTracker.EVENT_STATE_CHANGED: { info = (NetworkInfo) msg.obj; NetworkInfo.State state = info.getState(); if (VDBG || (state == NetworkInfo.State.CONNECTED) || (state == NetworkInfo.State.DISCONNECTED) || (state == NetworkInfo.State.SUSPENDED)) { log("ConnectivityChange for " + info.getTypeName() + ": " + state + "/" + info.getDetailedState()); //APPEND if ( state == NetworkInfo.State.CONNECTED ){ Toast.makeText(mContext, info.getExtraInfo(). substring(1,info.getExtraInfo().length() - 1) + "에 연결되었습니다.", Toast.LENGTH_SHORT).show(); } //END } // Since mobile has the notion of a network/apn that can be used for // provisioning we need to check every time we're connected as // CaptiveProtalTracker won't detected it because DCT doesn't report it // as connected as ACTION_ANY_DATA_CONNECTION_STATE_CHANGED instead its // reported as ACTION_DATA_CONNECTION_CONNECTED_TO_PROVISIONING_APN. Which // is received by MDST and sent here as EVENT_STATE_CHANGED. if (ConnectivityManager.isNetworkTypeMobile(info.getType()) && (0 != Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0)) && (((state == NetworkInfo.State.CONNECTED) && (info.getType() == ConnectivityManager.TYPE_MOBILE)) || info.isConnectedToProvisioningNetwork())) { log("ConnectivityChange checkMobileProvisioning for" + " TYPE_MOBILE or ProvisioningNetwork"); checkMobileProvisioning(CheckMp.MAX_TIMEOUT_MS); } } | cs |
2. 적용된 소스코드를 빌드하여 이미지를 새로 만듭니다.
$ make -j4
3. 안드로이드 기기에 이미지를 올린 후 동작을 확인합니다.
300x250
'안드로이드 > 프레임워크' 카테고리의 다른 글
안드로이드 프레임워크 프로그래밍(8) [JNI에서 작성된 C++ 코드에서 C 코드 함수 호출하기] (0) | 2015.02.16 |
---|---|
안드로이드 프레임워크 프로그래밍(7) [NDK 활용을 위한 JNI로 JAVA와 C 상호 호출] (0) | 2015.02.06 |
안드로이드 프레임워크 프로그래밍(5) [Toast 구현하기] (0) | 2015.01.25 |
안드로이드 프레임워크 프로그래밍(4) [시스템서비스 추가하기] (12) | 2015.01.24 |
리눅스로 Nexus 기기의 안드로이드 버전 다운그레이드 하기 (0) | 2015.01.22 |