Hướng dẫn tùy biến status bar cho MTK ICS

dafuqChicken
23/8/2013 15:18Phản hồi: 204
Hướng dẫn tùy biến status bar cho MTK ICS
-CHUẨN BỊ:
Máy tính​
Bộ công cụ biên dịch apk : đây
Notepad++ hoặc Edit Pad Pro:GoogleSearch​
Mở commandprompt.bat cài framework-res.apk trước bằng lệnh apktool if framework-res.apk framework-res lấy từ ROM của bạn.​
1. Center Clock:
Screenshot_2013_07_20_11_57_49.png
Trích xuất và decompile SystemUI.apk từ ROM của bạn​
B1: Đi đến smali\com\android\systemui\statusbar\phone
Mở PhoneStatusBar.smali tìm dòng sau​
Code: .field private static final IS_CU:Z = true
Đổi thành​
Code: .field private static final IS_CU:Z = false
B2: Đi đến res\layout\zzz_status_bar_gemini.xml
Tìm​
<com.android.systemui.statusbar.policy.Clock ……/>
Xóa nó​
Copy code sau​
Code:
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/clock" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="center" android:id="@id/clock" android:paddingLeft="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
</LinearLayout>
chèn vào dưới dòng
Tìm:
<LinearLayout android:eek:rientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
Thêm cái này vào trong đó​
Tạo 1 file ảnh có tên ticker_background.png màu đen hoàn toàn (cỡ 1x1 cũng đc) đặt vào res/drawable-hdpi​
B3: Recompile và sign apk vừa có​
Đặt vào máy set perm rw-r-r sau đó reboot hoặc tạo flash.zip cho tiện​
Xong, tận hưởng thành quả!​
2. Tạo Clock và transparent tuỳ chỉnh

Trích xuất các tập tin sau đây từ ROM
SystemUI.apk
Settings.apk

B1: Chỉnh sửa Settings.apk
Decompile Settings.apk

Đi đến \res\xml\settings_header.xml
Tìm:
<header android:icon="@drawable/ic_settings_display" android:id="@id/display_settings" android:title="@string/display_settings" android:fragment="com.android.settings.DisplaySettings" />

Thêm dòng này xuống dưới nó
Code:
Code:
<header android:icon="@drawable/control_toggles" android:title="@string/sb_prefs_title">
<intent android:targetPackage="com.android.settings" android:targetClass="com.android.settings.Statusbar" />
</header>
Đi đến \res\value\strings.xml
Thêm dòng sau vào cuối
Code:
<string name="sb_prefs_title">Statusbar Preferences</string>
<string name="clock_show_title">Clock Position (Reboot Required)</string>
<string name="clock_show_summ_on">Statusbar clock Center</string>
<string name="clock_show_summ_off">Statusbar clock Right</string>
<string name="sb_transparency_title">Statusbar transparency (Reboot Required)</string
<string name="sb_transparency_no">No transparency</string>
<string name="sb_transparency_full">Full transparency</string>
Đi đến \res\values\arrays.xml
Thêm dòng sau dưới nó:
Code:
<array name="sb_transparency_entries">
<item>@string/sb_transparency_no</item>
<item>10 percent</item>
<item>20 percent</item>
<item>30 percent</item>
<item>40 percent</item>
<item>50 percent</item>
<item>60 percent</item>
<item>70 percent</item>
<item>80 percent</item>
<item>90 percent</item>
<item>@string/sb_transparency_full</item>
</array>
<string-array name="sb_transparency_values">
<item>255</item>
<item>229</item>
<item>204</item>
<item>178</item>
<item>153</item>
<item>127</item>
<item>102</item>
<item>76</item>
<item>51</item>
<item>25</item>
<item>0</item>
</string-array>
Mở \AndroidManifest.xml
Tìm
<activity android:label="@string/device_status_activity_title" android:name=".deviceinfo.SdCardUpgrade">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />

Quảng cáo


