세나☆
14.11.18
조회 수 7727
추천 수 5
댓글 5

원문 쓰레드

http://forum.xda-developers.com/galaxy-s5/unified-development/guide-how-to-kitkat-4-4-2-music-control-t2838810/post54625791


4.4.2 에서는 모든 기능이 정상 작동할테지만...


4.4.4 는 부작용이 윗버튼의 기능이 맛이갑니다. 참고하세요.( 이부분은 가이드를 뭔가 제가 못 본 부분이 있습니다.)


필요한 파일은 android.policy.jar 와 secsettings.apk 입니다.


Step 1 android.policy.jar



PhoneWindowManager$SettingsObserver.smali


    .local v0, "resolver":Landroid/content/ContentResolver; 아래에


    const-string v1, "volbtn_music_controls"

    invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v1

    invoke-virtual {v0, v1, v4, p0, v5}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V

    const-string v1, "volbtn_timeout"

    invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v1

    invoke-virtual {v0, v1, v4, p0, v5}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V

    const-string v1, "volbtn_vol_up"

    invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v1

    invoke-virtual {v0, v1, v4, p0, v5}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V

    const-string v1, "volbtn_vol_down"

    invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v1

    invoke-virtual {v0, v1, v4, p0, v5}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V 


추가


PhoneWindowManager.smali


# instance fields  아래에


.field final mVolumeUpLongPress:Ljava/lang/Runnable;

.field final mVolumeDownLongPress:Ljava/lang/Runnable;

.field mIsVolLongPressed:Z

.field mVolBtnMusicControls:I

.field mVolBtnTimeout:I

.field mVolBtnVolDown:I

.field mVolBtnVolUp:I


을 추가


PowerLongPress:Ljava/lang/Runnable; 검색


아랫줄에


    new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$MusicNext;

    invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$MusicNext;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V

    iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;

    new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$MusicPrev;

    invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$MusicPrev;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V

    iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;


추가


.method public hasNavigationBar()Z 검색


윗 줄에


.method handleVolumeLongPress(I)V
    .registers 6

    const/16 v1, 0x18

    if-ne p1, v1, :cond_f

    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;

    :goto_6
    iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;

    iget v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolBtnTimeout:I

    int-to-long v2, v2

    invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z

    return-void

    :cond_f
    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;

    goto :goto_6
.end method

.method handleVolumeLongPressAbort()V
    .registers 3

    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;

    iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;

    invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V

    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;

    iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;

    invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V

    return-void
.end method


추가


interceptKeyBeforeQueueing: VOLUME key-down while ringing: Silence ringer 검색


조금 윗줄에 getTelephonyService()Lcom/android/internal/telephony/ITelephony; 가 있습니다.


조금 더 윗줄에     :sswitch_~~ 라고 있습니다.


