Hax빙글
12.12.06
조회 수 11176
추천 수 54
댓글 1

*문의 받지 않습니다. smali에 대한 기초 지식이 없으신 분은 뒤로가기를 눌러주세요.


 


 


갤럭시 노트 2에는 물결락 사용 중 S펜으로 락화면 터치 시 잉크가 퍼지는 효과가 납니다.


이 글은 그 효과를 젤리빈 펌웨어로 업그레이드 된 다른 기종에서 사용하는 방법입니다.


일단 첨부파일을 다운받아주세요.


첨부파일은 물결, 잉크효과에 관여하는 smali파일, 잉크 효과 설정 화면의 이미지파일, lib파일, 락스크린 세팅 smali파일, SecSettings.apk의 id파일로 이루어져 있습니다.


하나하나 설명해드리겠습니다.


 


일단 CircleUnlockRippleRenderer*.smali들은 렌더링 관련 식이 포함된 smali파일로, 갤럭시노트 2 해외판 유출 젤리빈 펌웨어에서 가져온 파일들입니다.


이 부분에서 저는 "com.sec.feature.spen_usp" 이 시스템 기능으로 포함되어있는지 확인하는 if 구문을 삭제하고,


Landroid/view/MotionEvent;->getSource()I 를 이용해 가져오는 소스를 중간에 가로채 0x4002(SOURCE_STYLUS)로 바꿔줌으로써 손가락으로 터치해도, S-Pen이 없는 장치여도 잉크 효과가 작동되도록 수정했습니다.


이 파일은 그냥 android.policy의 최상위폴더(sec)에 덮어씌워주시면 됩니다.


*확실하지는 않지만, 갤럭시노트1 젤리빈 펌웨어는 이 작업은 안해줘도 될 것 같네요.


깜빡한 부분이 있습니다!

CircleUnlockRippleRenderer.smali 파일을 여시고

0x1080618 를 찾으신 다음 framework-res.apk의 public.xml에 있는 reflectionmap 의 id값에 맞게 수정해주세요.

이때문에 물결이 조금 다르게 나오더군요.


 


InkeffectPreview.smali 또한 갤럭시노트 2의 SecSettings에서 가져왔는데요, 이 파일은 잠금 화면 설정에서 잉크 효과를 눌렀을 때 나오는 색상 선택 화면에 관여하는 smali 파일입니다.


이 파일에서는 array-data를
    :array_14
    .array-data 0x4
        0x28t 0x2t 0x2t 0x7ft
        0x2at 0x2t 0x2t 0x7ft
        0x2bt 0x2t 0x2t 0x7ft
        0x2ct 0x2t 0x2t 0x7ft
        0x2dt 0x2t 0x2t 0x7ft
        0x2et 0x2t 0x2t 0x7ft
        0x2ft 0x2t 0x2t 0x7ft
        0x30t 0x2t 0x2t 0x7ft
        0x31t 0x2t 0x2t 0x7ft
    .end array-data


    .line 62
    :array_2a
    .array-data 0x4
  0x32t 0x2t 0x2t 0x7ft
        0x33t 0x2t 0x2t 0x7ft
        0x34t 0x2t 0x2t 0x7ft
        0x35t 0x2t 0x2t 0x7ft
        0x36t 0x2t 0x2t 0x7ft
        0x37t 0x2t 0x2t 0x7ft
        0x38t 0x2t 0x2t 0x7ft
        0x39t 0x2t 0x2t 0x7ft
        0x3bt 0x2t 0x2t 0x7ft
    .end array-data


로 수정해주고, constructor <init>()V 가 array-data가 총 9개로 이루어져있다고 인식하게 만들었습니다.


array-data에 나오는 값들은 public.xml에 들어있는 ink_ 이미지 파일들의 id로, 뒤에서부터 2글자씩 읽으시면 됩니다.


예)array_14의 1번 array-data는 0x7f020228 입니다. ink_none.png를 가리키죠.


이 파일은 SecSettings에서 찾아서 id만 바꾸고 덮어씌워주시면 됩니다.(경로가 기억이...)


 


또한, 갤S3나 젤리빈으로 업그레이드 될 타 기종들은 모르겠지만, 갤투에서는 잉크 효과 관련 String 값들이 9개보다 적었기 때문에 저는 그냥 const-string을 이용해서 하드코딩해주었습니다.


