롤리팝 펌웨어까지는 해당 파일의 위치가 framework.jar 파일 내에 있었습니다.
하지만 마시멜로로 펌웨어가 업그레이드 되면서 위치가 services.jar로 이동되서 찾느라 힘들었습니다.
경로
services.jarsmalicomandroidserveraudioAudioService.smali
수정방법
1. 노트패드 등등으로 .method private checkSafeMediaVolume(III)Z 검색
2. invoke-virtual {v3}, Ljava/lang/Integer;->intValue()I 추가검색
3. 2번 검색결과의 아래 move-result v3 확인후 바로 다음칸에 goto :goto_td 추가
4. .catchall {:try_start_42 .. :try_end_43} :catchall_3f 추가검색
5. 6칸정도 윗쪽의 .line xxxx 다음칸에 :goto_td 추가
6. 컴파일후 투척
갤럭시노트4 기준 수정완성본
.method private checkSafeMediaVolume(III)Z .prologue const/4 v1, 0x1 .line 8418 monitor-enter v2 .line 8420 move-result v3 if-eqz v3, :cond_d .line 8421 .line 8453 .line 8423 invoke-virtual {v3}, Ljava/lang/Integer;->intValue()I move-result v3 goto :goto_td iget-object v3, p0, Lcom/android/server/audio/AudioService;->mStreamVolumeAlias:[I aget v3, v3, p1 if-ne v3, v4, :cond_42 const v3, 0x2000018c and-int/2addr v3, p3 if-eqz v3, :cond_42 iget v3, p0, Lcom/android/server/audio/AudioService;->mSafeMediaVolumeIndex:I if-le p2, v3, :cond_42 .line 8428 const-string/jumbo v3, "power" invoke-virtual {v1, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v0 check-cast v0, Landroid/os/PowerManager; .line 8429 move-result v1 if-nez v1, :cond_3c .line 8430 .line 8431 .line 8434 monitor-exit v2 goto :goto_c .line 8454 monitor-exit v2 throw v1 .line 8453 goto :goto_c |
* 노트4 기준으로 예전 jar 파일관련해서 수정하던 패치 대부분이 services.jar로 이동한듯한 느낌입니다.