Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

LITTLEBEAR

핫스팟/플래시 토글 추가 본문

끄적끄적

핫스팟/플래시 토글 추가

소심한작은곰 2013. 7. 14. 21:04

삼성 정식 젤리빈/알림창 수정 기능 작동할 때 추가하는 방법입니다..

여기서 필요한 파일들은 모두 Disaster Rom 에서 빼온것들입니다

먼저 DIsaster rom 의 개발자이신 Mirko ddd님, 국내 SKT에 맞게 포팅하신 phyb 님 감사드립니다.

 

 

총 수정해야 할 어플들은

SecSettingsProvider.apk

SecSettings.apk

SecSettings.odex

SystemUI.apk

SystemUI.odex

준비물은

핫스팟 플래시 토글 추가.egg

Torch.apk 어플 설치하셔야 작동합니다.

 

 

SystemUI.apk 에서는

첨부파일에 있는

tw_quick_panel_icon_flashlight_*.png

tw_quick_panel_icon_wifiap_*.png

이 파일들을 전부 drawable-hdpi 폴더에 넣어 주시고

values/public.xml 에서는 이 각각의 png 파일에 대해서 id 값 부여를 해주시고

values/public.xml 파일에서 string 형태로 quickpanel_flashlight_text 이 이름으로 id 값 부여해놓은 다음.

(원래는 string 값으로 quickpanel_wifiap_text 라는 것도 해줘야 되지만 quickpanel_wifi_hotspot_text 라는 string 값이 이미 있기때문에 이걸로 대체합니다.)

values/public.xml 부분을 다 수정하셨다면

아까 새로 부여한 png파일들의 id 값, quickpanel_flashlight_text의 id 값, quickpanel_wifi_hotspot_text의 id 값을 따로 메모해 주세요

다음은 values/strings.xml 파일에서 quickpanel_flashlight_text 라는 이름으로 새로 string 값을 지정해주세요.

(시스템 언어에 따라 다르게 하시고 싶으신 분은 당연히 values-ko/strings.xml파일에도 추가해 주셔야겠지요.)

그럼 SystemUI 에서 apk 부분의 수정은 끝입니다.

 

 

SystemUI.odex 에서는

디컴파일하셔서 com/android/systemui/statusbar/policy/quicksetting 폴더에

첨부파일에 있는

 FlashlightQuickSettingButton.smali

WifiApQuickSettingButton.smali

WifiApQuickSettingButton$WifiApReceiver.smali

파일을 넣어줍니다.

 

그리고 FlashlightQuickSettingBUtton.smali 파일을 여셔서

    const v3, 0x7f0a0002

    const v4, 0x7f02007b

    const v5, 0x7f02007a

0x7f0a0002 부분은 아까 quickpanel_flashlight_text의 id

0x7f0a007b 부분은 아까 tw_quick_panel_icon_flashlight_on의 id

0x7f02007a 부분은 아까 tw_quick_panel_icon_flashlight_off의 id를 써 줍니다.

마찬가지로 WifiApQuickSettingButton.smali 에서도

     const v3, 0x7f0a00fc

    const v4, 0x7f02007e

    const v5, 0x7f02007d

    const v6, 0x7f02007c

차례대로

quickpanel_wifi_hotspot_text

tw_quick_panel_icon_wifiap_on

tw_quick_panel_icon_wifiap_off

tw_quick_panel_icon_wifiap_dim

순서대로 id 를 써 주세요.

그럼 SystemUI 에서의 수정은 모두 끝입니다.

 

 

SecSettingsProvider.apk 에서는

values/strings.xml 에서 def_notification_panel_candidate_app_list 이런 이름을 가진 string 의 값에

 WifiAp;Flashlight;

추가해 줍니다

(string 의 이름은 저도 확신해 드릴수가 없습니다. 알림창 활성화를 하신 분 마음대로 지정할 수 있는부분이라저같은 경우에는 위처럼 def_notification_panel_candidate_app_list 로 하였지만 어떤 분은 def_active_notification_list_q1 으로 지정해 줄수도 있는 부분이라..)

SecSettingsProvider 에서는 이 작업이 끝입니다

 

 

SecSettings.apk 에서는

첨부파일의

notification_panel_flashlight.png

notification_panel_wifiap.png

파일을 drawable-hdpi 폴더에 넣어줍니다.(이름 바꾸시면 안됩니다)

역시나 values/public.xml 파일에 들어가셔서아까 추가한 png 파일들도 id 값을 부여해주시고

string 형태로 또다시

notification_panel_wifiap

notifcation_panel_flashlight

라는 이름으로 id를 부여해줍니다.(이름 바꾸시지 마세요)

string 형태로 id값을 부여해줬으니 그 string 으로 또 values/strings.xml 파일에 추가시켜 줘야겠지요

values/strings.xml 파일에 들어가셔서

notification_panel_wifiapWifiHotspot으로

notification_panel_flashlight Torch 로 추가해줍니다.

(통일성을 위해 제가 그렇게 입력하라고 한 것이지지 WifiHotspot과 Torch 는 임의로 바꿀수 있는 부분입니다.또 시스템 언어에 따라 영어에서는 Torch로 나오고 한글로 설정하면 손전등이라고 나오게 하고싶으신 분들은 values-ko 안의 strings.xml 도 수정하셔야겠지요)

그러면 SecSettings.apk 의 작업은 끝났습니다.

 

SecSettings.odex 파일에서

com/android/settings/NotificationPanel.smali

파일을 여신 후

     iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;

     const-string v1, "Sync"

     const-string v2, "notification_panel_sync"

     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

이런 형태를 찾아주신후 그 밑에 추가합니다.

     iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;

     const-string v1, "Flashlight"

     const-string v2, "notification_panel_flashlight"

     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

        iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;

     const-string v1, "WifiAp"

     const-string v2, "notification_panel_wifiap"

     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

(v1, v2 이런 형태는 다를 수도 있습니다. 다르다면 각자의 기기에 맞게 수정해주세요)

이번에는

     iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;

     const-string v1, "notification_panel_sync"

     const-string v2, "Sync"

     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

이런 형태를 찾으셔서 역시 그 밑에 추가합니다.

    iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;

     const-string v1, "notification_panel_flashlight"

     const-string v2, "Flashlight"

     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

     iget-object v0, p0, Lcom/android/settings/NotificationPanel;->mConvertPanelItemstring:Ljava/util/HashMap;

     const-string v1, "notification_panel_wifiap"

     const-string v2, "WifiAp"

     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

적용하실 때는 data/data/com,android.providers.settings 폴더 지워주시는거 잊지 마세요.