<category android:name="android.intent.category.VOICE_LAUNCH" />
</intent-filter>
</activity>

Thêm dưới nó:
Code:
<activity android:label="@string/sb_prefs_title" android:name=".Statusbar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
Tải filenàyvề giải nén rồi copy đè lên thư mục Settings đang làm việc

Đóng gói và sign lại Settings.apk

B2: Chỉnh sửa SystemUI.apk
Decompile SystemUI.apk
Đi đến \smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali

Quảng cáo



Tìm:
.line 452
const-string v13, "android.intent.action.SKIN_CHANGED"

invoke-virtual {v4, v13}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

Thêm đoạn này vào dưới:
Tìm:
.line 473
move-object/from16 v0, p0

iget-object v13, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mMediaEjectBroadcastReceiver:Landroid/content/BroadcastReceiver;

invoke-virtual {v2, v13, v6}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

(phía trên .method onBarViewAttached()V )

Thêm dòng sau dưới nó:
Tìm: .method vibrate()V

Thêm trên nó
Save lại

Chú ý 2 mã màu đỏ
Đi đến \smali\com\android\systemui\statusbar\phone\PhoneStatusBar$7.smali

Tìm:

.line 2436
iget-object v7, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;

iget-object v7, v7, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mToolBarView:Lcom/android/systemui/statusbar/toolbar/ToolBarView;

invoke-virtual {v7}, Lcom/android/systemui/statusbar/toolbar/ToolBarView;->moveToCurrentScreen()V

goto :goto_0

Thêm dòng sau dưới nó
Chú ý các giá trị
:cond_5
if-eqz v6, :cond_6
Phải liên tiếp với nhau

(Bước này khốn nạn nhất là bạn phải chỉnh sửa lại toàn bộ cond của chúng theo thứ tự
cond_5 cond_6 cond_7 cond_8 cond_9 cond_a cond_b cond_c…..trong PhoneStatusBar$7.smali, nếu k sẽ gặp lỗi khi recompile, yêu cầu tập trung cao độ 😁)

Đi đến \res\layout\zzz_status_bar_gemini.xml
Tìm:(dòng thứ 3 trên xuống):
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">

Thêm dòng này sau nó:
Đi đến \res\values\ids.xml
Thêm cái này vào cuối
<item type="id" name="center_clock">false</item>

Tải file này về giải nén chép đè lên SystemUI đang làm


Recompile và sign lại SystemUI.apk

Tiếp tục Decompile cái vừa Recompile
Tìm đến 2 mã màu đỏ phía trên (PhoneStatusBar.smali)
thay bằng các mã có trong public.xml của bạn
Cụ thể:
0x7f0e002b thay bằng <public type="id" name="clock" id="0x7fxxxxxx" />
0x7f0e00d7 thay bằng <public type="id" name="center_clock" id="0x7fxxxxxx" />

Sau đó lại Recompile và sign SystemUI.apk


B3: Copy 2 file trên vào \system\app