아랫줄에


    move-object/from16 v0, p0

    iget v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolBtnMusicControls:I

    if-eqz v0, :cond_2b1

    invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z

    move-result v0

    if-eqz v0, :cond_2b1

    move-object/from16 v0, p0

    iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenOnEarly:Z

    if-nez v0, :cond_2b1

    if-eqz v6, :cond_29f

    move-object/from16 v0, p0

    move/from16 v1, v12  (4.4.4 는 v13 갤삼 노트4 알파 아마 동일할겁니다.)

    invoke-virtual {v0, v1}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPress(I)V

    const/4 v15, 0x0

    goto/16 :goto_a

    :cond_29f
    move-object/from16 v0, p0

    invoke-virtual {v0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V

    iget-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolLongPressed:Z

    if-nez v1, :cond_2ae

    move/from16 v1, v12 (4.4.4 는 v13  갤삼 노트4 알파 아마 동일할겁니다.)

    const/4 v3, 0x3

    invoke-virtual {v0, v3, v1}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V

    :cond_2ae
    const/4 v1, 0x0

    iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolLongPressed:Z

    :cond_2b1


를 추가


.method protected sendMediaButtonEvent(I)V
    .registers 15

    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v1

    new-instance v11, Landroid/content/Intent;

    const-string v4, "android.intent.action.MEDIA_BUTTON"

    const/4 v5, 0x0

    invoke-direct {v11, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V

    new-instance v0, Landroid/view/KeyEvent;

    const/4 v5, 0x0

    const/4 v7, 0x0

    move-wide v3, v1

    move v6, p1

    invoke-direct/range {v0 .. v7}, Landroid/view/KeyEvent;-><init>(JJIII)V

    invoke-virtual {p0, v0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->dispatchMediaKeyWithWakeLockToAudioService(Landroid/view/KeyEvent;)V

    const/16 v2, 0x1

    invoke-static {v0, v2}, Landroid/view/KeyEvent;->changeAction(Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;

    move-result-object v0

    invoke-virtual {p0, v0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->dispatchMediaKeyWithWakeLockToAudioService(Landroid/view/KeyEvent;)V

    return-void

    const-string v4, "android.intent.extra.KEY_EVENT"

    invoke-virtual {v11, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;

    iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;

    const/4 v5, 0x0

    invoke-virtual {v4, v11, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V

    new-instance v12, Landroid/content/Intent;

    const-string v4, "android.intent.action.MEDIA_BUTTON"

    const/4 v5, 0x0

    invoke-direct {v12, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V

    new-instance v3, Landroid/view/KeyEvent;

    const/4 v8, 0x1

    const/4 v10, 0x0

    move-wide v4, v1

    move-wide v6, v1

    move v9, p1

    invoke-direct/range {v3 .. v10}, Landroid/view/KeyEvent;-><init>(JJIII)V

    const-string v4, "android.intent.extra.KEY_EVENT"

    invoke-virtual {v12, v4, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;

    iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;

    const/4 v5, 0x0

    invoke-virtual {v4, v12, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V

    return-void
.end method


를 맨 아래 메서드 아래에 추가



.method public updateSettings()V 검색


.method public updateSettings()V
    .registers 26

    .prologue
    .line 2010
    move-object/from16 v0, p0

    iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;

    move-object/from16 v20, v0

    invoke-virtual/range {v20 .. v20}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v숫자<< 중요


대충 이렇게 비슷하게 생겻을겁니다.


    move-result-object v숫자 아래에


   const-string v12, "volbtn_music_controls"

    const/4 v13, 0x0

    invoke-static {v숫자, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v3

    move-object/from16 v0, p0

    iput v3, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolBtnMusicControls:I

    const-string v12, "volbtn_timeout"

    const/16 v13, 0x190

    invoke-static {v숫자, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v3

    move-object/from16 v0, p0

    iput v3, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolBtnTimeout:I

    const-string v12, "volbtn_vol_up"

    const/16 v13, 0x57

    invoke-static {v숫자, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v3

    move-object/from16 v0, p0

    iput v3, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolBtnVolUp:I

    const-string v12, "volbtn_vol_down"

    const/16 v13, 0x58

    invoke-static {v숫자, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v3

    move-object/from16 v0, p0

    iput v3, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolBtnVolDown:I


를 추가

자신의 v숫자로 전부 교체하세요.


첨부파일은 자신의 스말리 폴더에 넣고 스말리합니다.


Step 2 SecSettings.apk


받은 스말리와 xml을 자신의 디텍토리에 맞게 넣으세요.


arrays.xml


   
 
    <string-array name="volbtn_action_entries">
        <item>Next</item>
        <item>Pause</item>
        <item>Play</item>
        <item>Play/Pause</item>
        <item>Previous</item>
        <item>Stop</item>
    </string-array>
    <string-array name="volbtn_action_values">
        <item>87</item>
        <item>127</item>
        <item>126</item>
        <item>85</item>
        <item>88</item>
        <item>86</item>
    </string-array>
    <string-array name="volbtn_timeout_entries">
        <item>100ms</item>
        <item>150ms</item>
        <item>200ms</item>
        <item>250ms</item>
        <item>300ms</item>
        <item>350ms</item>
        <item>400ms</item>
        <item>450ms</item>
        <item>500ms</item>
    </string-array>
    <string-array name="volbtn_timeout_values">
        <item>100</item>
        <item>150</item>
        <item>200</item>
        <item>250</item>
        <item>300</item>
        <item>350</item>
        <item>400</item>
        <item>450</item>
        <item>500</item>
    </string-array>


를 추가


strings.xml


    <string name="volbtn_toggle_title">Volume Music Control</string>
    <string name="volbtn_vol_up_title">Volume Up action</string>
    <string name="volbtn_vol_up_summary">%s</string>
    <string name="volbtn_vol_down_title">Volume Down action</string>
    <string name="volbtn_vol_down_summary">%s</string>
    <string name="volbtn_timeout_title">Timeout</string>


를 추가


자신의 설정 UI에 맞는 xml을 들어가

    <header android:icon="@drawable/ic_settings_dock" android:title="@string/volbtn_toggle_title" android:key="volbtn_music_controls" android:fragment="com.android.settings.VolBtnSettings" />

   

를 추가



컴파일하세요. 그리고 디컴파일 다시 합니다.


첨부해둔 public.xml 을 보고 자신의 ID에 맞게.. 새로 추가한 스말리의 ID값을 수정하세요.












Extra Form
첨부
public.xml  [File Size:937.1KB/Download:9]
volbtn_settings.xml  [File Size:1.1KB/Download:7]
VolBtnSettings.smali  [File Size:23.7KB/Download:8]
PhoneWindowManager$MusicPrev.smali  [File Size:3.1KB/Download:6]
PhoneWindowManager$MusicNext.smali  [File Size:3.1KB/Download:9]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.
댓글 5
댓글 쓰기 권한이 없습니다.
분류 정렬 목록 검색 쓰기
List of Articles
제목 글쓴이 추천 조회 날짜
(꿀팁)컴터에서 adb가 안돼는데 로그캣은 뽑아야한다면?? CatLog! 6 file JOLT™ 4 11862 2014.11.30
터치위즈테마에서 원하는 어플의 아이콘 바꾸기 2 세나™ 6 4817 2014.11.30
강좌 s5 터치위즈에서 노트4 매거진홈 사용하기 8 file 세나™ 11 5025 2014.11.29
강좌 노트4처럼 잠금화면카메라 크기 작게하기 7 file JOLT™ 11 14243 2014.11.29
루팅하셨으면 가급적 폰에 supersu 플래싱 파일 넣고 다니세요 5 Jade 6 6255 2014.11.29
영문으로 언어설정시 전화번호 자릿수 문제 해결하기 8 file 똘치아빠 5 6045 2014.11.29
{HOW-TO] TitaniumBackup PROTECT backup 19 file 짱구삼촌 5 4878 2014.11.28
전화 다이얼 버튼 화이트로 바꾸기 3 file 번개달팽 5 5734 2014.11.27
s5, 노트4 잠금화면 여러위젯 설정 추가하기. 3 세나™ 22 6349 2014.11.27
DPI 조절시 락스크린 위젯 및 UI 쏠림현상 해결법 11 file 똘치아빠 12 5896 2014.11.27
강좌 s5 노트4 알파 등 잠금화면 위젯 기능 활성화하기. 10 세나™ 10 8803 2014.11.25
USB 테더링 Rndis communications control 연결 오류 해결법 조부처 11915 2014.11.25
팁이라고하기에는 뭐하지만 14 file 뛰는날개 8 6221 2014.11.23
멜론 싱크가사 ㅉ거우기 2 11064 2014.11.22
노트3 노트4화 롬 하나 소개할께요 62 file 노트3캄 9 8492 2014.11.22
루팅했는데 # 네이버 OTP # 쓰시는분들께 드리는 팁! 1 PaiDev 2 8235 2014.11.21
Clean Master For PC 6 file kyle_park 7 3320 2014.11.21
com.sec.android.app.keyguard 중지 되었습니다 팁 1 번개달팽 1 10357 2014.11.19
강좌 volume music control 포팅하기(4.4.2, 4.4.4) 5 file 세나☆ 5 7727 2014.11.18
ASTC 투명도 유지 png 변환하기 9 file 짱구삼촌 8 5341 2014.11.17
xml validation ? 1 짱구삼촌 1 1893 2014.11.16
Aviary 포토에디터 기간 한정 이벤트 중입니다. 3 슈가로드 8 5385 2014.11.16
엣지에 루팅 시도했다가 무한 부팅... 3 쨍미 7 7021 2014.11.15
안드로이드 탐색기 v5 2 file joyfuI 3 4173 2014.11.14
갤오광 기본 어플 삭제(SKT NJ2) 다시시작 2 15196 2014.11.11
강좌 갤럭시 s3 4.4.4에 노트4 초절전모드 포팅하기 25 file 세나☆ 16 15554 2014.11.11
강좌 사용자문구(life companion) 사용중에도 잠금화면의 날씨와 만보계를 ... 2 세나☆ 5 7773 2014.11.11
강좌 잠금화면 날씨아이콘이 안 맞는 현상 픽스하기 11 세나☆ 4 3709 2014.11.10
행아웃 도돌키보드 엔터키 모모스모 1 6961 2014.11.10
마켓에서 APK 직접 다운로드 하기 (국가제한 걸린 어플 지원, 기기 미... 21 file 짱구삼촌 50 11730 2014.11.10
1 - 21 - 135