顯示具有 apk 標籤的文章。 顯示所有文章
顯示具有 apk 標籤的文章。 顯示所有文章

2014/04/23

如何關閉 LG G2 F320K 的錄影開啟和停止的聲音 (Kitkat)

首先必須要有編譯反編譯的基礎.
由於基本上原廠 rom 都是 odex 的, 所以也必須要 deodex.

如何 deodex 和 odex , 可以參考以下文章.
如何 deodex stock rom 的 apk 檔案.

如何關閉相機聲音可以參考此篇
LG G2 韓版 - 如何開啟相機無聲的選項 for Kitkat

下面是如何把錄影啟動和停止聲音關閉 (這個關閉後除非在修改, 否則沒辦法透過選項再開啟喔)

com/lge/camera/controller/SoundController.smali
.method public playRecordingSound(Z)V
    .locals 3
    .parameter "start"

    .prologue
    .line 632
    const-string v0, "CameraApp"

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;->()V

    const-string v2, "playRecordingSound : start = "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lcom/lge/camera/util/CamLog;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 634
    iget-object v0, p0, Lcom/lge/camera/controller/SoundController;->mGet:Lcom/lge/camera/ControllerFunction;

    invoke-interface {v0}, Lcom/lge/camera/ControllerFunction;->getApplicationMode()I

    move-result v0

    if-nez v0, :cond_1

    iget-object v0, p0, Lcom/lge/camera/controller/SoundController;->mGet:Lcom/lge/camera/ControllerFunction;

    const-string v1, "key_camera_shot_mode"

    invoke-interface {v0, v1}, Lcom/lge/camera/ControllerFunction;->getSettingValue(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v1, "shotmode_panorama"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_0

    iget-object v0, p0, Lcom/lge/camera/controller/SoundController;->mGet:Lcom/lge/camera/ControllerFunction;

    const-string v1, "key_camera_shot_mode"

    invoke-interface {v0, v1}, Lcom/lge/camera/ControllerFunction;->getSettingValue(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v1, "shotmode_plane_panorama"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_0

    iget-object v0, p0, Lcom/lge/camera/controller/SoundController;->mGet:Lcom/lge/camera/ControllerFunction;

    const-string v1, "key_camera_shot_mode"

    invoke-interface {v0, v1}, Lcom/lge/camera/ControllerFunction;->getSettingValue(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v1, "shotmode_free_panorama"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_1

    :cond_0
    invoke-static {}, Lcom/lge/camera/properties/ShutterSoundProperties;->isSupportShutterSoundOff()Z

    move-result v0

    if-eqz v0, :cond_1

    const-string v0, "off"

    iget-object v1, p0, Lcom/lge/camera/controller/SoundController;->mGet:Lcom/lge/camera/ControllerFunction;

    const-string v2, "key_camera_shutter_sound"

    invoke-interface {v1, v2}, Lcom/lge/camera/ControllerFunction;->getSettingValue(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_1

    .line 649
    :goto_0
    return-void

    .line 644
    :cond_1
    if-eqz p1, :cond_2

    .line 645
    iget v0, p0, Lcom/lge/camera/controller/SoundController;->mSound_startRecording:I

    #invoke-virtual {p0, v0}, Lcom/lge/camera/controller/SoundController;->soundPlay(I)V

    goto :goto_0

    .line 647
    :cond_2
    iget v0, p0, Lcom/lge/camera/controller/SoundController;->mSound_stopRecording:I

    #invoke-virtual {p0, v0}, Lcom/lge/camera/controller/SoundController;->soundPlay(I)V

    goto :goto_0
.end method

如上, 把有 soundPlay(I)V 的部份最前面加上 #, 這樣就不會有聲音了.

不過我個人是不太喜歡按下去完全沒有錄影開始的感覺就是了.



2013/10/12

LG G2 K 版 - 移除最近程式下面的快捷 ICON


首先必須要 deodex, 不會的可看此篇 如何 deodex stock rom 的 apk 檔案

下面紀錄一下如何移除.

apktool d LGSystemUI.apk

進入目錄 LGSystemUI, 找到以下檔案
res/layout-port/recent_mobile_ktf.xml
res/layout-land/recent_mobile_ktf.xml

以下為原始檔案


    
        
        
    
    
        
        
    
    
        
        
    
    
        
        
    


在每個 LinearLayout 後面加上 android:visibility="gone"

以下為局部內容
    
        
        
    

這樣四個 icon 就不見了.

接著修改以下檔案
res/layout/status_bar_recent_panel.xml
找到 recent_mobile_ktf
修改成以下


res/layout-land/status_bar_recent_panel.xml
找到 recent_mobile_ktf
修改成以下


接著就是把 apk 重組後放置到 system/app 就可以了. 記得修改權限.


2013/10/08

LG G2 韓版 - 如何開啟相機無聲的選項 for Kitkat

首先必須要有編譯反編譯的基礎.
由於基本上原廠 rom 都是 odex 的, 所以也必須要 deodex.

如何 deodex 和 odex , 可以參考以下文章.
如何 deodex stock rom 的 apk 檔案.

以下是如何修改相機無聲選項.

搜尋以下字串 'isSupportShutterSoundOff'

以下為修改好的部份

.method public static isSupportShutterSoundOff()Z
    .locals 1

    .prologue
    .line 20
    #sget-boolean v0, Lcom/lge/camera/properties/ShutterSoundProperties;->mShutterSoundOff:Z
    const/4 v0, 0x1

    return v0
.end method

儲存, 這樣相機無聲的選項就開啟了. 接著上面連結所說的做就可以了.

但是即使是相機開無聲, 對焦時還是會有逼逼的聲音.
以下就是連逼逼都去掉.

com/lge/camera/controller/SoundController.smali

.method public playAFSound(Z)V
    .registers 6
    .param p1, "seccess"    # Z

    .prologue
    const/4 v3, 0x0

    .line 769
    const-string v0, "CameraApp"

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;->()V

    const-string v2, "playAFSound : seccess="

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, v1}, Lcom/lge/camera/util/CamLog;->d(Ljava/lang/String;Ljava/lang/String;)V
    
# Add Begin
    invoke-static {}, Lcom/lge/camera/properties/ShutterSoundProperties;->isSupportShutterSoundOff()Z

    move-result v0

    if-eqz v0, :cond_2

    const-string v0, "off"

    iget-object v1, p0, Lcom/lge/camera/controller/Controller;->mGet:Lcom/lge/camera/ControllerFunction;

    const-string v2, "key_camera_shutter_sound"

    invoke-interface {v1, v2}, Lcom/lge/camera/ControllerFunction;->getSettingValue(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0
    
    if-nez v0, :cond_0

    :cond_2
# Add End

    .line 770
    if-eqz p1, :cond_29

    .line 771
    iget v0, p0, Lcom/lge/camera/controller/SoundController;->mSound_afSuccess:I

    invoke-direct {p0, v0, v3}, Lcom/lge/camera/controller/SoundController;->checkSoundLoaded(IZ)Z

    move-result v0

    if-eqz v0, :cond_28

    .line 772
    iget v0, p0, Lcom/lge/camera/controller/SoundController;->mSound_afSuccess:I

    invoke-virtual {p0, v0}, Lcom/lge/camera/controller/SoundController;->soundPlay(I)V

    .line 779
    :cond_28
    :goto_28
    return-void

    .line 775
    :cond_29
    iget v0, p0, Lcom/lge/camera/controller/SoundController;->mSound_afFail:I

    invoke-direct {p0, v0, v3}, Lcom/lge/camera/controller/SoundController;->checkSoundLoaded(IZ)Z

    move-result v0

    if-eqz v0, :cond_28

    .line 776
    iget v0, p0, Lcom/lge/camera/controller/SoundController;->mSound_afFail:I

    invoke-virtual {p0, v0}, Lcom/lge/camera/controller/SoundController;->soundPlay(I)V

    goto :goto_28
.end method

這樣就可以連對焦的聲音都關閉了.

2013/10/03

如何 deodex stock rom 的 apk 檔案.

原廠的 android rom 通常都是 odex 過的. 這代表沒辦法直接去修改 apk 來達到想要的目的.
這邊紀錄一下怎麼 deodex , 免得自己忘記.

需要工具:
1. https://code.google.com/p/smali/ (deodex, odex 工具)
2. rom 裡面的 /system/framework 整個目錄
3. 你想要 deodex 的檔案, 這邊用 Calculator.apk, Calculator.odex 當作範例.

以下是步驟.
1.
java -jar baksmali-2.0b6.jar -x Calculator.odex -d system/framework # 產生 out 目錄
java -jar smali-2.0b6.jar out -o classes.dex # 產生 classes.dex

2.
用壓縮軟體開啟 Calculator.apk, 把 classes.dex 直接拉進去.


就這麼簡單. 接下來只要把 rom 裡面的 Calculator.apk, Calculator.odex 移除, 換上作好的 Calculator.apk.
這樣就可以了.