Set perm rw-r-r và reboot tận hưởng thành quả :D
3. Thêm speed meter lên statusbar
Screenshot_2013-08-16-23-32-25.png
Down file này về giải nén ra thư mục riêng​
Decompile SystemUI.apk​
B1: Đi đến res\layout\zzz_status_bar_gemini.xml
Tìm:
<LinearLayout android:eek:rientation="horizontal" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">
Thêm dòng sau dưới nó​
B2: Chép toàn bộ file trong thư mục vừa giải nén vào \smali\
B3: Giống B3 trên :D
4. Thêm Lidroid Toggle cho statusbar (thay cho 13 toggle gốc)
Screenshot_2013-07-31-10-16-30.png
B1: Decompile SystemUI.apk​
Đi đến res/values/ids.xml
Thêm vào cuối​
Đến res/values/strings.xml
Thêm vào cuối​
Đến res/layout/status_bar_expanded.xml
Thêm dòng màu đỏ​
Đến smali/com/android/systemui/statusbar/phone/PhoneStatusBar.smali
Tìm:.field mPostCollapseCleanup:Ljava/lang/Runnable;
Thêm dòng sau dưới nó​
Tìm:
.method public addIcon(Ljava/lang/String;IILcom/android/internal/statusbar/StatusBarIcon;)V
Kéo xuống và thêm mã giống như sau​
Chú ý các mã màu đỏ, khi biên dịch gặp lỗi thì sửa p0 thành v0
Tìm:.method protected makeStatusBarView()Landroid/view/View;
Kéo xuống và thêm mã như sau​
Ở mỗi máy khác nhau các mã sẽ khác nhau, phải đảm bảo các mã màu đỏ đều giống nhau như trên​
khi biên dịch gặp lỗi thì sửa p0 thành v0
Chú ý mã: 0x7f0e0096
Tiếp tục kéo xuống dưới​
Thêm như sau​
Đến đây thì recompile lại SystemUI.apk sau đó lại decompile (mục đích là để thêm hex code mới vào public.xml)​
Mở smali/com/android/systemui/statusbar/phone/PhoneStatusBar.smali tìm đến đoạn mã0x7f0e0096 thay bằng đoạn mã​
<public type="id" name="adi_quickpanel" id="0x7fxxxxxx" />
nằm trong public.xml​
B2: Khớp code
-Decompile file này source_ICS_Lidroid_SytemUI.apk sau đó copy toàn bộ những gì extract đc sang thư mục decompile của SystemUI.apk đang build..​
-Tiếp tục recompile (systemui đang làm) và decompile file .apk vừa recom xong (thêm hex code mới )​
-Tải file này về ICS_Lidroid_public.xml mở ra để đấy​
Mở tiếp public.xml trong thư mục decompile của SystemUI.apk​
Tìm tới đây smali/com/lidroid/systemui/quickpanel/[đây]sẽ thấy 1 đống smali​
Mở từng smali ra đc tìm các đoạn mã bắt đầu bằng 0x7fxxxxxx so sánh với ICS_Lidroid_public.xml để tìm code hex dạng <public type="blah" name="quickpanel_airplane_text" id="0x7fxxxxxx" />
Thay thế nó bằng code trong public.xml của bạn…. (Chỗ này khó hiểu vl J)​
Ví dụ​
Mở AirplaneButton.smali
Tìm const v0, 0x7f080089
Tìm tiếp 0x7f080089 trong ICS_Lidroid_public.xml
Dư lày <public type="string" name="quickpanel_airplane_text" id="0x7f080089" />​
Rồi tìm đúng cái như thế trong Public.xml (khác hex màu đỏ nhé) và thay cmn cái mã vàoAirplaneButton.smali
Ai xong bước này còn kiên nhẫn thì cứ làm cho đến hết nhé! :p
Xong xuôi đóng gói lại, tải file QuickPanel_Settings.apkvề rồi copy hết vào /system/app là ok​

p/s: Mà thế đ' nào TinhTe không ẩn đc mấy cái emoticons nhỉ?
Các bạn cho mình thêm ý kiến hoàn thiện bài viết nhé!!
Hãy Like nếu bài viết này hữu ích! ;)
204 bình luận
Chia sẻ

Xu hướng

Mở hàng nhé chicken 😃

Gửi từ LENOVO-P700 của tôi
Tuy hơi nhức mắt nhưng cũng hỉu bác khổ cực thế nào 😁

Gửi từ Lenovo A390_ROW của tôi bằng cách sử dụng Tapatalk 2
có chỗ mình ko hiểu lắm, tại sao file ticker_background ở res\drawable-hdpi mà trong code lại là @drawable\ticker_background
@arietis Vì @drawable liên kết vs png trong /res/drawable-hdpi và với xml trong /res/drawable 😃


