EXODUS_Q™
14.06.17
조회 수 6877
추천 수 6
댓글 14



[노트1 젤리빈 기준입니다./PC로 작성한 게시글입니다.]


 


〉퀵패널에 손전등 버튼을 추가하여 끄고 켤수있게 합니다.


 


〉xda의 가이드를 기준으로 설명해드리겠습니다.


http://forum.xda-developers.com/showpost.php?p=47555600&postcount=11


 


〉필요한 파일은 세가지 되겠습니다.


SystemUI.apk/SecSettings.apk/SecSettingsProvider.apk


 


〉디컴파일과 컴파일이 가능한 분들에게 해당됩니다.


 


 


 


 


1.위의 xda원문 링크에서 파일을 다운로드하여 압축을 푸세요.(파일은 이 게시글에도 첨부(resources.rar)해뒀습니다.)


 


 


 


 


2.SystemUI.apk 디컴파일 하세요.


 


 


 


 


3.첨부된 파일(resources)/SystemUI/res/drawable-xhdpi폴더안에 있는,


 


tw_quick_panel_icon_flashlight_on.png


tw_quick_panel_icon_flashlight_off.png


이 두개의 아이콘을 디컴파일한 SystemUI.apk의 같은 경로에 투척하세요.


(이 아이콘은 여러분 맘대로 딴걸로 바꾸면 됩니다.이름은 똑같이해서...)


 


 


 


 


4.SystemUI.apk/res/values/strings.xml을 열어


.<string name="quickpanel_flashlight_text">Torch</string>


이 구문을 맨 밑에 추가하세요.


 


 


 


 


5.Torch를 "손전등"같이 한글화시키는게 사용하기 편하니까 이번엔 SystemUI.apk/res/values/strings-ko.xml을 열어,


<string name="quickpanel_flashlight_text">손전등</string>


이 구문을 맨 밑에 추가하세요.


(당연히 사용자 마음대로 다른 한글로 수정하셔도 됩니다.예:후래쉬/렌튼/비상등...)


 


 


 


 


6.여기서 일단 컴파일 하세요.


 


 


 


 


7.그리고, 컴파일 완료와 동시에 방금 컴파일된 UnsignedSystemUI.apk파일을 다시 디컴파일 하세요.


》왜 이렇게 하냐면~??...조금전에 손전등에 필요한 아이콘파일과 string구문을 추가했는데, 그게 public.xml에서 새로 생성됐고, 새로 생성된 public의 값을 smali에 있는 값과 똑같이 해주기 위함입니다. 이걸 안해주면 손전등이 제대로 동작하지 않습니다.)


 


 


 


 


8.디컴파일한 UnsignedSystemUI.apk/res/values/public.xml을 열어,


<public type="drawable" name="tw_quick_panel_icon_flashlight_off" id="0x7f020281" />


<public type="drawable" name="tw_quick_panel_icon_flashlight_on" id="0x7f020282" />


<public type="string" name="quickpanel_flashlight_text" id="0x7f0a0150" />


이렇게 세가지 구문을 찾으세요.


(여기서 id값은 제 갤노트1 기준이므로 여러분들의 id값은 각자 다 다를수 있습니다.)


일단, 확인했으면 public.xml 창은 그대로 열어두세요.


 


 


 


 


 


9.이번엔 첨부된 파일(resources)/SystemUI/smali/com/android/systemui/statusbar/policy/quicksetting폴더에 있는 FlashlightQuickSettingButton.smali 를 디컴파일한 SystemUI.apk의 똑같은 경로에 투척하세요.


(주의:UnsignedSystemUI.apk에 넣으면 안됩니다.)


 


 


 


 


 


10.FlashlightQuickSettingButton.smali를 열어보면 아래와 같은 세개의 구문이 있습니다.


위의 8번에서 일단 열어두라고했던 public.xml의 id값과 여기의 값을 똑같이 해주면 됩니다.


초록색 글자를 public.xml에서 검색하여 값을 찾아, 왼쪽의 0x7f..값을 지우고 그 위치에 바꿔주면 됩니다.


 


const v3, 0x7f0a01b7    <!-- id of quickpanel_flashlight_text



const v4, 0x7f02033d    <!-- id of tw_quick_panel_icon_flashlight_on



const v5, 0x7f02033c    <!-- id of tw_quick_panel_icon_flashlight_off


 


 


 


 



11.SystemUI.apk작업은 끝났습니다.컴파일하면 됩니다.


 


 


 


 


12.이번엔, SecSettings.apk 디컴파일 하세요.


 


 


 


 


13.첨부된 파일(resources)/SecSettings/res/drawable-xhdpi폴더안에 있는 notification_panel_flashlight.png파일을 디컴파일한 SecSettings.apk의 똑같은 경로에 투척하세요.아이콘은 딴걸로 바꾸셔도 됩니다.(Airplane.png파일은 무시하시구요~..ㅋ)


 


 


 


 


