cschienl.cs wrote:代 ES 大 發表=...(恕刪) C大晚安,有問題想請教一下,今天刷完V36被他的音量嚇到,怎麼會那麼大聲也有破聲.進去VipER4Android FX 設定還是很大聲,請問要怎麼回復原本的音量?
刷 rom 時,安裝聲音的選項可能選到 3. 聲音大聲",再選一次 ""2. 原廠音效及音量",聲音就會正常"1. 保持原來的聲音","2. 原廠音效及音量","3. 聲音大聲","4. 開機,照相沒有聲音","5. 觸摸聲音,改為豆聲","6. S4 開機音效","7. 觸摸聲音,改為答聲","8. Xperia 音效"
我今天比較有時間,我就將 4.4.2 systemui.apk 的附加功能,寫個教寫這個教學 可以用在 N900 及 N9005 的 systemui.apk 上面這部份沒有辦法一次寫完,所以會分成很多次, 等全部寫完,我再彙整成一篇為了使製作方便,每篇分隔線 ,都有放文字說明的檔案,以利指令的替換====================================================================java 環境設定編譯共需要 二 種軟体 , 電腦要配罝 JAVA 的環境 ,JAVA 下載 (我只提供 64位元 win7 win8 都可使用)jdk-7u60-windows-x64.exehttps://drive.google.com/file/d/ ... zA/edit?usp=sharing1,下載JDK並安裝2,環境變數配置(以Windows 8 64bit為例)(1)“電腦(本機)”按右鍵 => 內容 => 進階系統設定 => 環境變數(2). 按新增 (第一個)變數名"JAVA_HOME"變數值 C:\Program Files\Java\jdk1.7.0_60(3). 按新增 (第二個)變數名"PATH"變數值 ;C:\Program Files\Java\jdk1.7.0_60\bin注意前面有分號(4). 按新增 (第三個)變數名"CLASSPATH"變數值 C:\Program Files\Java\jdk1.7.0_60\lib\dt.jar;C:\Program Files\Java\jdk1.7.0_60\lib\tools.jar;.注意後面有分號及句點3)最後打開cmd,輸入“java –version”,看到你的java版本,基本能說明JAVA環境配置成功了===========================================================================這一篇文字的檔案java 環境設定.prophttps://docs.google.com/file/d/0B80kk8AOqhiaSzI5eGctdzlTYk0/edit============================================================================後續教學編譯軟体,請用下面這一套[Tool]Advanced ApkTool v2.0.0[Windows][9/2/2014]它是 XDA 神人 BDFreak,利用最新版的 APKTOOL V2.0 製作成的工具這套工具的網站http://forum.xda-developers.com/showthread.php?t=2639400它有說明,如何使用,請自行下載我將重點,再說明一下1. 下載解壓縮後,有一個資料夾 [AdvancedApkTool]2. 裡面有 4 個資料夾 及 1 個執行檔[1-BDFreak][2-In][3-Out][4-Done]Advance ApkTool.exe3. 使用之前,要先執行框架一次,442框架.rar (21.4MB)https://drive.google.com/file/d/0B80kk8AOqhiabi05ckV3Z3RKMVU/edit?usp=sharing以後若是 Android 版本 到 4.4.3 , 只要將 4.4.3 system/framewor/framework-res.apk及 twframework-res.apk 二個檔案 ,罝換即可4. 將下載的檔案,解壓縮後,放在 [2-In] 這個資料夾5. 執行 Advance ApkTool.exe6. 選 1 - Install Framework會出現1 - framework-res.apk2 - twframework-res.apk依畫面指示操作, 1 與 2 都要執行這部份只要執行一次即可,因為已經寫入電腦,以後不用再執行後續我會用 systemui.apk 這個教學 , 來說明如何使用這個編譯軟體這一篇文字的檔案apktool_v20編譯工具.prophttps://docs.google.com/file/d/0B80kk8AOqhiaaERYVE5nbFBCdGs/edit==============================================================================為了使教學大家可以一起製作,所以我用三星原廠 N900ZSUDNE3都沒有變更任何功能 (只將 27 個程式,更新為最新版)製作成一個原廠 ROM , 用最乾淨的環境來測試,Stock.zip (1.43 G)https://drive.google.com/file/d/0B80kk8AOqhiaYkRmR3JzZzNvMWM/edit?usp=sharingN9005 的部份,可自行用原廠的 systemui.apk , 覆蓋目前的 systemui.apk以利教學的說明 ,檔案一致,比較好說明驗明正身============================================================================
課程一. 如何增加電池模組1. 編譯 SystemUI.apk (將這個檔放入 [2-In] )執行 Advance ApkTool.exe選 2 -Decompile Files , 依畫面操作即可原廠 systemui.apkhttps://drive.google.com/file/d/0B80kk8AOqhiacDZFYkZmMDBGRDQ/edit?usp=sharing2. 用 Notepad ++ 修改 status_bar.xml (它是放在 [3-Out] 裡面)\SystemUI.apk\res\layout\status_bar.xml最新版免安裝 Notepad ++https://drive.google.com/file/d/0B80kk8AOqhiaLVNLbGE1R2wtTWs/edit?usp=sharing3. 找 (約 18 列)<com.android.systemui.BatteryMeterView android:id="@id/battery" android:layout_width="12.0dip" android:layout_height="18.0dip" android:layout_marginBottom="0.33000004dip" android:layout_marginStart="5.0dip" />4. 換為<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="3.0dip" />5. 存檔6. 用 Notepad ++ 修改 PhoneStatusBar.smali (它是放在 [3-Out] 裡面)\SystemUI.apk\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali7. 找 (約 100 列).field mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;8. 換為.field mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;9. 找 (約 10697 列)invoke-direct/range {v25 .. v26}, Lcom/android/systemui/statusbar/policy/BatteryController;-><init>(Landroid/content/Context;)V10. 換為invoke-direct/range {v25 .. v26}, Lcom/ghareeb/BatteryMod/BatteryController;-><init>(Landroid/content/Context;)V11. 找 (約 10689 列)new-instance v25, Lcom/android/systemui/statusbar/policy/BatteryController;move-object/from16 v0, p0iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;move-object/from16 v26, v0invoke-direct/range {v25 .. v26}, Lcom/android/systemui/statusbar/policy/BatteryController;-><init>(Landroid/content/Context;)Vmove-object/from16 v0, v25move-object/from16 v1, p0iput-object v0, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/android/systemui/statusbar/policy/BatteryController;12 換為 (上面的 8 列,換為下面 30 列)new-instance v25, Lcom/ghareeb/BatteryMod/BatteryController;move-object/from16 v0, p0iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;move-object/from16 v26, v0invoke-direct/range {v25 .. v26}, Lcom/ghareeb/BatteryMod/BatteryController;-><init>(Landroid/content/Context;)Vmove-object/from16 v0, v25move-object/from16 v1, p0iput-object v0, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;move-object/from16 v0, p0iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;move-object/from16 v27, v0move-object/from16 v0, p0iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;move-object/from16 v26, v0const v28, 0x7f070077move-object/from16 v0, v26move/from16 v1, v28invoke-virtual {v0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;move-result-object v26check-cast v26, Landroid/widget/ImageView;move-object/from16 v0, v27move-object/from16 v1, v26invoke-virtual {v0, v1}, Lcom/ghareeb/BatteryMod/BatteryController;->addIconView(Landroid/widget/ImageView;)Vmove-object/from16 v0, p0iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryController:Lcom/ghareeb/BatteryMod/BatteryController;move-object/from16 v26, v0move-object/from16 v0, p0iget-object v0, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mBatteryText:Landroid/widget/TextView;move-object/from16 v27, v0invoke-virtual/range {v26 .. v27}, Lcom/ghareeb/BatteryMod/BatteryController;->addLabelView(Landroid/widget/TextView;)V13. 注意事項 , 上面 const v28, 0x7f070077 , 它每個版本都不一樣 ,如何判定 0x7f070077 是正確的14. 打開 \SystemUI.apk\res\values\public.xml (它是放在 [3-Out] 裡面)15. 找 <public type="id" name="battery" id="16. 會出現 <public type="id" name="battery" id="0x7f0700XX" /> (XX 是指變數,每個版本不同)17. 將實際的 0x7f0700XX 取代 const v28, 0x7f07007718. 存檔19. 下載下面這個包ghareeb.rarhttps://drive.google.com/file/d/0B80kk8AOqhiaV1ZCdFVXTGRBSVk/edit?usp=sharing20. 解壓縮後,將整個資料夾 ,移到 \SystemUI.apk\smali\com\ (它是放在 [3-Out] 裡面)這裡的的資料夾,就有三個androidghareeb => 剛剛移的samsung21. 開始反編譯 SystemUI.apk 執行 Advance ApkTool.exe選 3 -Recompile Files , 依畫面操作即可22. 下載電池模組包N3_442_Battery_1.zip (19.8MB)https://drive.google.com/file/d/0B80kk8AOqhiaREFKeUJCZEdlUVE/edit?usp=sharing23. 將剛剛完成的 SystemUI.apk (它是放在 [4-Done] 裡面)放入電池模組包內 N3_442_Battery_1.zip\system\priv-app\將檔名變更為 CS_1.ZIPhttps://drive.google.com/file/d/0B80kk8AOqhiadjNycVlsRGNXMFE/edit?usp=sharing24. COPY 至手機,刷入,就有電池模組本篇的文字檔案4.4.2 電池模組教學.prophttps://drive.google.com/file/d/0B80kk8AOqhiaOUlFckIwMlFJbzg/edit?usp=sharing
課程二. 下拉農曆1. 打開 \SystemUI.apk\smali\com\android\systemui\statusbar\policy\DateView.smali2. 找 (約 747 列).method protected updateClock()V從這一列,開始到最後面一列 , 換成.method protected updateClock()V.locals 6new-instance v2, Ljava/util/Date;invoke-direct {v2}, Ljava/util/Date;-><init>()Viget-object v4, p0, Lcom/android/systemui/statusbar/policy/DateView;->mDateFormat:Ljava/lang/String;invoke-static {v4, v2}, Landroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence;move-result-object v4invoke-virtual {v4}, Ljava/lang/Object;->toString()Ljava/lang/String;move-result-object v0new-instance v1, Lcom/android/internal/policy/impl/Lunar;invoke-direct {v1, v2}, Lcom/android/internal/policy/impl/Lunar;-><init>(Ljava/util/Date;)Vnew-instance v4, Ljava/lang/StringBuilder;invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()Vinvoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;move-result-object v4const-string v5, "\n\u8fb2\u66c6"invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;move-result-object v4invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;move-result-object v4invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;move-result-object v0invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/policy/DateView;->setText(Ljava/lang/CharSequence;)Vconst/4 v0, 0x0const/4 v1, 0x0invoke-virtual {p0, v0, v1}, Lcom/android/systemui/statusbar/policy/DateView;->setTypeface(Landroid/graphics/Typeface;I)Vreturn-void.end method3. 存檔4. 下載下面這個檔,internal.rarhttps://drive.google.com/file/d/0B80kk8AOqhiaZF9LaU5hMjVCbTQ/edit?usp=sharing5. 解壓縮後有個資料夾 [internal] 移到 \SystemUI.apk\smali\com\android\6. 所以 \SystemUI.apk\smali\com\android\ 這個資料夾下面就有二個資料夾[internal] 剛剛移的[systemui]7. 執行 Advance ApkTool.exe , 選 3 Recompile Files8. 完成的 SystemUI.apk 是放在 [4-Done]9. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_1.zip 裡面的 SystemUI.apk10. 改名為 CS_2.zip ,https://drive.google.com/file/d/0B80kk8AOqhiaczQ5Nl9zaU52MHc/edit?usp=sharing11. COPY 至手機,刷入,就有下拉農曆本篇文字下拉農曆.prophttps://drive.google.com/file/d/0B80kk8AOqhiaNlpHSzd5NzNXXzQ/edit?usp=sharing
課程三. 變更下拉背景1. 打開 \SystemUI\res\layout\status_bar_expanded.xml2. 找 (約 第二列)<com.android.systemui.statusbar.phone.NotificationPanelView android:id="@id/notification_panel" android:background="@drawable/notification_background_color"其中的 android:background="@drawable/notification_background_color“換為android:background="@drawable/back"3. 存檔4. 下蛓下面這一張圖示back.pnghttps://drive.google.com/file/d/0B80kk8AOqhiaam9yVzlGM3lTQUE/edit?usp=sharing5. 將下載的圖示 back.png , 復製到 \SystemUI.apk\res\drawable-xxhdpi6. 這是一張半透的背景圖示,(你也可以用任何圖示,只要檔名是 back.png 就可以)7. 執行 Advance ApkTool.exe , 選 3 Recompile Files8. 完成的 SystemUI.apk 是放在 [4-Done]9. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_2.zip 裡面的 SystemUI.apk10. 改名為 CS_3.zip ,https://drive.google.com/file/d/0B80kk8AOqhiaOUtzcDNZYkkwaHM/edit?usp=sharing11. COPY 至手機,刷入,就有下拉背景圖是半透本篇文字下拉背景.prophttps://drive.google.com/file/d/0B80kk8AOqhiaWUZCNnFzU1JNVjQ/edit?usp=sharing
課程四. 狀態列右上是鎖屏,左上是工作管理員 ,中上是 [home]1. 打開 \SystemUI\res\layout\status_bar.xml2. 找 (約 20,21,22 列)<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock"</LinearLayout></LinearLayout>3. 在 22列下面插入 3 列<com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="right" android:orientation="vertical" android:id="@id/back" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lockd" android:layout_toRightOf="@id/recent_apps" android:contentDescription="@string/accessibility_back" systemui:keyCode="26" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight" /><com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="left" android:orientation="vertical" android:id="@id/back" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lockd" android:layout_toRightOf="@id/recent_apps" android:contentDescription="@string/accessibility_back" systemui:keyCode="187" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight" /><com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="center" android:orientation="vertical" android:id="@id/back" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lockd" android:layout_toRightOf="@id/recent_apps" android:contentDescription="@string/accessibility_back" systemui:keyCode="3" systemui:keyRepeat="false" systemui:glowBackground="@drawable/ic_sysbar_highlight" />4. 這三列的意思是23列 android:layout_gravity="right" 右上 是 systemui:keyCode="26" 指鎖屏24列 android:layout_gravity="left" 左上 是 systemui:keyCode="187" 指工作管理員25列 android:layout_gravity="center" 中上 是 systemui:keyCode="3" 指[home]5. 因為中上,會影響下拉的位罝,若不要,只要刪除 25列,就沒有這個功能6. 存檔7. 下蛓下面這一張圖示ic_sysbar_lockd.pnghttps://drive.google.com/file/d/0B80kk8AOqhiaczNXYm9RTENESms/edit?usp=sharing將下載的圖示復製到 \SystemUI.apk\res\drawable-xxhdpi8. 執行 Advance ApkTool.exe , 選 3 Recompile Files9. 完成的 SystemUI.apk 是放在 [4-Done]10. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_3.zip 裡面的 SystemUI.apk10. 改名為 CS_4.zip ,https://drive.google.com/file/d/0B80kk8AOqhiaNDhfdE95bHVXRVk/edit?usp=sharing11. COPY 至手機,刷入,就有狀態列右上是鎖屏,左上是工作管理員 ,中上是 [home]本篇文字狀態列3個功能.prophttps://drive.google.com/file/d/0B80kk8AOqhiaXzlOMTFCMWtzYkU/edit?usp=sharing
課程五 清除記憶體1. 這部份除了要改 Systemui.apk , 還要改 services.jar 解除簽名限制2. 打開 \SystemUI\res\layout\status_bar_expanded.xml3. 找 (約 14 列)<com.android.systemui.statusbar.policy.ToggleSlider android:layout_gravity="center_vertical" android:id="@id/brightness_slider" android:background="@color/toggle_slider_background_color" android:layout_width="fill_parent" android:layout_height="@dimen/toggle_slider_height" systemui:text="@string/status_bar_settings_auto_brightness_label" />4. 換 (1列換成 4 列)<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"><com.android.systemui.statusbar.policy.ToggleSlider android:layout_gravity="center_vertical" android:id="@id/brightness_slider" android:background="#00000000" android:layout_width="wrap_content" android:layout_height="55.0dip" android:layout_weight="1.0" systemui:text="@string/status_bar_settings_auto_brightness_label" /><com.pekaka.systemui.killer.MemCleanView android:layout_gravity="center_vertical" android:paddingRight="6.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>存檔5. 下蛓下面這一個檔案killer_layout.xmlhttps://drive.google.com/file/d/0B80kk8AOqhiaaHB4Unp4eG5MSmM/edit?usp=sharing6. 復製到 \SystemUI\res\layout\7. 打開 \SystemUI.apk\res\values\colors.xml8. 最後一列,加入<color name="killer_meminfo_background">#00000000</color><color name="killer_meminfo_front">#00000000</color><color name="killer_meminfo_full_front">#00000000</color><color name="killer_meminfo_txt">#ffffffff</color>存檔9. 打開 \SystemUI.apk\res\values\dimens.xml10. 最後一列,加入<dimen name="killer_meminfo_txt_size">14.0sp</dimen>存檔11. 打開 \SystemUI.apk\res\values\ids.xml12. 最後一列,加入<item type="id" name="killer_mem_info">false</item><item type="id" name="killer_clean_button">false</item>存檔13. 打開 \SystemUI.apk\AndroidManifest.xml找 (約 60 列)<uses-permission android:name="android.permission.SET_PROCESS_LIMIT"/>插入<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>14. 存檔15 下蛓下面這一個檔案pekaka.rarhttps://drive.google.com/file/d/0B80kk8AOqhiadUNscDMzUXU3VlU/edit?usp=sharing16. 解壓縮後復製到 \SystemUI.apk\smali\com\17. 所以 \SystemUI.apk\smali\com\ 就有下面的目錄androidghareebpekaka => 剛剛復製samsung18. 執行 Advance ApkTool.exe , 選 3 Recompile Files19. 因為有改到 AndroidManifest.xml ,所以再執行簽名才有作用20. 執行 Advance ApkTool.exe , 選 4 Sign Files21. 完成的 SystemUI.apk 是放在 [4-Done]22. 將這個 SystemUI.apk 覆蓋剛剛前面 CS_4.zip 裡面的 SystemUI.apk23. 改名為 CS_5.zip ,https://drive.google.com/file/d/0B80kk8AOqhiaVVEzWndfRHBMcHM/edit?usp=sharing24.COPY 至手機,刷入,就有下拉清除記憶体 ,按清除一切正常25. 雖然刷入正常,但若要包入 ROM 裡面刷(第一次刷), 還要修改 services.jar不然還是會出現 systemui 已停止26. 下篇再說明,如何修改 services.jar 解除簽名限制本篇文字清除記憶體.prophttps://drive.google.com/file/d/0B80kk8AOqhiacXdaTGxDWk1vYnc/edit?usp=sharing
課程六 解除簽名限制編譯 services.jar (system/frameowrk/)https://drive.google.com/file/d/0B80kk8AOqhiaRndUOHVrR1JrVmM/edit?usp=sharing1. 編譯 services.jar (將檔案放在 [2-In] ,執行 Advance ApkTool.exe , 選 2 Decompile Files )2. 打開 \services.jar\smali\com\android\server\pm\PackageManagerService.smali3. 找 (約 7812 列).method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I4. 從 7812 - 7924 列 , 用下面這 5 列來取代.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I.registers 9const/4 v6, 0x0return v6.end method5. 存檔6. 執行 Advance ApkTool.exe , 選 3 Recompile Files7. 完成的 services.jar 是放在 [4-Done]8. 將這個 services.jar 加入剛剛前面 CS_5.zip 裡面的 \system\framework\ 裡面9. 改名為 CS_6.zip ,https://drive.google.com/file/d/0B80kk8AOqhiaSVFfLXZHQUJLeHc/edit?usp=sharing10. COPY 至手機,刷入,就有下拉清除記憶体 ,按清除一切正常 , 就可以直接放入 ROM裡面刷,本篇文字解除簽名限制.prophttps://drive.google.com/file/d/0B80kk8AOqhiaWkVwblBDLXpDb3c/edit?usp=sharing今天暫時教學說明到此,有時間再續