Gửi từ... mà thật ra thì cũng đéo ai quan tâm #
và mình recompile toàn bị báo lỗi no resource =.=
@arietis Bạn chụp ảnh lỗi lên đây, bạn thử tạo 1 file ticker_background.png màu đen bằng paint sau đó copy vào drawable-hdpi nhé, recompile xem còn lỗi k?


Gửi từ... mà thật ra thì cũng đéo ai quan tâm #
Mình vừa fix lại code center clock, bạn thử copy lại recompile xem thế nào


Gửi từ... mà thật ra thì cũng đéo ai quan tâm #
2.3 khó mod rồi.k có phone.smali.:oops:Bác chickken ngâm cứu vụ cho thanh trạng thái xuống dưới đi,vuốt ngược lên.nhìn chất quá ak😁:p
@tuancollection Ukm, vụ này nghe thú vị đấy
Mà 2.3 k nhất thiết phải sửa phone...smali đâu

Gửi từ... mà thật ra thì cũng đéo ai quan tâm #
Thank chủ thớt nhiều nhé.bài viết rất bổ ích
Bác ơi, em
rom 4.0.4 stock có làm được không bác?
phuongve
TÍCH CỰC
11 năm
@dafuqChicken Trên máy mình ko có cái "android.intent.action.SKIN_CHANGED" như A390, nên mình thêm vào phía dưới "android.intent.action.SCREEN_OFF" được ko chicken, đâu có ảnh hưởng gì đâu phải ko nhỉ?
@phuongve ukm
phuongve
TÍCH CỰC
11 năm
@dafuqChicken và trên máy mình, mấy cái đoạn như:
Code:
.line 458
    .local v3, filter:Landroid/content/IntentFilter;
    const-string v10, "android.intent.action.CONFIGURATION_CHANGED"
 
    invoke-virtual {v3, v10}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
 
    .line 459
    const-string v10, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
 
    invoke-virtual {v3, v10}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
 
    .line 460
    const-string v10, "android.intent.action.SCREEN_OFF"
 
    invoke-virtual {v3, v10}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
Nó toàn là const-string v10 với invoke-virtual {v3, v10}, như vậy khi thêm đoạn:
Code:
.line 452
    const-string v13, "com.android.settings.CLOCK"
 
    invoke-virtual {v4, v13}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
 
    .line 452
    const-string v13, "com.android.settings.SB_TRANSPARENCY_CHANGED"
 
    invoke-virtual {v4, v13}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
thì để nguyên const-string v13 với invoke-virtual {v4, v13} hay sửa lại là const-string v10 với invoke-virtual {v3, v10} như trên máy mình thế chicken? Thanks!
@phuongve Sửa cho nó khớp với các mã trên nhé 😃
phuongve
TÍCH CỰC
11 năm
Với khúc hướng dẫn này trong tut này chicken:
Mình tìm ko thấy các giá trị như moveToCurrentScreen()V hay .line 2436 như chicken hướng dẫn, thậm chí trong cái systemui của A390 mà chicken share đấy, mình bung ra để search các giá trị đó cũng ko có. Chỗ này chicken có hướng dẫn nhầm hay thiếu không nhỉ? Vì mình tìm trong PhoneStatusBar.smali của chicken share không có khúc nào có các giá trị như thế cả.😕
@phuongve mình mới fix lại là trong PhoneStatusBar$7 nhé 😃 Sơ suất quá 😁
phuongve
TÍCH CỰC
11 năm
^
^
Làm tới khúc trên này là "tạch" rồi😁
phuongve
TÍCH CỰC
11 năm
^
^
Ra rồi, chicken hướng dẫn thiếu rồi: nó nằm trong file PhoneStatusBar$7.smali
Mà giờ trên máy mình cũng phải thêm vào PhoneStatusBar$7.smali hay là $ mấy nhỉ?
@phuongve Đúng đấy, thử xem sao, cẩn thận cái đoạn cond_v"xxx" đấy 😁
phuongve
TÍCH CỰC
11 năm
@dafuqChicken Tạch cái vụ cond_v"xxx" rồi.

