try to edit settings.apk>HtcBeatAudioFeatureFlags.smali
.class public Lcom/android/settings/framework/flag/feature/HtcBeatAudioFeatureFlags;
.super Ljava/lang/Object;
.source "HtcBeatAudioFeatureFlags.java"
# direct methods
.method public constructor <init>()V
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static final getBeatAudioSettingsVisibility()Z
.locals 1
invoke-static {}, Lcom/htc/wrap/android/media/HtcWrapAudioManager;->isSupportBeats()Z
move-result v0
if-eqz v0, :cond_0
sget-boolean v0, Lcom/android/settings/framework/flag/HtcDeviceFlags;->isH0007:Z
if-eqz v0, :cond_0
sget-boolean v0, Lcom/android/settings/framework/flag/HtcProjectFlags;->isA0003:Z
if-eqz v0, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
change to
.class public Lcom/android/settings/framework/flag/feature/HtcBeatAudioFeatureFlags;
.super Ljava/lang/Object;
.source "HtcBeatAudioFeatureFlags.java"
# direct methods
.method public constructor <init>()V
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static final getBeatAudioSettingsVisibility()Z
.locals 1
const/4 v0, 0x1
return v0
.end method
Click to expand...
Click to collapse
try to edited only this line in framework/ext.jar>HtcBuildFlag.smali
.method public static final getHTC_Pyramid_LE_flag()Z
.registers 1
.prologue
.line 815
const/4 v0, 0x0
-----------------------------------------------------------------
.method public static final getHTC_Pyramid_LE_flag()Z
.registers 1
.prologue
.line 815
const/4 v0, 0x1
Click to expand...
Click to collapse
&
.method public static final getHTC_GLOBAL_BEATS()Z
.registers 1
.prologue
.line 823
const/4 v0, 0x0
return v0
.end method
.method public static final getHTC_GLOBAL_BEATS()Z
.registers 1
.prologue
.line 823
const/4 v0, 0x1
Click to expand...
Click to collapse
try to edit framework>framework.jar>AudioManager.smali
.method public static isSpecialCase()Z
.registers 3
.prologue
.line 2220
sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_DEVICE_flag:S
const/16 v2, 0x3e
if-ne v1, v2, :cond_11
sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S
const/4 v2, 0x2
if-ne v1, v2, :cond_11
sget-boolean v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->HTC_GLOBAL_BEATS:Z
if-eqz v1, :cond_11
const/4 v0, 0x1
.line 2222
.local v0, support:Z
:goto_10
return v0
.line 2220
.end local v0 #support:Z
:cond_11
const/4 v0, 0x0
goto :goto_10
.end method
change to
.method public static isSpecialCase()Z
.registers 3
const/4 v0, 0x1
return v0
.end method
Click to expand...
Click to collapse
please mark the credit when you use this method
Quick question - I can't find "HtcBeatAudioFeatureFlags.smali" in Settings.apk. I found "HtcBuildFlag.smali" and "AudioManager.smali" in ext.jar and framework.jar, but can't find the first one anywhere after going through each folder individually... All I can find that mentions Beats is at /com/android/settings/framework/activity/beats/ where it has "HtcBeatsSwitchEnabler.smali" and "HtcBeatsSwitchEnabler$1.smali", neither of which reference "HtcBeatAudioFeatureFlags.java". I figured it would be in /com/android/settings/framework/flag/feature/, but here it goes from "HtcApplicationsFeatureFlags.smali" to "HtcCallFeatureFlags.smali". Appears this is the case in both the 3.26.502.52 and 3.26.502.56 base (which is weird 'cause the .56 base has Beats enabled already, unless I'm missing the point of this mod, which is very possible) - am I missing something?
homeslice976 said:
Quick question - I can't find "HtcBeatAudioFeatureFlags.smali" in Settings.apk. I found "HtcBuildFlag.smali" and "AudioManager.smali" in ext.jar and framework.jar, but can't find the first one anywhere after going through each folder individually... All I can find that mentions Beats is at /com/android/settings/framework/activity/beats/ where it has "HtcBeatsSwitchEnabler.smali" and "HtcBeatsSwitchEnabler$1.smali", neither of which reference "HtcBeatAudioFeatureFlags.java". I figured it would be in /com/android/settings/framework/flag/feature/, but here it goes from "HtcApplicationsFeatureFlags.smali" to "HtcCallFeatureFlags.smali". Appears this is the case in both the 3.26.502.52 and 3.26.502.56 base (which is weird 'cause the .56 base has Beats enabled already, unless I'm missing the point of this mod, which is very possible) - am I missing something?
Click to expand...
Click to collapse
sorry, well, I suspect there are things I am forgetting... Holiday settings.apk does not support beats audio. but The Sensation features Beats Audio support.. So, need to get from sensation..
bananacakes said:
sorry, well, I suspect there are things I am forgetting... Holiday settings.apk does not support beats audio. but The Sensation features Beats Audio support.. So, need to get from sensation..
Click to expand...
Click to collapse
Thanks for that. And for the instruction. One last pick of your brain if you don't mind - After doing this, I flashed a fresh install of the .52 build with these edits (including the .smali added to Settings.apk). After flashing, it looks like it's automatically enabling Beats audio in all music apps, however there's no sound in the HTC Music Player with Beats enabled. If I disable Beats, sounds play normally. Also, Google Play Music and iHeartRadio plays everything fine with Beats enabled - haven't tested any other media players yet. Any thoughts?
Edit: I thought maybe GSLeon's Vivid_Beats_Dolby_SRS_EQ.zip that installs Beats, Dolby Digital, SRS & the standard EQ for the HTC Vivid in music & Videos might fix HTC Music and Video Player so that Beats can be utilized with these apps as well, but still no go (though the other EQs work).
Edit 2: Interestingly, GSLeon's Vivid_Beats_Dolby_SRS_EQ.zip alone, on top of a fresh install with none of the above modifications, does the same thing (no sound in stock player when using Beats). But using this mod alone, Beats isn't available globally. So why's the HTC Music player not like it? I don't personally use it, so it's not a big deal for me...still curious though
What value would have to be changed to activate beats notification in the statusbar ? (to let it pop up)
bananacakes said:
sorry, well, I suspect there are things I am forgetting... Holiday settings.apk does not support beats audio. but The Sensation features Beats Audio support.. So, need to get from sensation..
Click to expand...
Click to collapse
Will this attachment enable beats for everything .?
Sent from my HTC PH39100 using xda app-developers app
Great guide and thanks for sharing this info...the only issue I am having is that in my AudioManager.smali I did a ctrl f to attempt to find "special" to make the changes and it indicated that its not present, but the ROM does have beats support. Enclosed is a pastebin copy of my AudioManager.smali.
My question is can I just add your code to my AudioManager.smali? If so what needs to be removed? And where should it go (if it matters)? Thanks
After searching months for a way to allow Unknown Sources by default on the HTC One, I've finally discovered where to mod it so I thought I would share for the benefit of the community. Its one of the more convenient mods to have and I thought it would be a great for lazy people like me who want to quickly restore their setup while trying other roms and not have to deal with Blocked install messages lol.
You will need to have apktool or similar tools and decompiling knowledge before attempting this.
Previously you would need to mod SettingsProvider.apk but on Sense 5 that is no longer the case. There are two APK's to look at here. PureC_PackageInstaller and Settings.apk. PureC is the main one you want to look at.
Decompile PureC_PackageInstaller and find this directory in smali folder:
\smali\com\android\packageinstaller\PackageInstallerActivity.smali
open up PackageInstallerActivity.smali and look for this method:
Code:
.method private isInstallingUnknownAppsAllowed()Z
.locals 3
.prologue
const/4 v0, 0x0
.line 261
invoke-virtual {p0}, Lcom/android/packageinstaller/PackageInstallerActivity;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "install_non_market_apps"
invoke-static {v1, v2, v0}, Landroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v1
if-lez v1, :cond_0
const/4 v0, 0x1
:cond_0
return v0
.end method
change
Code:
.locals 3
.prologue
const/4 v0, 0x0
.line 261
to this
Code:
.locals 3
.prologue
const/4 v0, 0x1
.line 261
recompile and you are done
next decompile Settings.apk(optional!)
the only reason to edit this is to give the mod the appearance that Unknown Sources is visibly checked in Settings menu, otherwise the mod still works fine even if it isn't checked.
find this directory:
\smali\com\android\settings\SecuritySettings.smali
locate this method:
Code:
.method private isNonMarketAppsAllowed()Z
.locals 3
const/4 v0, 0x0
invoke-virtual {p0}, Lcom/android/settings/SecuritySettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "install_non_market_apps"
invoke-static {v1, v2, v0}, Landroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v1
if-lez v1, :cond_0
const/4 v0, 0x1
:cond_0
return v0
.end method
change the 0x0 to 0x1, and change the 0x1 to 0x0.
recompile and your done.
tested this and working on Sprint HTC One variant, but i'm almost certain this should work on any carrier with version of Sense 5.
also of note: there is a small glitch to this mod while toggling the checkbox on and off. it'll recheck itself if you turn it off and come back to the options screen again. Plus, I turned off the disabled function completely as a temporary solution because there was another glitch where you couldn't install apps while it was checked on if you messed around trying to turn it off, but why would you want to? lol
You can also just edit the default.xml in customize
<item name="def_install_non_market_apps">1</item>
Sent from my HTCONE using Tapatalk 2
is there any way to do this in android10 ?
[Guide] How to add a SettingsObserver to your Rom
This will allow you to add a settings observer to existing smali.
Adding a settings observer allows you to create a real-time update to an existing mod such as colors and toggles so the modification takes effect instantly without any other user intervention such as reboots, etc.
Huge credits @remuntada for all the information included in this guide.
Probably the most utilized settings observer is present for the PhoneStatusBar.smali in SystemUI.apk so we will provide this as an example:
Also see here for example of how to add a RegObserver to QSPanel
RegObserver Guide
SettingsObserver Guide
SystemUI.apk smali edits:
\smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali
New code is in BLUE
Code:
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$PmsBrightnessEnableObserver;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$EasyModeEnableObserver;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$BrightnessEnableObserver;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$BatteryTextObserver;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$DozeServiceHost;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$ShadeUpdates;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$FastColorDrawable;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$MyTicker;,
[COLOR="Blue"]Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;,[/COLOR]
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$H;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$EmergencyModeObserver;,
}
.end annotation
Same smali, add new code in BLUE
The edit is about halfway into the smali. Make sure the values of the new code match the surrounding values. Note that after that :cond_0 there may be additional code in your smali. Just insert the new code where indicated.
Code:
.method public start()V
.
.
.
:cond_0[COLOR="Blue"]
new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;
iget-object v1, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mHandler:Lcom/android/systemui/statusbar/BaseStatusBar$H;
invoke-direct {v0, p0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;-><init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/os/Handler;)V
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->observe()V[/COLOR]
new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBarPolicy;
iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;
iget-object v2, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCastController:Lcom/android/systemui/statusbar/policy/CastControllerImpl;
invoke-direct {v0, v1, v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarPolicy;-><init>(Landroid/content/Context;Lcom/android/systemui/statusbar/policy/CastController;)V
iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mIconPolicy:Lcom/android/systemui/statusbar/phone/PhoneStatusBarPolicy;
Same smali, add YOUR new method.
This is just an example method of a mod I added to change the dateview color that gets invoked from the SettingsObserver:
Code:
.method setDateTextViewColor()V
.locals 8
iget-object v1, p0, Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v2
const-string v3, "pulldown_date_color"
const v1, -0x111112
invoke-static {v2, v3, v1}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v7
iget-object v5, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarWindow:Lcom/android/systemui/statusbar/phone/StatusBarWindowView;
const v6, 0x7f0d02b8 ## [COLOR="Green"]<public type="id" name="date_expanded"
[/COLOR]
invoke-virtual {v5, v6}, Lcom/android/systemui/statusbar/phone/StatusBarWindowView;->findViewById(I)Landroid/view/View;
move-result-object v4
check-cast v4, Landroid/widget/TextView;
invoke-virtual {v4, v7}, Landroid/widget/TextView;->setTextColor(I)V
return-void
.end method
Add the PhoneStatusBar$SettingsObserver.smali file already attached at the bottom of this post to the same folder as PhoneStatusBar.smali.
Now lets look in the PhoneStatusBar$SettingsObserver.smali to see how we made the changes to it.
Note the text in BLUE, this where we check for changes to the key string and in the second method is where the new method gets launched to update the view if changes have been detected to that key.
Note the text in GREEN, this is how you would add two more mods to the settings observer with two additional methods to invoke in PhoneStatusBar. They are only present as an example.
Code:
.class Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;
.super Landroid/database/ContentObserver;
.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 = "SettingsObserver"
.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;Landroid/os/Handler;)V
.locals 0
iput-object p1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
invoke-direct {p0, p2}, Landroid/database/ContentObserver;-><init>(Landroid/os/Handler;)V
return-void
.end method
# virtual methods
.method observe()V
.locals 3
const/4 v2, 0x0
iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
iget-object v1, v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
[COLOR="Blue"]const-string v1, "pulldown_date_color"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
invoke-virtual {v0, v1, v2, p0}, Landroid/content/ContentResolver;->registerContentObserver[/COLOR](Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
[COLOR="Green"]const-string v1, "second_settings_key_goes_here"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
invoke-virtual {v0, v1, v2, p0}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
const-string v1, "third_settings_key_goes_here"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
invoke-virtual {v0, v1, v2, p0}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V[/COLOR]
return-void
.end method
.method public onChange(Z)V
.locals 1
[COLOR="Blue"] iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setDateTextViewColor()V
[/COLOR]
[COLOR="Green"]iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setSecondMethod()V
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;
invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setThirdMethod()V
[/COLOR] return-void
.end method
Modifying and adding a Settings Observer to most other smalis:
For smali where #annotations does not exist, add a new one right below the .source line like in this example. If #annotations already exist, add the line to #annotations as in the PhoneStatusBar.smali example above.
Note the highlighted text in RED, this path must match the smali you are working in (the green highlighted path).
Code:
.class public [COLOR="Green"]Lcom/android/incallui/dialpad/DialpadView[/COLOR];
.super Landroid/widget/LinearLayout;
.source "DialpadView.java"
[COLOR="Blue"]# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
[COLOR="Red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR]$SettingsObserver;
}
.end annotation[/COLOR]
Search for either one of these methods:
Code:
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
And add the new code in BLUE (and Red) before the return-void at the end of the method.
Note that the paths in RED have to match the smali you're working in.
Note that I had to increase the .locals value to accommodate the new entry which I did in this example.
Code:
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
[COLOR="Blue"].locals 3[/COLOR]
const/4 v0, 0x0
invoke-direct {p0, p1, p2, v0}, Lcom/android/incallui/dialpad/DialpadView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
[COLOR="blue"]new-instance v1, [COLOR="red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR]$SettingsObserver;
new-instance v2, Landroid/os/Handler;
invoke-direct {v2}, Landroid/os/Handler;-><init>()V
invoke-direct {v1, p0, v2}, [COLOR="red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR]$SettingsObserver;-><init>([COLOR="Red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR];Landroid/os/Handler;)V
invoke-virtual {v1}, [COLOR="red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR]$SettingsObserver;->observe()V
[/COLOR]
return-void
.end method
Important note:
Wouldn't you know it, the smali I chose to use as an example does not support mcontext so I used getContext here and in the attached DateView$SettingsObserver.smali
After the last .method public constructor method (or with the rest of the access$xxx methods, if they exist) insert this method.
Note the path highlighted in RED must match the smali you are working with.
Code:
.method static synthetic access$001([COLOR="Red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR];)Landroid/content/Context;
.locals 1
invoke-virtual {p0}, [COLOR="red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR];->getContext()Landroid/content/Context;
move-result-object v0
return-object v0
.end method
Important note:
Use this one instead if your smali DOES support mcontext:
Code:
.method static synthetic access$001([COLOR="red"]Lcom/android/keyguard/sec/SecKeyguardClockSingleView[/COLOR];)Landroid/content/Context;
.locals 1
iget-object v0, p0, [COLOR="red"]Lcom/android/keyguard/sec/SecKeyguardClockSingleView[/COLOR];->mContext:Landroid/content/Context;
return-object v0
.end method
How to create a new YourFile$SettingsObserver
I don't recommend using
PhoneStatusBar$SettingsObserver.smali or DateView$SettingsObserver.smali
as your templates. The first is specifically for PhoneStatusBar.smali and use DateView$SettingsObserver.smali if your smali does not support mcontext.
Using one of the attached $SettingsObserver files as a template, do the following edits throughout the ENTIRE $SettingsObserver.smali (only highlighting first few lines for brevity).
Find and replace all 14 of the paths to correspond with the smali you are working in.
The .source line is the smali name only. Change this to match the smali you are working in also.
The completed SettingsObserver.smali gets placed in the same folder as the parent smali we are working with.
Code:
.class public [COLOR="Red"]Lcom/android/incallui/dialpad/DialpadView[/COLOR]$SettingsObserver;
.super Landroid/database/ContentObserver;
.source "[COLOR="red"]DialpadView[/COLOR].java"
SettingsObserver example files have been attached to this post.
** some MM guide discussions begin here: http://forum.xda-developers.com/showpost.php?p=66480317&postcount=70
Reserved
I am totally open to alternate methods and critique on improving on this folks so don't be shy with the input.
tdunham said:
I am totally open to alternate methods and critique on improving on this folks so don't be shy with the input.
Click to expand...
Click to collapse
Are you??? tomorrow we will add our observer then ???
Sent from my awesome g920f powered by 6thGear
daxgirl said:
Are you??? tomorrow we will add our observer then ???
Click to expand...
Click to collapse
Awesome!
I am fairly new to adding observers but I thought it was necessary to start this discussion with the established method and work our way up from there.
How would it be to change in real time with this guide ?: [How-to Guide] Colorize main dialpad Android letters & digits L
Do I have to create the settings observer?
tdunham said:
Awesome!
I am fairly new to adding observers but I thought it was necessary to start this discussion with the established method and work our way up from there.
Click to expand...
Click to collapse
No doubt!!! Keep it up! You're making xda tolerable again!
Sent from my awesome g920f powered by 6thGear
I have to say most of the work comes from the suggestion given to me by @CNexus here http://forum.xda-developers.com/showpost.php?p=50961314&postcount=527
Add the smali DateView$SettingsObserver to smali/com/android/dialer/dialpad and change all the routes to which it belongs.
Changing the .class public.
Should I do anything else?
aceqott said:
Add the smali DateView$SettingsObserver to smali/com/android/dialer/dialpad and change all the routes to which it belongs.
Changing the .class public.
Should I do anything else?
Click to expand...
Click to collapse
Its going to be pretty tough to add an observer to SecContacts, they chose to use letters for every single method so its going to be difficult to figure out where to place anything.
I'll look at it when I can but its probably not going to happen right away and like I said, I'm not having the dialpad color not changing instantly even without an observer so it is hard to tell if it will even work if I do find something.
tdunham said:
Its going to be pretty tough to add an observer to SecContacts, they chose to use letters for every single method so its going to be difficult to figure out where to place anything.
I'll look at it when I can but its probably not going to happen right away and like I said, I'm not having the dialpad color not changing instantly even without an observer so it is hard to tell if it will even work if I do find something.
Click to expand...
Click to collapse
Well, too bad, anyway I do not understand, I have seen now a video of other ROMs where if the digit is changed and letters SecContact real time.
While I catch a cold and am having a fever, honestly cannot convince myself to lay down and tell myself read this thread later. Thanks for amazing guide.:good:
kmokhtar79 said:
While I catch a cold and am having a fever, honestly cannot convince myself to lay down and tell myself read this thread later. Thanks for amazing guide.:good:
Click to expand...
Click to collapse
Get to bed and read on Tapatalk. ..
Sent from my awesome g920f powered by 6thGear
daxgirl said:
Get to bed and read on Tapatalk. ..
Sent from my awesome g920f powered by 6thGear
Click to expand...
Click to collapse
I need wide screen [emoji16]
OK for start, I am asking to see whether if in theory I am understanding it correctly or not.
I am trying adding a new observe for battery color as once shared by @remuntada78.
I added this in my settings observer
Code:
const-string v1, "battery_color"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
invoke-virtual {v0, v1, v2, p0}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
and
Code:
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->this$0:Lcom/android/systemui/BatteryMeterView;
invoke-virtual {v0}, Lcom/android/systemui/BatteryMeterView;->setBatteryColor()V
and then in
BatteryMeterView.smali
Code:
.class public Lcom/android/systemui/BatteryMeterView;
.super Landroid/view/View;
.source "BatteryMeterView.java"
# interfaces
.implements Lcom/android/systemui/DemoMode;
.implements Lcom/android/systemui/statusbar/policy/BatteryController$BatteryStateChangeCallback;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
[COLOR="Red"] Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;,[/COLOR]
Lcom/android/systemui/BatteryMeterView$BatteryTracker;
}
.end annotation
in the same smali:
Code:
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
.locals [COLOR="red"]2[/COLOR]
const/4 v0, 0x0
invoke-direct {p0, p1, p2, v0}, Lcom/android/systemui/BatteryMeterView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
[COLOR="red"] new-instance v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;
new-instance v2, Landroid/os/Handler;
invoke-direct {v2}, Landroid/os/Handler;-><init>()V
invoke-direct {v1, p0, v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;-><init>(Lcom/android/systemui/BatteryMeterView;Landroid/os/Handler;)V
invoke-virtual {v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->observe()V[/COLOR]
return-void
.end method
and as my smali does not support mcontext I added following method in red
Code:
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V [COLOR="SeaGreen"]#last public constructor[/COLOR]
.
.
.
.end method
.method static synthetic access$000(Lcom/android/systemui/BatteryMeterView;)Landroid/os/Handler;
.locals 1
iget-object v0, p0, Lcom/android/systemui/BatteryMeterView;->mPostInvalidateHandler:Landroid/os/Handler;
return-object v0
.end method
[COLOR="red"].method static synthetic access$001(Lcom/android/systemui/BatteryMeterView;)Landroid/content/Context;
.locals 1
invoke-virtual {p0}, Lcom/android/systemui/BatteryMeterView;->getContext()Landroid/content/Context;
move-result-object v0
return-object v0
.end method[/COLOR]
And lastly have done those samli modification described here I don't try it.
kmokhtar79 said:
OK for start, I am asking to see whether if in theory I am understanding it correctly or not.
I am trying adding a new observe for battery color as once shared by @remuntada78.
I added this in my settings observer
Code:
const-string v1, "battery_color"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
invoke-virtual {v0, v1, v2, p0}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
and
Code:
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->this$0:Lcom/android/systemui/BatteryMeterView;
invoke-virtual {v0}, Lcom/android/systemui/BatteryMeterView;->setBatteryColor()V
and then in
BatteryMeterView.smali
Code:
.class public Lcom/android/systemui/BatteryMeterView;
.super Landroid/view/View;
.source "BatteryMeterView.java"
# interfaces
.implements Lcom/android/systemui/DemoMode;
.implements Lcom/android/systemui/statusbar/policy/BatteryController$BatteryStateChangeCallback;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
[COLOR="Red"] Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;,[/COLOR]
Lcom/android/systemui/BatteryMeterView$BatteryTracker;
}
.end annotation
in the same smali:
Code:
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
.locals [COLOR="red"]2[/COLOR]
const/4 v0, 0x0
invoke-direct {p0, p1, p2, v0}, Lcom/android/systemui/BatteryMeterView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
[COLOR="red"] new-instance v1, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;
new-instance v2, Landroid/os/Handler;
invoke-direct {v2}, Landroid/os/Handler;-><init>()V
invoke-direct {v1, p0, v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;-><init>(Lcom/android/systemui/BatteryMeterView;Landroid/os/Handler;)V
invoke-virtual {v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->observe()V[/COLOR]
return-void
.end method
and as my smali does not support mcontext I added following method in red
Code:
.method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V [COLOR="SeaGreen"]#last public constructor[/COLOR]
.
.
.
.end method
.method static synthetic access$000(Lcom/android/systemui/BatteryMeterView;)Landroid/os/Handler;
.locals 1
iget-object v0, p0, Lcom/android/systemui/BatteryMeterView;->mPostInvalidateHandler:Landroid/os/Handler;
return-object v0
.end method
[COLOR="red"].method static synthetic access$001(Lcom/android/systemui/BatteryMeterView;)Landroid/content/Context;
.locals 1
invoke-virtual {p0}, Lcom/android/systemui/BatteryMeterView;->getContext()Landroid/content/Context;
move-result-object v0
return-object v0
.end method[/COLOR]
And lastly have done those samli modification described here I don't try it.
Click to expand...
Click to collapse
Look at the red class declaration. You added observer class that belongs to a different class. You need an observer for this class. Not for PhoneStatusBar.smali
Sent from my awesome g920f powered by 6thGear
daxgirl said:
Look at the red class declaration. You added observer class that belongs to a different class. You need an observer for this class. Not for PhoneStatusBar.smali
Sent from my awesome g920f powered by 6thGear
Click to expand...
Click to collapse
You are saying I need another observer to create as BatteryMeterView$SettingsObserver.smali right?
kmokhtar79 said:
You are saying I need another observer to create as BatteryMeterView$SettingsObserver.smali right?
Click to expand...
Click to collapse
Exactly. Observer is in this case an inner class. BatteryMeterView class cannot have an inner class that's called PhoneStatusBar$SettingsObserver.
http://www.javaworld.com/article/2077411/core-java/inner-classes.html
Sent from my awesome g920f powered by 6thGear
daxgirl said:
Are you??? tomorrow we will add our observer then ???
Click to expand...
Click to collapse
@daxgirl
Looking for an alternate method to add an observer where one wouldn't normally work. No rush on this.
tdunham said:
@daxgirl
Looking for an alternate method to add an observer where one wouldn't normally work. No rush on this.
Click to expand...
Click to collapse
Lol... hi there. On this side "looking forward to finishing properly handling assets and scripts for the new custom settings app so I cac concentrate on other things"
Just to clarify the thing...
We have built a settings app a while ago for ourselves. Since we both work with java, we don't need it to be as automated as ficeto's app is. So now the biggest challenge is to make it available for all, by providing a code that wouldn't require an entire forum on xda to couch devs to use it and minimize your exposure to java where possible. Our goal is to provide as clean code is possible, so minimal changes to code would be required to operate the app. That is because we understand that most devs have minimal skills when it comes to original development. We dont want to force people to build special conditions and make huge changes to the java part of the app. So the automating part... It's taking time....
We have so far fully automated and integrative nav drawer, where items can be added easily with little guiding, theme change support, automated preference fragments, automated scripts execution from the app assets and automated preference handling from the get go, no matter how deep the preference tree goes (as many nesting preference screens as you want). Right now I am working on handling those things in separate classes, so the devs wouldn't need to copy huge chunks of code when they want to create another new preference fragment for their drawer.... and as much as it's fun, little time is left for anything else for now...
Sent from my awesome g920f powered by 6thGear