Hi guys! It's been a long time. Now i present you my new mod called 'BatteryMod'. What is it? It will replace your current battery icon to my circle battery icon(oh yeah i made that icon by myself). And you can change the position left/right.
Step 1. Modding SystemUI
1. Download the attachment below.
2. Extract drawable folder into SystemUI folder.
3. Compile your SystemUI.
4. And Decompile your new compiled SystemUI.
5. Open public.xml, search for 'batt' & 'batt_charge'. Remember the public value!
6. Extract smali folder into SystemUI folder.
7. Open ucup.tech.batteryicon.BatteryIcon$1.smali, scroll down.
8. Replace '0x7f02009d' into your batt_charge's public value.
9. Replace '0x7f02009c' into your batt's public value.
10. Open your status_bar.xml(this will remove the clock.)
11. Replace the lines inside the first LinearLayout(id: icons) with this
12. Register the 'battIcon' in your ids.xml and public.xml(this time you don't need to remember the public values)Code:<ucup.tech.batteryicon.StatusBarLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <ucup.tech.batteryicon.BatteryIcon android:id="@id/battIcon" android:gravity="center_vertical" android:layout_width="18.5px" android:layout_height="18.5px" /> <com.android.systemui.statusbar.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:paddingLeft="6.0dip" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" /> <LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" /> </ucup.tech.batteryicon.StatusBarLayout>
13. Open your com.android.systemui.statusbar.policy.StatusBarPolicy(this will remove the EDT's battery mod)
14. Replace the updateBattery method with mine.
15. Compile SystemUI and Push!Code:.method private final updateBattery(Landroid/content/Intent;)V .locals 13 .parameter "intent" .prologue const/4 v11, 0x3 const/4 v10, 0x1 const/4 v9, 0x0 const-string v8, "level" const-string v12, "alarm" .line 633 const-string v6, "icon-small" invoke-virtual {p1, v6, v9}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v2 .line 634 .local v2, id:I const-string v6, "level" invoke-virtual {p1, v8, v9}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v3 .line 635 .local v3, level:I iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mService:Landroid/app/StatusBarManager; const-string v7, "battery" invoke-virtual {v6, v7, v2, v3}, Landroid/app/StatusBarManager;->setIcon(Ljava/lang/String;II)V [COLOR="Lime"]const v2, 0x0 invoke-virtual {v6, v7, v2}, Landroid/app/StatusBarManager;->setIconVisibility(Ljava/lang/String;Z)V[/COLOR] .line 637 const-string v6, "plugged" invoke-virtual {p1, v6, v9}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v6 if-eqz v6, :cond_4 move v5, v10 .line 638 .local v5, plugged:Z :goto_0 const-string v6, "level" const/4 v6, -0x1 invoke-virtual {p1, v8, v6}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v3 .line 647 iget-boolean v4, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBatteryPlugged:Z .line 649 .local v4, oldPlugged:Z iput-boolean v5, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBatteryPlugged:Z .line 650 iput v3, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBatteryLevel:I .line 652 iget-boolean v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBatteryFirst:Z if-eqz v6, :cond_0 .line 653 iput-boolean v9, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBatteryFirst:Z .line 667 :cond_0 iput-object p1, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIntent:Landroid/content/Intent; .line 669 const-string v6, "status" invoke-virtual {p1, v6, v10}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v1 .line 670 .local v1, batteryStatus:I const-string v6, "health" invoke-virtual {p1, v6, v10}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v0 .line 671 .local v0, batteryHealth:I const-string v6, "StatusBarPolicy" new-instance v7, Ljava/lang/StringBuilder; invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V const-string v8, "BAT. S:" invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v7 invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v7 const-string v8, " H:" invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v7 invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v7 invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v7 invoke-static {v6, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I .line 673 if-ne v1, v11, :cond_5 .line 674 iget-boolean v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsDisCharged:Z if-eqz v6, :cond_2 .line 675 iput-boolean v9, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsDisCharged:Z .line 676 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mDisChargeDialog:Landroid/app/AlertDialog; if-eqz v6, :cond_1 .line 677 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mDisChargeDialog:Landroid/app/AlertDialog; invoke-virtual {v6}, Landroid/app/AlertDialog;->dismiss()V .line 680 :cond_1 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBattIntent:Landroid/app/PendingIntent; if-eqz v6, :cond_2 .line 681 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mContext:Landroid/content/Context; const-string v7, "alarm" invoke-virtual {v6, v12}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v6 check-cast v6, Landroid/app/AlarmManager; iget-object v7, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBattIntent:Landroid/app/PendingIntent; invoke-virtual {v6, v7}, Landroid/app/AlarmManager;->cancel(Landroid/app/PendingIntent;)V .line 685 :cond_2 iget-boolean v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsFullCharged:Z if-eqz v6, :cond_3 .line 686 iput-boolean v9, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsFullCharged:Z .line 687 invoke-direct {p0}, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->removeFullChargeNotification()V .line 717 :cond_3 :goto_1 return-void .end local v0 #batteryHealth:I .end local v1 #batteryStatus:I .end local v4 #oldPlugged:Z .end local v5 #plugged:Z :cond_4 move v5, v9 .line 637 goto :goto_0 .line 690 .restart local v0 #batteryHealth:I .restart local v1 #batteryStatus:I .restart local v4 #oldPlugged:Z .restart local v5 #plugged:Z :cond_5 const/4 v6, 0x4 if-ne v1, v6, :cond_8 .line 691 if-eq v0, v11, :cond_6 const/4 v6, 0x7 if-ne v0, v6, :cond_3 .line 693 :cond_6 iget-boolean v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsDisCharged:Z if-nez v6, :cond_7 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mDisChargeDialog:Landroid/app/AlertDialog; if-nez v6, :cond_7 .line 694 iget-boolean v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsDisCharged:Z invoke-direct {p0, v6}, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->showDisChargePopup(Z)V .line 696 :cond_7 iput-boolean v10, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsDisCharged:Z goto :goto_1 .line 699 :cond_8 const/4 v6, 0x5 if-ne v1, v6, :cond_9 .line 700 iget-boolean v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsFullCharged:Z if-nez v6, :cond_3 .line 701 iput-boolean v10, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsFullCharged:Z .line 702 invoke-direct {p0}, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->addFullChargeNotification()V goto :goto_1 .line 705 :cond_9 iget-boolean v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsDisCharged:Z if-eqz v6, :cond_3 const/4 v6, 0x2 if-ne v0, v6, :cond_3 .line 706 iput-boolean v9, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mIsDisCharged:Z .line 708 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mDisChargeDialog:Landroid/app/AlertDialog; if-eqz v6, :cond_a .line 709 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mDisChargeDialog:Landroid/app/AlertDialog; invoke-virtual {v6}, Landroid/app/AlertDialog;->dismiss()V .line 712 :cond_a iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBattIntent:Landroid/app/PendingIntent; if-eqz v6, :cond_3 .line 713 iget-object v6, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mContext:Landroid/content/Context; const-string v7, "alarm" invoke-virtual {v6, v12}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v6 check-cast v6, Landroid/app/AlarmManager; iget-object v7, p0, Lcom/android/systemui/statusbar/policy/StatusBarPolicy;->mBattIntent:Landroid/app/PendingIntent; invoke-virtual {v6, v7}, Landroid/app/AlarmManager;->cancel(Landroid/app/PendingIntent;)V goto :goto_1 .end method
Step 2. Install my app.
Screenshots:
FAQs:
Question: My SystemUI FC!
Answer: You know how to logcat right?
Question: This thread is awful!
Answer: I know...
Credits:
- OGBatteryMod's Source for get identifier from string
disclaimer:
im sorry for this long thread, im no good at english and making thread like this.