Untitled.jpg

Chỗ mấy cái cond này mình không hiểu lắm, đây là file PhoneStatusBar$7.smali của mình, chicken xem dùm mình coi cái cond phải viết thế nào nhỉ? Thanks!

Code:
.class Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;
.super Landroid/content/BroadcastReceiver;
.source "PhoneStatusBar.java"
 
 
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
.end annotation
 
.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation
 
 
# instance fields
.field final synthetic this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
 
# direct methods
.method constructor <init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)V
    .locals 0
    .parameter
 
    .prologue
    .line 2390
    iput-object p1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V
 
    return-void
.end method
 
 
# virtual methods
.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
    .locals 7
    .parameter "context"
    .parameter "intent"
 
    .prologue
    .line 2392
    invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
 
    move-result-object v0
 
    .line 2393
    .local v0, action:Ljava/lang/String;
    const-string v4, "PhoneStatusBar"
 
    new-instance v5, Ljava/lang/StringBuilder;
 
    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
 
    const-string v6, "onReceive, action="
 
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
 
    move-result-object v5
 
    invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
 
    move-result-object v5
 
    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
 
    move-result-object v5
 
    invoke-static {v4, v5}, Lcom/mediatek/xlog/Xlog;->d(Ljava/lang/String;Ljava/lang/String;)I
 
    .line 2394
    const-string v4, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-nez v4, :cond_0
 
    const-string v4, "android.intent.action.SCREEN_OFF"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-eqz v4, :cond_3
 
    .line 2396
    :cond_0
    const/4 v2, 0x0
 
    .line 2397
    .local v2, excludeRecents:Z
    const-string v4, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-eqz v4, :cond_1
 
    .line 2398
    const-string v4, "reason"
 
    invoke-virtual {p2, v4}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;
 
    move-result-object v3
 
    .line 2399
    .local v3, reason:Ljava/lang/String;
    if-eqz v3, :cond_1
 
    .line 2400
    const-string v4, "recentapps"
 
    invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v2
 
    .line 2403
    .end local v3           #reason:Ljava/lang/String;
    :cond_1
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v4, v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->animateCollapse(Z)V
 
    .line 2417
    .end local v2           #excludeRecents:Z
    :cond_2
    :goto_0
    return-void
 
    .line 2405
    :cond_3
    const-string v4, "android.intent.action.CONFIGURATION_CHANGED"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-eqz v4, :cond_2
 
    .line 2406
    invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
 
    move-result-object v4
 
    invoke-virtual {v4}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration;
 
    move-result-object v1
 
    .line 2407
    .local v1, currentConfig:Landroid/content/res/Configuration;
    iget v4, v1, Landroid/content/res/Configuration;->fontScale:F
 
    iget-object v5, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    #getter for: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPreviousConfigFontScale:F
    invoke-static {v5}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$800(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)F
 
    move-result v5
 
    sub-float/2addr v4, v5
 
    invoke-static {v4}, Ljava/lang/Math;->abs(F)F
 
    move-result v4
 
    const v5, 0x3727c5ac
 
    cmpl-float v4, v4, v5
 
    if-lez v4, :cond_4
 
    .line 2408
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    #calls: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->refreshExpandedView(Landroid/content/Context;)V
    invoke-static {v4, p1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$900(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/content/Context;)V
 
    .line 2409
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    iget v5, v1, Landroid/content/res/Configuration;->fontScale:F
 
    #setter for: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPreviousConfigFontScale:F
    invoke-static {v4, v5}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$802(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;F)F
 
    .line 2411
    :cond_4
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    #calls: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->repositionNavigationBar()V
    invoke-static {v4}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$1000(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)V
 
    .line 2412
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v4}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateResources()V
 
    goto :goto_0
 