14.이번엔 SecSettings/res/values/strings.xml을 열어 맨밑에,


<string name="notification_panel_flashlight">Torch</string>


이 구문을 추가하세요.


 


그리고, SystemUI.apk작업할때와 마찬가지로 strings-ko.xml에도 같은 구문을 추가하면 한글화가 되겠죠~^^


<string name="notification_panel_flashlight">손전등</string>


 


 


 


 


15.이번엔,SecSettings/smali/com/android/settings폴더에 있는 NotificationPanel.smlai를 여세요.


 


 


 


 


16.아래 메소드를 찾으세요.


 .method public MakeConvertPanelName()V


 


그리고, 아래 파란색으로 돼있는 구문을 저 위치에 추가해주면 됩니다.


(.line번호는 각자 다를수 있습니다./앞에 주석(#)붙은 글자는 넣지마세요.)


Code:
.method public MakeConvertPanelName()V
    .registers 4


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


    const-string v1, "Wifi"


    const-string v2, "notification_panel_wifi"


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


...
...


    .line 137
    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;
 
    # Torch patch start
    .line 148 
    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; 
    # End


 


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


    const-string v1, "Empty"


    const-string v2, "notification_panel_empty"


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


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


    const-string v1, "notification_panel_wifi"


    const-string v2, "Wifi"


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


...
...


    .line 157
    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;
 
    # Torch patch start
    .line 168 
    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; 
    # End


 


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


    const-string v1, "notification_panel_empty"


    const-string v2, "Empty"


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


 


 


 


 


 


17.자, SecSettings.apk작업도 끝났습니다.컴파일 하세요.


 


 


 


 


18.이제 마지막으로 SecSettingsProvider.apk/res/values/strings.xml을 열어,


<string name="def_candidate_notification_list">여기에 Flashlight;를 추가해주세요</string>


 


 


 


 


19.진짜 마지막으로, 첨부파일(resources)에 있는 Torch.apk파일을 폰의 시스템으로 옮겨 퍼미션 644준 후 system/app에 투척하세요.


 


 


 


 


끝.


수고하셨습니다.^^


 


 


 


 


 




 


 





 


 





Extra Form
첨부
resources.rar  [File Size:196.2KB/Download:24]
Screenshot_2014-06-17-12-27-39.png  [File Size:239.7KB/Download:0]
Screenshot_2014-06-17-12-28-19.png  [File Size:283.0KB/Download:0]
Screenshot_2014-06-17-12-27-51.png  [File Size:156.6KB/Download:1]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.

EXODUS_Q™ 님의 SIGNATURE

profile
Just Do It.
댓글 14
  • ?
    오호 감사합니다..아이가 잠들면 한번 도전해봐야겠습니다.
  • profile
    ㅋ..사랑표현님께 드리는 게시글입니다.^^
  • ?
    천재...이십니다..
  • profile
    xda쪽분들이 대단하신거죠~(전..그냥..퍼와서 옮긴것뿐..ㅎ)
  • profile
    순정기반으로 사용하더라도 LongPressMenuButtonToKillApp같은 기능은 필요하더군요. (다음 게시글 예고편이였습니다..ㅋ)
  • profile
    이건 와남 아니었으면 죽자고 매달렸을 아이템이네요 ㅋ
  • ?
    음..롱프레스 메뉴버튼..메뉴를 길게 누르면 어플이 꺼지는건가요? 아니면 켄슬키를 눌르면 꺼지는건가요..훔.. 메뉴키를 누르면 꺼지는 기능은 가끔 게임할대..잘못누르면 꺼져버리더라구요..ㅜ.ㅜ
  • profile
    아..게임할때 잘못누르면 꺼지긴 합니다...그런 이건 패쓰~..ㅎㅎ
  • profile
    xposed생기고부터 할게없어요...ㅋ
  • ?
    무지한 저로서는 도무지 알수가 없습니다!^^; 대단하시다는 말밖에는...
  • profile
    아이언울프님~절대 그렇지 않습니다. 컴퓨터에 JAVA를 설치하고, 환경변수설정을 한 후에, APKmanager를 설치하여, 아이언울프님의 폰속에 들어있는 apk파일을 가지고 디컴파일만 하면, 제가 설명한 모든 내용들이 한눈에 쏙 들어올겁니다.그 처음의 과정만 잘 해내시면 아주 멋진 테마사가 되실수 있을겁니다.^^
  • ?
    세나™
    14.06.18
    http://forum.xda-developers.com/showthread.php?t=2617552 여기 있는 팁 이용하시면 따로 id 맞추실일 없을걸요?
  • profile
    (심야에 잠이 안와서 돌겠네요..ㅋ) 4.3/4.4에 해당되는걸로....쨌든 뭐 다양한 방법이 많을수록 좋겠죠~^^
  • ?
    사한
    14.06.19
    허허.. 손전등 하나가 이렇게 손이 많이가네요
댓글 쓰기 권한이 없습니다.
정렬 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2