예)


    sget-object v2, Lcom/android/settings/InkeffectPreview;->mInkcolorItem:[Ljava/lang/String;


    invoke-virtual {p0}, Lcom/android/settings/InkeffectPreview;->getResources()Landroid/content/res/Resources;


    move-result-object v3


    const v4, 0x7f090cdc


    invoke-virtual {v3, v4}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;


    const-string v3, "None"   <--getString이 v3로 스트링을 가져오면 전혀 다른 내용이 나타나므로 None으로 대체.


    aput-object v3, v2, v7


 


LockScreenSettings.smali은 잠금 화면 설정 메뉴의 목록에 관여하는 smali파일인데요, 여기서는 위 InkeffectPreview.smali의 이유와 같이, 잉크 효과 관련 String 값들이 9개보다 적었기 때문에 그냥 빈칸을 표시해주도록 array-data를 교체하였습니다. 나중에 잉크 효과를 적용하실 분들은 그 값이 있는지, 없는지 찾아보시고 새로 추가하시거나, 저처럼 빈칸으로 교체해서 사용하시면 됩니다.


그리고 잉크 효과 설정창이 잠금 화면 설정 패널에 나타나도록 mInkEffect:Landroid/preference/PreferenceScreen의 removePreference(Landroid/preference/Preference;)Z 구문을 삭제해주었습니다.


 


제가 수정한 파일은 public.xml 파일로 끝인데, 이 파일은 SecSettings.apk의 public.xml으로, ink 이미지 파일을 drawable쪽에 추가시켜준 후 id값을 부여했습니다. 위의 InkeffectPreview.smali 변경 내용을 참조해주세요.


 


 


나머지 libWaterRipple.so libWaterRipple2.so 이 두 파일은 기기의 /system/lib 폴더에,


inkeffect 폴더와 JniWaterRippleRender.smali 는 andorid.policy의 최상위 폴더(sec) 에 넣어주시면 됩니다.


 


그 다음 모두 컴파일하시고, odex롬은 odex로 바꾸시고 deodex롬은 그냥 classes.dex를 복사해서 넣으시면 됩니다.

Extra Form
첨부
잉크효과 소스.zip  [File Size:4.63MB/Download:651]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.
댓글 1
  • ?
    QcP12
    13.04.20
    android.policy 의 classes.dex 를 baksmali 한 폴더에 CircleUnlockRippleRender.smali 들 넣어주면 되나요?
댓글 쓰기 권한이 없습니다.
분류 댓글순 목록 검색 쓰기
List of Articles
제목 글쓴이 추천 조회 날짜
젤리빈 숨겨진 기능? 88 6811 48 5550 2013.03.11
강좌 (수정) 테마스토어로 순정 돌아가시려는 초보님들 보세요 88 닉넴이뭐 13 4336 2011.01.28
강좌 테그라크 2X build 11 원낸드패치부터 순정복구까지! 87 file 초콜렛왕 81 44168 2011.01.08
젤리빈 대기모드 배터리 극대화하기 85 file 악플반대 49 10767 2013.02.26
강좌 Minimalistic Text (일명 미텍) 세이브파일 적용하기 82 file 뭐해™ 81 28300 2011.09.15
강좌 안드로이드 루팅(Rooting)하기 - SuperOneClick v1.6.5 81 불멸[갤K] 24 44188 2011.02.10
[패블릿모드]플로팅 멀티윈도우 사용하기(강좌) 80 file 쿤투 29 15566 2013.03.20
자동 실행방지 AutoStarts 보다 강력한 Gemini App Manager 79 file HackerChang 72 23772 2013.03.03
갤투 순정ICS 파일 하나로 루팅하기 (오딘 X) 78 file phyb 25 17944 2012.05.22
(SK노트1) mc4 통신사+안쓰는어플등 한방에 삭제하기 78 file Sikz 68 11863 2013.04.03
강좌 [갤럭시S]루트익스플로러(Root Explorer) 어플 통한 테마 수동 변경 77 file 多勿將軍 29 28308 2010.12.28
갤럭시S, 갤럭시S2 에 Cyanogen롬의 DSP Manager를 사용해봅시다^^;; 77 file Leche™ 60 21249 2011.10.20
강좌 테그라크 사용자를 위한 간단 테마적용법~! 77 택이아빠 47 24445 2011.04.05
강좌 [대부분의 삼성기종] 카메라 셔터무음 활성화 76 file bdessd 85 14659 2015.05.08
강좌 유저노하우에 올렸던 순정독바변경!! 76 택이아빠 24 27844 2011.03.20
45도로 과열된 폰 10초만에 20도만들기 76 file SuperUse 47 4022 2013.04.28
갤럭시노트 멀티윈도우 포팅시 주의할점과 포팅방법 75 file focusnf 92 16555 2013.02.14
RootExplorer 폴더 이동이 귀찮으시다면..! [by.루나] 74 루나as 37 3673 2013.04.03
이거 모르시는분 은근 많으신것같던데 74 file 쿤투 15 4177 2013.03.17
[초보팁!!]오딘사용법!!두둥!!!! 73 file LavI 36 35780 2011.01.29
강좌 생초보를 위한 갤럭시 s6 5.1.1 이후 루팅 방법 72 file 비상동 12 7856 2015.11.19
초보도 할 수 있는 노트2 paranoid롬 올리는 법입니다(질문글 겸) 72 file makoon 32 5569 2013.01.25
4.2.2 AOKP / CM / PA 를 SK 노트2에 올리기 72 크램프 26 8818 2013.03.06
루팅 관련 용어 정리 71 크램프 84 3456 2013.01.23
4.3 드디어 루팅법 알아냈습니다ㅜ 71 file Jason K 184 32388 2013.10.25
LGU+ 갤럭시노트 젤리빈 기본어플 삭제목록 71 연리지운 58 44017 2013.02.25
[최종] 테마 및 기능 사용 유지하며 간단히 패플릿모드 적용하는 방법 70 file 다믹 27 8822 2013.03.19
GalaxyS M110S VG26 LiDroid Rom ( iOS UI, Jean theme ) Intro ***SC... 70 file 닝닝기리 18 13777 2011.10.03
[TA13] 부두패치(오버클럭 + 부두 랙픽스 + 부두 사운드)부터 루팅까지! 69 초콜렛왕 44 40885 2011.01.28
갤럭시 노트2 멀티윈도우 모든 앱 사용 (펌웨어 SKT LL2) 69 file Forevler 39 5238 2013.01.27
1 3 - 135