.line 2423
    const-string v6, "com.android.settings.CLOCK"
 
    invoke-virtual {v6, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v6
 
    if-eqz v6, :cond_5
 
    .line 2429
    iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v6}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateshowClock()V
 
    goto :goto_0
 
    .line 2423
    :cond_5
    const-string v6, "com.android.settings.SB_TRANSPARENCY_CHANGED"
 
    invoke-virtual {v6, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v6
 
    if-eqz v6, :cond_6
 
    .line 2429
    iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v6}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateSbTransp()V
 
    goto/16 :goto_0
 
    .line 2423
    :cond_6
    const-string v6, "com.android.settings.BRIGHTNESS"
 
    invoke-virtual {v6, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v6
 
    if-eqz v6, :cond_7
 
    .line 2429
    iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v6}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateBrightness()V
 
    goto/16 :goto_0
.end method
@phuongve Toàn bộ PhoneStatusbar$7 đây chứ?
thienhoa3
ĐẠI BÀNG
11 năm
Hóng cùng các bác
đã fix
Code:
.class Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;
.super Landroid/content/BroadcastReceiver;
.source "PhoneStatusBar.java"
 
 
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
.end annotation
 
.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation
 
 
# instance fields
.field final synthetic this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
 
# direct methods
.method constructor <init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)V
    .locals 0
    .parameter
 
    .prologue
    .line 2390
    iput-object p1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-direct {p0}, Landroid/content/BroadcastReceiver;-><init>()V
 
    return-void
