LITTLEBEAR
핫스팟/플래시 토글 추가 본문
삼성 정식 젤리빈/알림창 수정 기능 작동할 때 추가하는 방법입니다..
여기서 필요한 파일들은 모두 Disaster Rom 에서 빼온것들입니다
먼저 DIsaster rom 의 개발자이신 Mirko ddd님, 국내 SKT에 맞게 포팅하신 phyb 님 감사드립니다.
총 수정해야 할 어플들은
SecSettingsProvider.apk
SecSettings.apk
SecSettings.odex
SystemUI.apk
SystemUI.odex
준비물은
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_wifiap는 WifiHotspot으로
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 폴더 지워주시는거 잊지 마세요.
'끄적끄적' 카테고리의 다른 글
4.2.2처럼 토글 확장 (4) | 2013.07.29 |
---|---|
[뻘팁]CSC에 잇는 설정들 (0) | 2013.07.14 |
smali 수정을 좀더 쉽게.. (1) | 2013.07.14 |
젤리빈 4.2.2 스타일 상단바 만들기(토글 확장 아닙니다) (10) | 2013.07.13 |
알림창 수정기능 활성화 (5) | 2013.05.03 |