티스토리 뷰

이클레어(2.1)의 락스크린에서 벨<->무음벨<->진동으로 바꾸어줍니다.(프로요처럼)
 
모토로이 44r에서 테스트하였으며, 41r이나 다른 2.1기기에도 이방법을 적용할수 있을거라 봅니다.
(물론 첨부한 파일을 그대로 넣으면 벽돌 ㄱㄱ 아래 방법을 적용해야죠.)
 
첨부한 파일은 44r에서 변경한겁니다. 41r에 넣으면 아마 벽돌이 될테고 아래방법으로 직접해야할겁니다.
/system/framework에 넣고 재부팅하면 됩니다.
퍼미션 644 설정하는거 잊지 마시구요.( vv_    v__    v__   )
재부팅하는데 시간이 좀 오래 걸리니까 진득하게 기다리세요.
 
혹시벽돌될지도모르니 벽돌복구하는법 익히고 넣으세요.
 
 
 
 
<직접 파일을 수정해서 변경하기>
 
기기의 /system/framework/android.policy.jar파일을 가져와서 apktool을 통해 분해합니다.

그다음 생성된 android.policy.jar.out\smali\com\android\internal\policy\impl폴더로 이동합니다.

여기서 LockScreen.smali파일을 찾습니다. 우리가 요리할 파일입니다.

빨간색은 삭제할 부분
파란색은 추가할 부분 입니다.
 
700번대줄에서

이전 / 이후

 .method private isSilentMode()Z
    .locals 1

 

    .prologue
    .line 277
    iget-object v0, p0, Lcom/android/internal/policy/impl/LockScreen;->mAudioManager:Landroid/media/AudioManager;

 

    invoke-virtual {v0}, Landroid/media/AudioManager;->getRingerMode()I

 

    move-result v0

 

    if-nez v0, :cond_0

 .method private isSilentMode()Z
    .locals 1

 

    .prologue
    .line 277
    iget-object v0, p0, Lcom/android/internal/policy/impl/LockScreen;->mAudioManager:Landroid/media/AudioManager;

 

    invoke-virtual {v0}, Landroid/media/AudioManager;->getRingerMode()I

 

    move-result v0

 

    .local v0, a:I
    add-int/lit8 v0, v0, -0x1

 

    if-nez v0, :cond_0

※ 설명 : isSilentMode메소드의 소스는 다음과 같습니다.

226     private boolean isSilentMode() {
227         return mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT;
228     }

 

이 메소드는 현재 벨상태가 무음모드인지 체크해서 리턴하는데 무음모드는 값이 0입니다.

RINGER_MODE_SILENT = 0

RINGER_MODE_VIBRATE = 1

RINGER_MODE_NORMAL = 2

 

즉, 현재모드가 0이면 true, 아니면 false입니다.

그래서 이것을 1인지 비교하는 걸로 바꾸려고 했지만 부팅이 안되는 문제가 생겨서,

 

(현재모드 -1 ) 이 0이면 true, 아니면 false로 리턴하는 걸로 바꾼겁니다.

위의 링거모드를 보면 (현재모드-1)이 0이 되는건 RINGER_MODE_VIBRATE밖에 없죠.

꼼수를 부린거라 이해가 안될지도 모르겠네요.

 

 

2870번대 줄에서

이전/이후

 .method public onRingerModeChanged(I)V
    .locals 2
    .parameter "state"

 

    .prologue
    .line 876
    if-nez p1, :cond_1

 

    const/4 v1, 0x1

 

    move v0, v1

 .method public onRingerModeChanged(I)V
    .locals 2
    .parameter "state"

 

    .prologue
    .line 876

    const/4 v1, 0x1
 
    if-eq p1, v1, :cond_1

    const/4 v1, 0x0

 

    move v0, v1

 

 

바로 조금 밑에만 내리면(같은 onRingerModeChanged메소드의 끝부분)

이전/이후

     .line 876
    .end local v0           #silent:Z
    :cond_1
    const/4 v1, 0x0

 

    move v0, v1

 

    goto :goto_0
.end method

     .line 876
    .end local v0           #silent:Z
    :cond_1
    const/4 v1, 0x1

 

    move v0, v1

 

    goto :goto_0
.end method

※ 설명 : onRingerModeChanged는 벨모드변경시 락스크린의 오른쪽 부분의 그림을 업데이트하는 메소드입니다.

601     public void onRingerModeChanged(int state) {
602         boolean silent = AudioManager.RINGER_MODE_SILENT == state;
603         if (silent != mSilentMode) {
604             mSilentMode = silent;
605             updateRightTabResources();
606         }
607     }

위의 RINGER_MODE_SILENT를 RINGER_MODE_VIBRATE로 바꾼겁니다.

 

 

 

 

2990번대줄에서 (onTrigger메소드 내부)

이전/이후

     .line 327
    iget-object v2, p0, Lcom/android/internal/policy/impl/LockScreen;->mAudioManager:Landroid/media/AudioManager;

 

    iget-boolean v3, p0, Lcom/android/internal/policy/impl/LockScreen;->mSilentMode:Z

 

    if-eqz v3, :cond_3

 

    move v3, v4

 

    :goto_2

    invoke-virtual {v2, v3}, Landroid/media/AudioManager;->setRingerMode(I)V

     .line 327
    iget-object v2, p0, Lcom/android/internal/policy/impl/LockScreen;->mAudioManager:Landroid/media/AudioManager;

 

    iget-boolean v3, p0, Lcom/android/internal/policy/impl/LockScreen;->mSilentMode:Z

 

    if-eqz v3, :cond_3

 

    const/4 v3, 0x1

 

    :goto_2

    invoke-virtual {v2, v3}, Landroid/media/AudioManager;->setRingerMode(I)V

※ 설명 : setRingerMode()함수로 벨상태를 변경할때 0(무음모드)으로 변경되는걸 1(진동)으로 변경합니다.

 

 

 

옵션으로, framework-res.apk파일의 res\drawable-hdpi-v4의 ic_lock_silent_mode.PNG파일을 진동모양으로 변경하면될겁니다.

ic_lock_silent_mode.png파일이 맞는지는 잘 모르겠고, 이건 안해도 기능에 문제가 없는거라서 저는 안했습니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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
글 보관함