.end method
 
 
# virtual methods
.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
    .locals 7
    .parameter "context"
    .parameter "intent"
 
    .prologue
    .line 2392
    invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
 
    move-result-object v0
 
    .line 2393
    .local v0, action:Ljava/lang/String;
    const-string v4, "PhoneStatusBar"
 
    new-instance v5, Ljava/lang/StringBuilder;
 
    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
 
    const-string v6, "onReceive, action="
 
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
 
    move-result-object v5
 
    invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
 
    move-result-object v5
 
    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
 
    move-result-object v5
 
    invoke-static {v4, v5}, Lcom/mediatek/xlog/Xlog;->d(Ljava/lang/String;Ljava/lang/String;)I
 
    .line 2394
    const-string v4, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-nez v4, :cond_0
 
    const-string v4, "android.intent.action.SCREEN_OFF"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-eqz v4, :cond_3
 
    .line 2396
    :cond_0
    const/4 v2, 0x0
 
    .line 2397
    .local v2, excludeRecents:Z
    const-string v4, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-eqz v4, :cond_1
 
    .line 2398
    const-string v4, "reason"
 
    invoke-virtual {p2, v4}, Landroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;
 
    move-result-object v3
 
    .line 2399
    .local v3, reason:Ljava/lang/String;
    if-eqz v3, :cond_1
 
    .line 2400
    const-string v4, "recentapps"
 
    invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v2
 
    .line 2403
    .end local v3          #reason:Ljava/lang/String;
    :cond_1
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v4, v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->animateCollapse(Z)V
 
    .line 2417
    .end local v2          #excludeRecents:Z
    :cond_2
    :goto_0
    return-void
 
    .line 2405
    :cond_3
    const-string v4, "android.intent.action.CONFIGURATION_CHANGED"
 
    invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v4
 
    if-eqz v4, :cond_2
 
    .line 2406
    invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
 
    move-result-object v4
 
    invoke-virtual {v4}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration;
 
    move-result-object v1
 
    .line 2407
    .local v1, currentConfig:Landroid/content/res/Configuration;
    iget v4, v1, Landroid/content/res/Configuration;->fontScale:F
 
    iget-object v5, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    #getter for: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPreviousConfigFontScale:F
    invoke-static {v5}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$800(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)F
 
    move-result v5
 
    sub-float/2addr v4, v5
 
    invoke-static {v4}, Ljava/lang/Math;->abs(F)F
 
    move-result v4
 
    const v5, 0x3727c5ac
 
    cmpl-float v4, v4, v5
 
    if-lez v4, :cond_4
 
    .line 2408
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    #calls: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->refreshExpandedView(Landroid/content/Context;)V
    invoke-static {v4, p1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$900(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/content/Context;)V
 
    .line 2409
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    iget v5, v1, Landroid/content/res/Configuration;->fontScale:F
 
    #setter for: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPreviousConfigFontScale:F
    invoke-static {v4, v5}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$802(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;F)F
 
    .line 2411
    :cond_4
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    #calls: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->repositionNavigationBar()V
    invoke-static {v4}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$1000(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)V
 
    .line 2412
    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v4}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateResources()V
 
    goto :goto_0
 
    .line 2423
    const-string v6, "com.android.settings.CLOCK"
 
    invoke-virtual {v6, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v6
 
    if-eqz v6, :cond_5
 
    .line 2429
    iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v6}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateshowClock()V
 
    goto :goto_0
 
    .line 2423
    :cond_5
    const-string v6, "com.android.settings.SB_TRANSPARENCY_CHANGED"
 
    invoke-virtual {v6, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v6
 
    if-eqz v6, :cond_6
 
    .line 2429
    iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v6}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateSbTransp()V
 
    goto/16 :goto_0
 
    .line 2423
    :cond_6
    const-string v6, "com.android.settings.BRIGHTNESS"
 
    invoke-virtual {v6, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
 
    move-result v6
 
    if-eqz v6, :cond_1
 
    .line 2429
    iget-object v6, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$7;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
 
    invoke-virtual {v6}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->updateBrightness()V
 
    goto/16 :goto_0
.end method
phuongve
TÍCH CỰC
11 năm
^
^
Ừ, toàn bộ phonestatusbar$7 của mình đấy. Thanks chicken nhé, giờ mình có việc đi ra ngoài rồi, lát tối về mình thử lại rồi báo kết quả sau nhé

Sent from my Lumia 1020 using Tinhte.vn
@phuongve Ok 😃


Gửi từ... mà thật ra thì cũng đéo ai quan tâm #
phuongve
TÍCH CỰC
11 năm
@dafuqChicken Tạch rồi chicken ơi. Sau khi mod xong như hướng dẫn, mình push vào /system/app rồi reboot lại máy thì mất luôn statusbar luôn rồi. Ngồi làm lại từ đầu lần thứ 2 thì cũng tạch luôn, vẫn bị mất statusbar😕 Giờ không biết nguyên nhân do đâu nữa.😕
phuongve
TÍCH CỰC
11 năm
^
^
Tình hình là mình thử làm riêng từng cái, center-clock riêng, trong suốt riêng, để kiểm tra khoanh vùng xem coi code nào bị lỗi. Kết quả là tạch hết cả 2😕 Làm riêng cái center-clock cũng bị mất statusbar, làm riêng cái trong suốt cũng bị mất statusbar😕
bạn đổi giá trị này trong PhoneStatusBar.smali xem
Code: .field private static final IS_CU:Z = false
bạn sign apk bằng tool sign chứ?
phuongve
TÍCH CỰC
11 năm
@dafuqChicken Của mình nó false sẵn rồi mà chicken😁
ukm đúng rồi
bị FC như bạn khả năng cao là do cái ClockEx.smali rồi đấy, trc kia mình cũng bị vậy

mình lấy Clock.smali chỉnh lại cho bạn xem có ok k nhé 😃
phuongve
TÍCH CỰC
11 năm
@dafuqChicken 2 file bên đó, 1 cái là của cái revo S2 đã được mod hoàn chỉnh. 1 cái là của cái lenovo P700 của mình: settings.apk mình đã port rồi, còn cái systemUI.apk là file sạch, chưa mod code.

/// Mà hình như là sai mấy giá trị cond_xx hay sao ấy chicken ơi. Mình vừa bung cái của revo s2 ra ngâm cứu code rồi copy qua, rồi sửa cond_xx thì chạy được rồi. Tuy nhiên giờ phát sinh vấn đề mới:
-Nền statusbar vẫn đen, bên cạnh đó, chỉnh độ trong suốt lên càng cao thì mấy icon trên đó càng bị nhòe, bị chồng bóng mờ,...😕Chỉnh trong suốt càng cao càng bị nhiều, hạ % trong suốt xuống thì bị ít hơn, mà nền vẫn đen.😕



@phuongve Lỗi này hay tuyệt vời 😁
Bạn thử so cái drawables.xml với cái này xem có khớp nhau không, chỉnh lại cho khớp:
Code:
<resources>
    <item type="drawable" name="APKTOOL_DUMMY_0157">false</item>
    <item type="drawable" name="APKTOOL_DUMMY_0158">false</item>
    <item type="drawable" name="APKTOOL_DUMMY_0159">false</item>
    <item type="drawable" name="APKTOOL_DUMMY_015a">false</item>
    <item type="drawable" name="notification_number_text_color">#ffffffff</item>
    <item type="drawable" name="notification_item_background_color">#3f000000</item>
    <item type="drawable" name="notification_item_background_color_pressed">#ff257390</item>
    <item type="drawable" name="ticker_background_color">#ff1d1d1d</item>
    <item type="drawable" name="status_bar_background">#ff000000</item>
    <item type="drawable" name="status_bar_recents_background_solid">#b3000000</item>
    <item type="drawable" name="status_bar_recents_app_thumbnail_background">#88000000</item>
    <item type="drawable" name="status_bar_notification_row_background_color">#ff090909</item>
    <item type="drawable" name="notification_header_bg">#00000000</item>
    <item type="drawable" name="notification_tracking_bg">#bf000000</item>
    <item type="drawable" name="recents_callout_line">#9933b5e5</item>
    <item type="drawable" name="notification_item_background_legacy_color">#ffaaaaaa</item>
</resources>
@phuongve À mà cái SystemUI của bạn nó có đòi hỏi phải "yêu cầu khởi động lại" k??
Đây nhé http://www.mediafire.com/?eh20p260cn2u7si
Thử copy lại cái này vào smali\com\android\systemui\statusbar\policy của cái SystemUI.apk bị lỗi xem thế nào o_O
phuongve
TÍCH CỰC
11 năm
Đúng và khớp hết chicken ơi, mình dò mấy cái đó đầu tiên luôn ấy mà. Mà mình tìm ra lỗi bị nhòe và bóng mờ nêu phía trên rồi: sửa 0x4 thành -0x3 là hết bị và trong suốt muốn chỉnh bao nhiêu thì chỉnh được rồi.:D

Nó không có nhảy ra đòi hỏi, tuy nhiên mình biết nên tự reboot lại, chứ ko reboot thì nó vẫn như cũ.:D

///Chiều đi nhậu xỉn quắc cần câu, về nhà máu quá lên máy ngồi làm cái vụ này, nghiên cứu mấy cái lỗi đỏ mồ hôi hột, giờ tỉnh rượu luôn rồi.:D Giờ ngon rồi, thanks bạn chicken nhé, mai nghiên cứu tiếp vụ center-clock, liroid với cái nút nguồn trên statusbar😃
phuongve
TÍCH CỰC
11 năm
@dafuqChicken Vừa tải về test xong, vẫn còn bị 2 cái đồng hồ như cũ chicken ơi:(
@phuongve Ukm, vậy chắc tạch cái smali cái chỗ "clock_center" rồi, để mai fix sau vậy 😁
@phuongve phuongve thay 2 cái mã đỏ vào smali rồi chứ?


Gửi từ... mà thật ra thì cũng đéo ai quan tâm #
phuongve
TÍCH CỰC
11 năm
@dafuqChicken Thay rồi, mình có thay mấy cái id đấy mà

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019