Related
Use everything here on your own risk and hit THANKS BUTTON if you like my work!
General Information:
As you propably know, till now there is no CRT-off MOD out for the S3. This is because only changing the value of config_animateScreenLights from true to false in framework-res.apk is not working anymore!
Together with Tungstwenty and rovo89 we faced out, that the problem are some missing commands in the /system/framework/services.jar
After comparing files from S2 and S3 Tungstwenty could help me to find the right position to edit files and with a litte bit of testing we found the right commands to enable the CRT-off-effect!
Click to expand...
Click to collapse
Tungstwenty said:
Let me clarify what is required in order to have the CRT effects working:
A patched library that properly (i.e. no flicker, etc.) provides the effects --> see attached flashable zip's or use Tweakbox
Code changes on the ROM in order to properly trigger the effect(s), which the library will then respond to those triggers --> look at the how-to or use Tweakbox
Item no. 1 is the one that I worked on and for which a fully working library was now provided.
The 2nd part can be done in 2 different ways - either patching the S3's ROM to properly enable the CRT-On and/or CRT-Off effects, OR do some hooking on the existing methods in the ROM and without changing that code, override the flags (i.e., the way Tweakbox does it).
It's this 2nd aspect that you guys need to address somehow. I worked with rovo89 on Tweakbox and not only does it bundle with the library, it also does the code changes in memory to make it work (topic no. 2).
But sphinx02 had already provided that, initially, after some discussion on what needed to be patched on the S3 ROM.
So, in order to have it working you have 2 ways:
Either use Tweakbox and make use of its configuration options to enable only CRT-Off, only CRT-On, or whatever you fancy.
Ask for someone (such as sphinx02) that has an S3, to keep up with existing ROMs (it will need to be changed separately for every one), and provide patched apk's on top of the existing ones so that it enables the effect triggers I mentioned. This will also need to take into account whether you prefer both effects on, only CRT-Off, etc.
I hope this is a bit more clear now, if not just let me know.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
HOW-TO make the Code Changes:
This is what have to be done:
First of all decompile classes of services.jar (I won't provide any information to this, there are many tutorials out there how to use the smali tools!)
Than in com/android/server/PowerManagerService.smali we have to make the method nativeStartSurfaceFlingerAnimation(I)V callable from inner classes. To do that, we have to add the following after the last access$XXXX method:
Code:
.method static synthetic access$9000(Lcom/android/server/PowerManagerService;I)V
.registers 2
.parameter "x0"
.parameter "x1"
.prologue
.line 110
invoke-direct {p0, p1}, Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)V
return-void
.end method
Than we have to add some commands to the file com/android/server/PowerManagerService$BrightnessState.smali to trigger the CRT-off-effect. For that add the red part between :cond_38 and iget-object v4, p0, Lcom/a.... like this (its around line 400 in code):
Code:
.line 2679
.restart local v3 #turningOff:Z
:cond_38
[COLOR="Red"] iget-object v4, p0, Lcom/android/server/PowerManagerService$BrightnessState;->this$0:Lcom/android/server/PowerManagerService;
const/16 v3, 0x11 # CRT-On and CRT-Off
#calls: Lcom/android/server/PowerManagerService;->nativeStartSurfaceFlingerAnimation(I)
invoke-static {v4, v3}, Lcom/android/server/PowerManagerService;->access$9000(Lcom/android/server/PowerManagerService;I)V[/COLOR]
iget-object v4, p0, Lcom/android/server/PowerManagerService$BrightnessState;->this$0:Lcom/android/server/PowerManagerService;
#getter for: Lcom/android/server/PowerManagerService;->mScreenBrightness:Lcom/android/server/PowerManagerService$BrightnessState;
invoke-static {v4}, Lcom/android/server/PowerManagerService;->access$6000(Lcom/android/server/PowerManagerService;)Lcom/android/server/PowerManagerService$BrightnessState;
move-result-object v4
If you want to have only CRT-OFF, you can replace
Code:
const/16 v3, 0x11 # CRT-On and CRT-Off
with this:
Code:
const/16 v3, 0x10 # CRT-Off only
Finally recompile the file, put it on your phone and you can see the CRT-Off effect on your S3!
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Avoid flickers, enable CRT-ON in lib-file:
Tungstwenty said:
Hi,
I worked on the porting of the patch to S3 and despite not having one myself, I'm pretty confident that the binary rovo89 and myself included in the latest Tweakbox should work on an S3.
Could any of you guys try it out?
What to do:
Install the newest Xposed framework from here. Open the Installer app, press Install/Update and reboot.
Install the Tweakbox mod from here. Open it and enable the CRT effects in the appropriate section. You can also enable any other tweaks you like, to check if they also work for the S3 (most of them should)
Go back to the Xposed Installer app, activate the Tweakbox mod (2nd tab), then in the libraries section select "libsurfaceflinger.so" and use the I9300 version. Tick the "Replace in test-mode only" option and back in the 1st tab do a soft / test reboot.
If everything goes well and the effects work as expected, you can go back to the installer app and untick "test-mode only" so the lib is overridden on every boot.
Note that except for the app_process system file which is installed by the framework (creating a backup file, and which should have no practical effects until any mods are enabled later), all other replacements such as the surfaceflinger lib do not change anything in /system but are rather performed by loading the files from an alternate path.
I'd appreciate your feed back especially for the CRT effect, but also the other existing Tweakbox options.
Thanks!
Click to expand...
Click to collapse
Or use in addition to the changes in services.jar the attached flashable zip's to overwrite libsurfaceflinger.so with the corrected one by Tungstwenty or me, XXAL for (XXALE8,XXALF2,XXALF6) and XXBL for (XXBLFB,XXBLG1,...)
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Notes:
- This is a development thread so please discuss only things that interest for further development
- First part of the development has been discussed in this Thread of S2-forums
- As on the S2 after the CRT-off-effect sometimes the screen flickers --> fixed by Tungstwenty
- For some reason, it works without setting config_animateScreenLights from true to false in framework-res.apk
- I hope Tungstwenty and rovo89 can help us again to edit the libsurfaceflinger.so to avoid that it flickers after the CRT-off-effect
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Testing the effect:
I have made the changes for ODEXED and DEODEXED XXALF2 ROM, if you want to test it have a look at my thread in the themeing/modding forums:
[MOD][ALF2/ALF6/BLFB][ODEX/DEODEX] 1% BatMod + ExtPowMen + CRT-OFF-ON or CRT-OFF-ONLY
Please post development-unrelated stuff there!!
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Credits:
Credits are going out to Tungstwenty and rovo89 for their excellent work on the S2 and for their help/advice on the S3! Excellent developers!
I hope you guys will help us again to fix the libs and perhaps enabling CRT-on-effect aswell!!!
Thank you for helping us again!
Click to expand...
Click to collapse
Click to expand...
Click to collapse
reserved for future use, just in case..
Nice one!
Sent from my GT-I9300 using xda premium
sphinx02 said:
- I hope Tungstwenty and rovo89 can help us again to edit the libsurfaceflinger.so to avoid that it flickers after the CRT-off-effect
Click to expand...
Click to collapse
The flicker issue and the lack of CRT-On effect are *exactly* the same issues that are present on the S2 lib as well.
It has been fixed there, but changing ARM code without the sources is a very tedious process and that requires a fair amount of testing till it eventually works.
Without having access to an S3 it's very hard to do this or even explain what needs to be done
On top of that, I have other pending stuff I need to work on so you shouldn't expect a fix very soon, sorry.
Tungstwenty said:
The flicker issue and the lack of CRT-On effect are *exactly* the same issues that are present on the S2 lib as well.
It has been fixed there, but changing ARM code without the sources is a very tedious process and that requires a fair amount of testing till it eventually works.
Without having access to an S3 it's very hard to do this or even explain what needs to be done
On top of that, I have other pending stuff I need to work on so you shouldn't expect a fix very soon, sorry.
Click to expand...
Click to collapse
Ok, I see the problematic.. But perhaps you can give me the original and the modified files from the s2 so I can compare the 2 files and perhaps see by myself what is changed! And as I never changed anything in .so files perhaps you can tell me additionally how you have edited them!
I'm willing to try around again and to play with bytecode or so on, but I think I need a little input from you!
You mentioned the tool objdump, so I think I have to become familiar with this tool, am I right?
sphinx02 said:
Ok, I see the problematic.. But perhaps you can give me the original and the modified files from the s2 so I can compare the 2 files and perhaps see by myself what is changed! And as I never changed anything in .so files perhaps you can tell me additionally how you have edited them!
I'm willing to try around again and to play with bytecode or so on, but I think I need a little input from you!
Click to expand...
Click to collapse
Ok then, I'll give you the starting pointers so you can have a look at what lies ahead
The S2 patched file with ON and OFF both working correctly, with no flickers, is in this post.
The S2 original file is attached here.
Do a binary compare to see the changed bytes and their offsets.
To have a look at the code, you need to have the NDK installed.
Run "objdump -x libsurfaceflinger.so" to see the decompiled ARM code.
And have fun trying to understand that
Tungstwenty said:
Ok then, I'll give you the starting pointers so you can have a look at what lies ahead
The S2 patched file with ON and OFF both working correctly, with no flickers, is in this post.
The S2 original file is attached here.
Do a binary compare to see the changed bytes and their offsets.
To have a look at the code, you need to have the NDK installed.
Run "objdump -x libsurfaceflinger.so" to see the decompiled ARM code.
And have fun trying to understand that
Click to expand...
Click to collapse
Ok, thank you for that.. I dont know at this point if I ever will have success with it but I will give it a try as I have the time to! Thank you very much again Tungstwenty for your tips/advice!
While trying around a little bit and thinking about the problem, I had the following idea:
Is it not possible to build an own, additional library file with the crt-off functions? Sources for that are out there! Just copy together and build an .so file. Than in the Java-Code we are including this new native code and simply calling the function from this new / additional lib-file? What do you think about that?
Looks like someone needs to do this again...
http://forum.xda-developers.com/showthread.php?t=1676378
The flicker bug is just a bit annoying
Edits
Lol sorry just seen the post a couple above mine. Hope you guys can fix it. Good luck.
Sent from my GT-I9300 using XDA Premium HD app
sphinx02 said:
While trying around a little bit and thinking about the problem, I had the following idea:
Is it not possible to build an own, additional library file with the crt-off functions? Sources for that are out there! Just copy together and build an .so file. Than in the Java-Code we are including this new native code and simply calling the function from this new / additional lib-file? What do you think about that?
Click to expand...
Click to collapse
I don't think that's a viable option. rovo already tried that with existing sources, I think, and the resulting library did not work on sammy's rom.
As for creating a separate library with only those functions, I also don't think that's possible as everything related with screen rendering (state, buffers, etc.) is on this lib and therefore a separate one would not have any of that info.
Hi,
I worked on the porting of the patch to S3 and despite not having one myself, I'm pretty confident that the binary rovo89 and myself included in the latest Tweakbox should work on an S3.
Could any of you guys try it out?
What to do:
Install the newest Xposed framework from here. Open the Installer app, press Install/Update and reboot.
Install the Tweakbox mod from here. Open it and enable the CRT effects in the appropriate section. You can also enable any other tweaks you like, to check if they also work for the S3 (most of them should)
Go back to the Xposed Installer app, activate the Tweakbox mod (2nd tab), then in the libraries section select "libsurfaceflinger.so" and use the I9300 version. Tick the "Replace in test-mode only" option and back in the 1st tab do a soft / test reboot.
If everything goes well and the effects work as expected, you can go back to the installer app and untick "test-mode only" so the lib is overridden on every boot.
Note that except for the app_process system file which is installed by the framework (creating a backup file, and which should have no practical effects until any mods are enabled later), all other replacements such as the surfaceflinger lib do not change anything in /system but are rather performed by loading the files from an alternate path.
I'd appreciate your feed back especially for the CRT effect, but also the other existing Tweakbox options.
Thanks!
Now I try, thank you..
And CRT on is possible?
failax said:
Now I try, thank you..
And CRT on is possible?
Click to expand...
Click to collapse
Yes. If everything is working as I expect, the new things vs your current situation are:
- No more flickering issues when CRT-Off
- Now also includes CRT-On
- Can detect device orientation and do a "vertical" CRT effect instead of horizontal
All these are optional and can be turned on/off in the Tweakbox preferences.
I tried.
CRT OFF has the same problem, CRT On is not visible, but I had to place also a jar file?
---------- Post added at 12:01 PM ---------- Previous post was at 11:50 AM ----------
I must add that I'm on checkromevo hd and I've already inserted a mod to see crt off, I don't know if this can help.
Other mods in tweakbox work.
failax said:
CRT OFF has the same problem, CRT On is not visible, but I had to place also a jar file?
Click to expand...
Click to collapse
Mmm, did you follow the steps I mentioned before, i.e. enabling the lib replacement in test mode and doing a soft reboot?
You should end up with a library on /vendor/lib (ramfs) and it should get loaded on startup instead of the one in /system/lib. Can you check with a file browser if the file under /vendor/lib does exist?
Also, could you open a terminal, run "set" and check if LD_LIBRARY_PATH is "/vendor/lib:/system/lib", as in S2?
Tungstwenty said:
Mmm, did you follow the steps I mentioned before, i.e. enabling the lib replacement in test mode and doing a soft reboot?
You should end up with a library on /vendor/lib (ramfs) and it should get loaded on startup instead of the one in /system/lib. Can you check with a file browser if the file under /vendor/lib does exist?
Also, could you open a terminal, run "set" and check if LD_LIBRARY_PATH is "/vendor/lib:/system/lib", as in S2?
Click to expand...
Click to collapse
I've rebooted totally, what do you mean for soft reboot?
Now I try to see those files..
EDIT:
under vendor/lib I see 2 things, I see a folder called DRM and inside libdrmwvplugin.so, and single file called libwvm.so.
Also, could you open a terminal, run "set" and check if LD_LIBRARY_PATH ?
Yes it's there.
failax said:
I've rebooted totally, what do you mean for soft reboot?
Now I try to see those files..
EDIT:
under vendor/lib I see 2 things, I see a folder called DRM and inside libdrmwvplugin.so, and single file called libwvm.so.
Click to expand...
Click to collapse
Can you open the Xposed Installer app and post a screenshot of each of the 3 tabs? "Framework", "Modules" and "Libraries" (in this last one, scroll to the bottom to display the "libsurfaceflinger.so" entry so it's visible in the picture)
Can you send me the modded libsurfaceflinger.so so I can test it directly?
Maybe a downloadlink via pm...
I have sphinx mod for CRT, so If I deselect CRT off on tweakbox, it is shown the same.
sphinx02 said:
Can you send me the modded libsurfaceflinger.so so I can test it directly?
Maybe a downloadlink via pm...
Click to expand...
Click to collapse
Would you mind just taking it from the Tweakbox package, and in the process also checking if the on-the-fly replacement is working for you?
---------- Post added at 12:03 PM ---------- Previous post was at 12:01 PM ----------
failax said:
I have sphinx mod for CRT, so If I deselect CRT off on tweakbox, it is shown the same.
Click to expand...
Click to collapse
Your lib settings are ok, so if you do a soft reboot (pressing the button on the app), it should come back with a libsurfaceflinger.so file in /vendor/lib. It's won't happen, though, if you do a "normal" reboot.
It isn't happening to you? Could it be that the soft reboot tries to load the new lib, fails, and immediately does a hard/normal reboot - did you notice anything that could point to this?
Well this Guide with all its spelling mistakes somehow made it to portal
Click to expand...
Click to collapse
For Developers: If you are planning to compile your ROM, and want to use this mod, then read This Post
Background Story:
I was missing the CyberShot Camera too much and found Google Camera has been ported to JB And I also wanted to try the Moded LifeLog app, which somehow was not working on my Pacman Rom.
These were the reasons I Decided to come back to JB Stock Base. I had a previous Nandroid Backup of Lovin's Z2 ROM for XV. I took all my Call-Log and SMS Backups and also took backup of some apps that I used. Then I restored the NAND Backup today.
after that I started restoring the apps+data. Everything was fine.
After few hours of using, As I always do, I took the periodic backup of my Call Logs again. That's when I noticed, the previous Logs were 700+ and now after making some calls, it came down to 500. after Some test, I found out, this is not problem of Backup software.
A little Google search revealed Android has a default call log limit set to 500 Calls.
I searched for Xposed Mod for this, found TrimNot. But it showed error. Most probably, it is only for KK. Then I thought why not MOD it myself?
That's how it all started...
The research & work procedure:
I first thought, OK, I need to find where the Calls are stored. After passing some time with Google, I found, the Logs are stored in a SQlite3 Database, in
Code:
/data/data/com.android.providers.contacts/databases/contacts2.db
There is no limit in this database storage. So, the limit must be in the code.
After another couple of hours, I found that Android checks if the contacts has reached 500 then removes the older. Searching with
Call Log Android
Click to expand...
Click to collapse
in android API reference, where I found some leads on my research.
"public class CallLog" which is under "android.provider.CallLog"
Something told me, to look for this class, in the actual source code. But that's almost 30 GB and I don't have time. from some prior Java knowledge I knew, all class have their own source file, with the same name, So the name would be "CallLog.java"
Now I searched Google, with it and found exactly what I was looking for. The search took me to a Git page android/platform_frameworks_base
And here I found this code.
Java:
private static void removeExpiredEntries(Context context) {
final ContentResolver resolver = context.getContentResolver();
resolver.delete(CONTENT_URI, "_id IN " +
"(SELECT _id FROM calls ORDER BY " + DEFAULT_SORT_ORDER
+ " LIMIT -1 OFFSET 500)", null);
}
The file is located in
Code:
platform_frameworks_base/core/java/android/provider/CallLog.java
and from the name I guessed, this should be inside framework files. Then I went into action. I first tried to de-compile the framework-res.apk file. I used Advanced APKTool by BDFreak
Using the windows search tool, I searched for "call log". I found nothing. Then I tried to de-compile "framework.jar". For this, I followed guide by Rizal Lovins - [Share Latest Apktool 4.2.2/Guide/Tutorial/] How to Decompile/Compile/Sign Apk/Jar
after the de-compiling was Done, I found there is a "android/provider" folder. Yes, it look similar to "platform_frameworks_base/core/java/android/provider/CallLog.java"
So, here should be the files. And I found Two files
Code:
CallLog$Calls.smali
CallLog.smali
I opened both with Notepad++,
CallLog.smali gave me noting.
But after a careful search, I found the exact query inside the ]CallLog$Calls.smali file.
I found this line -
Code:
const-string v2, "_id IN (SELECT _id FROM calls ORDER BY date DESC LIMIT -1 OFFSET 500)"
I just changed 500 to 100000 and I knew my task was done.
I then recompiled the framework.jar and took backup of my original framework.jar (took Nandroid backup ), replaced the original with my modified JAR file. Set the permission rw-r-r or 644. Then rebooted my phone.
Testing:
After the phone started, I made a call, then took backup of the Call Log with Call Log Backup Restore it showed 501.
This means my task is done.
Then I thought, why not share the whole experience today in XDA. So I started Writing this Guide.
F.A.Q.
Why I need more than 500 Call Log ?
- Well I work in Billing Department of a GSM Phone Exchange/Gateway. I periodically cross check my phone Call Logs with the Exchange SoftSwitch Data. Except for that, It's just fun to try something new.
Why this guide has no steps or required steps?
- Because, if anything I missed, those will be added later in the FAQ, from the comments.
Is this tested on any device?
-Yes,
My # Xperia V with LOVINS X™ Z2 ROM 9.2.A.2.5
# Xperia V NeoWave™ ROM
# Xperia TX OmniRom
# Xperia TX (unknown ROM )
# Xperia Z2 (unknown ROM )
# Xperia P Stock ROM
#Xperia P JB based Enigma v7.2 ROM
#CyanogenMod 11 M11 and M12
Can this work on my T/TX/TL/Z/Z1 etc. etc.
- Theoretically it should work on any Device and any ROM. But, practically, I don't know, why don't you try yourself and let me know
I'm newbie, can you provide me more simple guide?
- Well I'm a Newbie myself Just take a Nandroid Backup and start the process. What can go wrong? At most you'll have to restore the backup.
Go to every link and read those too. And Don't forget to Thank those people who provided the Tools and Guides.
Still If you don't understand my guide, read it twice, if it doesn't work read again.
Ha Ha Ha kidding. Here you go A Simple guide
Update:
If you are planning to compile your ROM, and want to use this mod, then read This Post
I switched to NeoWave™ ROM and just as usual applied my MOD. Restored 800+ Call Log from Backup. Now I find another limitation. It's in the Dialer. In the KitKat Call History, there is a Statistics option. Here it always shows
TOTAL: 500 Calls,....
Click to expand...
Click to collapse
So Now I'm digging the sources again to make the stats go higher.
Update: The issue was caused because, after sometimes (any call), the call history automatically turned to 500. Because the framework.jar was odexed and i guess, odex file had the old value set again. And for the NeoWave I used android MultiTool, it showed one error while compiling, Unsigned Short value exceeds, I didn't notice that. My bad. Now I have done the Mod again with Apktool (Lovins shared one) and removed the odex file and then Everything seems fine. Even the Statistics Shows, TOATAL: 1203 Calls, ....
Tested on OmniRom and works as expected. I've used an Xposed module before which does the same thing, but it's always nice to find new ways to implement things without having to use Xposed.
Antiga Prime said:
Tested on OmniRom and works as expected. I've used an Xposed module before which does the same thing, but it's always nice to find new ways to implement things without having to use Xposed.
Click to expand...
Click to collapse
Thanks for the Confirmation. I am updating the Tested Device & ROM. Your device is TX, Right? I guessed from the signeture
Antiga Prime said:
Tested on OmniRom and works as expected. I've used an Xposed module before which does the same thing, but it's always nice to find new ways to implement things without having to use Xposed.
Click to expand...
Click to collapse
Would you like to share the Xposed module you used before?
pollob666 said:
Thanks for the Confirmation. I am updating the Tasted Device & ROM. Your device is TX, Right? I guessed from the signeture
Click to expand...
Click to collapse
Yes, I have a TX.
tianzhisun said:
Would you like to share the Xposed module you used before?
Click to expand...
Click to collapse
It's the same one linked in the OP, except it's named TrimNot, not TimNot. I thought it might be a different one given that the one linked above didn't work for @pollob666, but I guess it's because I'm on a 4.4 ROM.
It's the same one linked in the OP, except it's named TrimNot, not TimNot. I thought it might be a different one given that the one linked above didn't work for @pollob666, but I guess it's because I'm on a 4.4 ROM.
Click to expand...
Click to collapse
Oops.. It was a Typo Yes, TrimNot works on KK but not on JB. that is why I needed to modify my Android Framework.
This is great and I will try it out.
But there is also another ridiculous limitation, that is the maximum of 20 alarms you can have in the clock
acb123 said:
This is great and I will try it out.
But there is also another ridiculous limitation, that is the maximum of 20 alarms you can have in the clock
Click to expand...
Click to collapse
for the clock there is this guide http://forum.xda-developers.com/showpost.php?p=53591001&postcount=6 give it a look
acb123 said:
This is great and I will try it out.
Click to expand...
Click to collapse
After trying, give us the update.
But there is also another ridiculous limitation, that is the maximum of 20 alarms you can have in the clock
Click to expand...
Click to collapse
I didn't notice that. Let's see what we can do about that
pollob666 said:
I didn't notice that. Let's see what we can do about that
Click to expand...
Click to collapse
give a look at the link in the post above yours... it's for z2 but it could work also for other version
Works fine on Xperia P running JB based Enigma v7.2
It works on stock based Xperia P. pollob666 small typo. How about renaming "tasted" to "tested"
usb2 said:
give a look at the link in the post above yours... it's for z2 but it could work also for other version
Click to expand...
Click to collapse
Yeah, saw that, going to try it tomorrow. Hopefully, here I can find some DB sources too.
prasadkumar013 said:
It works on stock based Xperia P. pollob666 small typo. How about renaming "tasted" to "tested"
Click to expand...
Click to collapse
Sorry about that, I guess I'll have to check the whole OP
Please make the steps simple for a newbie
Well, I was looking for this feature since Google invented Android!:good:
I was using MIUI because of they're giving unlimited Call log. Then some one invented TrimNot on Aug 15, 201, I came again to OzcanRom (My Fav). Trim not doesn't work at all.
My question is, Can you make this step more simple. I'm a new bie. :fingers-crossed:
pollob666 said:
Background Story:
I was missing the CyberShot Camera too much and found Google Camera has been ported to JB And I also wanted to try the Moded LifeLog app, which somehow was not working on my Pacman Rom.
These were the reasons I Decided to come back to JB Stock Base. I had a previous Nandroid Backup of Lovin's Z2 ROM for XV. I took all my Call-Log and SMS Backups and also took backup of some apps that I used. Then I restored the NAND Backup today.
after that I started restoring the apps+data. Everything was fine.
After few hours of using, As I always do, I took the periodic backup of my Call Logs again. That's when I noticed, the previous Logs were 700+ and now after making some calls, it came down to 500. after Some test, I found out, this is not problem of Backup software.
A little Google search revealed Android has a default call log limit set to 500 Calls.
I searched for Xposed Mod for this, found TrimNot. But it showed error. Most probably, it is only for KK. Then I thought why not MOD it myself?
That's how it all started...
The research :
I first thought, OK, I need to find where the Calls are stored. After passing some time with Google, I found, the Logs are stored in a SQlite3 Database, in
Code:
/data/data/com.android.providers.contacts/databases/contacts2.db
There is no limit in this database storage. So, the limit must be in the code.
After another couple of hours, I found that Android checks if the contacts has reached 500 then removes the older. Searching with
in android API reference, where I found some leads on my research.
"public class CallLog" which is under "android.provider.CallLog"
Something told me, to look for this class, in the actual source code. But that's almost 30 GB and I don't have time. from some prior Java knowledge I knew, all class have their own source file, with the same name, So the name would be "CallLog.java"
Now I searched Google, with it and found exactly what I was looking for. The search took me to a Git page android/platform_frameworks_base
And here I found this code.
Java:
private static void removeExpiredEntries(Context context) {
final ContentResolver resolver = context.getContentResolver();
resolver.delete(CONTENT_URI, "_id IN " +
"(SELECT _id FROM calls ORDER BY " + DEFAULT_SORT_ORDER
+ " LIMIT -1 OFFSET 500)", null);
}
The file is located in
Code:
platform_frameworks_base/core/java/android/provider/CallLog.java
and from the name I guessed, this should be inside framework files. Then I went into action. I first tried to de-compile the framework-res.apk file. I used Advanced APKTool by BDFreak
Using the windows search tool, I searched for "call log". I found nothing. Then I tried to de-compile "framework.jar". For this, I followed guide by Rizal Lovins - [Share Latest Apktool 4.2.2/Guide/Tutorial/] How to Decompile/Compile/Sign Apk/Jar
after the de-compiling was Done, I found there is a "android/provider" folder. Yes, it look similar to "platform_frameworks_base/core/java/android/provider/CallLog.java"
So, here should be the files. And I found Two files
Code:
CallLog$Calls.smali
CallLog.smali
I opened both with Notepad++,
CallLog.smali gave me noting.
But after a careful search, I found the exact query inside the ]CallLog$Calls.smali file.
I found this line -
Code:
const-string v2, "_id IN (SELECT _id FROM calls ORDER BY date DESC LIMIT -1 OFFSET 500)"
I just changed 500 to 100000 and I knew my task was done.
I then recompiled the framework.jar and took backup of my original framework.jar (took Nandroid backup ), replaced the original with my modified JAR file. Set the permission rw-r-r or 644. Then rebooted my phone.
Testing:
After the phone started, I made a call, then took backup of the Call Log with Call Log Backup Restore it showed 501.
This means my task is done.
Then I thought, why not share the whole experience today in XDA. So I started Writing this Guide.
F.A.Q.
Why I need more than 500 Call Log ?
- Well I work in Billing Department of a GSM Phone Exchange/Gateway. I periodically cross check my phone Call Logs with the Exchange SoftSwitch Data. Except for that, It's just fun to try something new.
Why this guide has no steps or required steps?
- Because, if anything I missed, those will be added later in the FAQ, from the comments.
Is this tested on any device?
-Yes,
My # Xperia V with LOVINS X™ Z2 ROM 9.2.A.2.5
# Xperia TX OmniRom
# Xperia TX (unknown ROM )
# Xperia Z2 (unknown ROM )
# Xperia P Stock ROM
Can this work on my T/TX/TL/Z/Z1 etc. etc.
- Theoretically it should work on any Device and any ROM. But, practically, I don't know, why don't you try yourself and let me know
Click to expand...
Click to collapse
---------- Post added at 11:08 AM ---------- Previous post was at 10:10 AM ----------
Can you please share the framework.jar file that edited and recompiled by you? If you can make a edited framework.jar for OzcanRom 4.2, I will be very thankful. I spent almost two nights on this and failed. Please help. :silly::fingers-crossed:
Antiga Prime said:
Tested on OmniRom and works as expected. I've used an Xposed module before which does the same thing, but
it's always nice to find new ways to implement things without having to use Xposed.
Click to expand...
Click to collapse
A Simpler guide
jamoen said:
My question is, Can you make this step more simple. I'm a new bie. :fingers-crossed:
Can you please share the framework.jar file that edited and recompiled by you? If you can make a edited framework.jar for OzcanRom 4.2, I will be very thankful. I spent almost two nights on this and failed. Please help. :silly::fingers-crossed:
Click to expand...
Click to collapse
No need to Quote the whole OP
My framework.jar won't work for you. We need to modify your ROM's framework.jar if you can provide me that file, I can MOD it for you.
But, I am giving the Simple steps. I would be very happy if you can do it yourself.
I am assuming you already have Notepad++ or Similar text editing tool and know how to pull files from /system
Step 1: Download APKTool of your choice. I used Advanced APKTool by BDFreak
Step 2: Decompile your framework.jar. For this, I followed guide by Rizal Lovins - [Share Latest Apktool 4.2.2/Guide/Tutorial/] How to Decompile/Compile/Sign Apk/Jar
Step 3: Open the CallLog.smali file and any other files that starts with CallLog ( like in my case CallLog$Calls.smali ) in Notepad++ or any other Text Editor.
Step 4: search for "SELECT _id FROM calls ORDER BY" or similar lines. You will find LIMIT -1 OFFSET 500 change 500 with any number you want.
Step 5: Save the modified file smali, and recompile the jar file.
Step 6: Just to be safe, take a NANDROID backup.
Step 7: Take a backup of the original framework.jar, delete it from system and push the modified framework.jar to System and change permission to rw-r-r or 644. Reboot.
Step 8: test
I couldn't find Provider folder. Please help.
I couldn't find Provider folder. Please help.
Failed! Please help
pollob666 said:
No need to Quote the whole OP
Click to expand...
Click to collapse
Thank you for the reply.
I could not find any folder called Provider. Searched all folders and failed to find a call entry.
I took the framework.jar from system folder. Any wrong?
Attached my framework.jar file. Please help me.
Found the string in framework2.jar and edited. Success!!
Please help me to push it again...
Can I use esfile explorer?
---------- Post added at 02:31 PM ---------- Previous post was at 02:09 PM ----------
jamoen said:
Found the string in framework2.jar and edited. Success!!
Please help me to push it again...
Can I use esfile explorer?
Click to expand...
Click to collapse
Unfortunately.. The method failed. Going back to MIUI in tears..
jamoen said:
Found the string in framework2.jar and edited. Success!!
Please help me to push it again...
Can I use esfile explorer?
---------- Post added at 02:31 PM ---------- Previous post was at 02:09 PM ----------
Unfortunately.. The method failed. Going back to MIUI in tears..
Click to expand...
Click to collapse
WOW, you really did it. Sorry I was in training my juniors at office, didn't reply earlier.
You can use es explorer, or if you have adb, then you can use some shell commands. I can give you the commands, if you haven't done it already.
It should work. Let me check and mod a it for you.
Edit: Sorry, I don't have the framework2.jar. ant the ROM is too big for downloading now at office. But for Samsung device, I guess the re-compile process needs a bit working. you need to recompile the file, then open it in 7zip or WinRAR replace the AndroidManifest file with the file of the original, (then sign it then zipalign it not sure for jar file though). Then push it to the system.
pollob666 said:
WOW, you really did it. Sorry I was in training my juniors at office, didn't reply earlier.
You can use es explorer, or if you have adb, then you can use some shell commands. I can give you the commands, if you haven't done it already.
It should work. Let me check and mod a it for you.
Edit: Sorry, I don't have the framework2.jar. ant the ROM is too big for downloading now at office. But for Samsung device, I guess the re-compile process needs a bit working. you need to recompile the file, then open it in 7zip or WinRAR replace the AndroidManifest file with the file of the original, (then sign it then zipalign it not sure for jar file though). Then push it to the system.
Click to expand...
Click to collapse
I double checked it. Again extracted the framework.jar and decompliled it.The string of 100000 is there. But this thing is not working. I don't know why.
Can I share you the framework2.jar with you?
jamoen said:
I double checked it. Again extracted the framework.jar and decompliled it.The string of 100000 is there. But this thing is not working. I don't know why.
Can I share you the framework2.jar with you?
Click to expand...
Click to collapse
I will modify it and upload it for you. But I guess I will need the framework-res.apk with it. if there is any. But, I'm going home now, I'll update you by 11pm.
Hey everyone, I hope I'm posting in the right section because it's been a long time since I posted a thread on this forum haha
In my opinion, the screen on our G5 is great calibration-wise, however it lacks a little bit of saturation, especially since I was coming from a Galaxy S4 before this phone!
So, I remembered a little thing from back from my G Flex 2 days, called KPPD and originally found on the G4 forums (original thread is HERE), that allowed us to edit the screen settings natively even on the phones that didn't have the options in the Display settings.
Since we finally got root on the H840 as well, I thought I may as well try it out and BEHOLD! It's working!
It's relatively easy to set up and tweak, even though there's not an app to edit the settings. However, the file that contains them (postproc.conf) is pretty straightforward.
I'm running stock Nougat on my G5 SE (H840), but it should work just fine on any Qualcomm-based devices.
DISCLAIMER: I AM NOT RESPONSIBLE IF YOUR PHONE MISBEHAVES, BLOWS UP OR STOPS LOVING YOU, I TESTED IT ON MINE AND EVERYTHING'S WORKING FINE, BUT THERE'S NO WARRANTY THAT IT WILL WORK ON YOURS AS WELL.
GUIDE:
Download the attached zip, which is just the original zip, from which I edited the config file to better suit our G5, by only adding a little of saturation (original is at 255, I put it at 275 which IMO is the "sweet spot"; everything else is unchanged.)
Either flash it via TWRP or extract the two files from it and copy kppd in /system/bin, with 755 permissions (rwxr-xr-x) and postproc.conf in /system/etc with 644 permissions (rw-r--r--). Use any root browser for this.
Setup a script to run at boot, either via init.d or with Rom Toolbox lite (I use it)
The script is
Code:
kppd /system/etc/postproc.conf
To edit the configuration, simply open the postproc.conf file with any root text editor (I use Solid Explorer's integrated one) and tweak the settings as you like, keeping in mind that 255 is default in case you mess something up
I didn't actually do much for this to work, none of this is my work so please head over to the thread I linked earlier on and thank @savoca for his amazing job
Bert98 said:
Hey everyone, I hope I'm posting in the right section because it's been a long time since I posted a thread on this forum haha
In my opinion, the screen on our G5 is great calibration-wise, however it lacks a little bit of saturation, especially since I was coming from a Galaxy S4 before this phone!
So, I remembered a little thing from back from my G Flex 2 days, called KPPD and originally found on the G4 forums (original thread is HERE), that allowed us to edit the screen settings natively even on the phones that didn't have the options in the Display settings.
Since we finally got root on the H840 as well, I thought I may as well try it out and BEHOLD! It's working!
It's relatively easy to set up and tweak, even though there's not an app to edit the settings. However, the file that contains them (postproc.conf) is pretty straightforward.
I'm running stock Nougat on my G5 SE (H840), but it should work just fine on any Qualcomm-based devices.
DISCLAIMER: I AM NOT RESPONSIBLE IF YOUR PHONE MISBEHAVES, BLOWS UP OR STOPS LOVING YOU, I TESTED IT ON MINE AND EVERYTHING'S WORKING FINE, BUT THERE'S NO WARRANTY THAT IT WILL WORK ON YOURS AS WELL.
GUIDE:
Download the attached zip, which is just the original zip, from which I edited the config file to better suit our G5, by only adding a little of saturation (original is at 255, I put it at 275 which IMO is the "sweet spot"; everything else is unchanged.)
Setup a script to run at boot, either via init.d or with Rom Toolbox lite (I use it)
The script is
To edit the configuration, simply open the postproc.conf file with any root text editor (I use Solid Explorer's integrated one) and tweak the settings as you like, keeping in mind that 255 is default in case you mess something up
I didn't actually do much for this to work, none of this is my work so please head over to the thread I linked earlier on and thank @savoca for his amazing job
Click to expand...
Click to collapse
Ma devo flashare da twrp?
Sent from my LG-H840 using XDA Labs
Wire1122 said:
Ma devo flashare da twrp?
Click to expand...
Click to collapse
Sì, o copiare i due file nelle rispettive cartelle
Comunque è un forum in inglese, quindi cerca almeno di scrivere in tutte e due le lingue se non sei sicuro di riuscire a farti capire in inglese
This is an English forum, so please try and write at least in both languages, thank you
How create script to execute on boot in rom toolbox?
Sent from my LG-H840 using XDA Labs
One quick question:
The script setup is only necessary if I put the two files manually or also if I flash the zip with TWRP ?
Regards
mkpcxxl
Could you please take me to a thread about rooting the g5se? So i dont bother you asking here:good:
Wire1122 said:
How create script to execute on boot in rom toolbox?
Click to expand...
Click to collapse
Tap the scripter button in the "tools" section of the app and select the "+" icon on the top right.
mkpcxxl said:
One quick question:
The script setup is only necessary if I put the two files manually or also if I flash the zip with TWRP ?
Regards
mkpcxxl
Click to expand...
Click to collapse
You still need to create it
Pistacho123Lol said:
Could you please take me to a thread about rooting the g5se? So i dont bother you asking here:good:
Click to expand...
Click to collapse
The is a TWRP thread in the development section, install that and flash SuperSu or Magisk
Bert98 said:
Tap the scripter button in the "tools" section of the app and select the "+" icon on the top right.
You still need to create it
The is a TWRP thread in the development section, install that and flash SuperSu or Magisk
Click to expand...
Click to collapse
Thanks for responding me...:crying:
Nice way... but I think easier way is to flash custom Kernel (like Asgard) and use KCAL app
4r44444 said:
Nice way... but I think easier way is to flash custom Kernel (like Asgard) and use KCAL app
Click to expand...
Click to collapse
Yes but on H840 we don't have any custom kernel yet
is it possible without root? having h845 (G5se) is very bad since no method available to root it.
for example, can we push the files via adb? screen is too blue. please help.
I attach the build prop from mi 5(Gemini). Which is rooted via magisk 16 and I extracted the build prop file. As I'm not a developer, but very active user. So I let you guys see the new MIUI 10 build.prop if you can do something with this. Thanks in advance.
The build.prop is just a set of values, I don't think you can "extract features" since if they are present, those are built into that specific rom, even if you put that "new" values on another rom, you won't add any extra functionality (Example is Camera 2 API, you can enable it into the MIUI but it is just disabled by default, you're not "adding a feature", just enabling it)
lukypuie said:
The build.prop is just a set of values, I don't think you can "extract features" since if they are present, those are built into that specific rom, even if you put that "new" values on another rom, you won't add any extra functionality (Example is Camera 2 API, you can enable it into the MIUI but it is just disabled by default, you're not "adding a feature", just enabling it)
Click to expand...
Click to collapse
Okay thanks, so in order to retrieve new features from that version which file do I need to access? Can you show me!
After some testing I finally found a GCam that supports the Ultrawide Lense without needing to root/flash a module/disabling SELinux
How to install
1) Allow Unknown sources
2) Install the APK
3) Copy the XML file to Internal Storage/trCamera/XMLConfigs
4) Apply it within the app by double pressing on the black space below the shutter button
APK download: https://f.celsoazevedo.com/file/cfiles/gcm1/trCamera_V7_FINAL.apk
XML Download: (see attached file)
Note: The XML provided is a basic one I made that ensures a good experience, I highly recommend you look at the settings yourself and make changes if necessary
Credits: GCam by tigr, XML by Muda42 (me)
They have a newer version of the tigerCamera: V7.1.
How does your config file differs from the one provided on the https://www.celsoazevedo.com/files/android/google-camera/dev-tigr/ page?
Thanks a lot for sharing this, but I can't figure out how to bring up the aux lens.
Config file has been saved under \trCamera\XMLCongfig.
And the toggles are set as the attached screen shots.
What have I missed?
Also, I found quite some toggles under "Control of viewfinder buttons" are not working properly....
CLS_phone said:
Also, I found quite some toggles under "Control of viewfinder buttons" are not working properly....
Click to expand...
Click to collapse
CLS_phone said:
Thanks a lot for sharing this, but I can't figure out how to bring up the aux lens.
Config file has been saved under \trCamera\XMLCongfig.
And the toggles are set as the attached screen shots.
What have I missed?
Click to expand...
Click to collapse
Hmm are you running stock or custom ROM ?
Stock. Global version.
CLS_phone said:
Stock. Global version.
Click to expand...
Click to collapse
Try running adb shell getprop vendor.camera.aux.packagelist in ADB and send me the result
Still the same, no camera button on the viewfinder.
Oh, there's nothing after the adb command. I redo several times, still the same.
Is this what you need?
https://photos.app.goo.gl/xtoDV6nRwuSNm4xU6
CLS_phone said:
Still the same, no camera button on the viewfinder.
Click to expand...
Click to collapse
Can you send me the output of the aforementioned command ?
CLS_phone said:
Oh, there's nothing after the adb command. I redo several times, still the same.
Is this what you need?
https://photos.app.goo.gl/xtoDV6nRwuSNm4xU6
Click to expand...
Click to collapse
Hmm I probably sent you a non working command. It looks like the stock ROM doesn't allow trCameras package name (org.codeaurora.snapcam) to use auxiliary cameras (which is strange because normally every Android OS should allow it). This is only a theory and an inspection of the build properties is required to prove this.
Sorry, there's no output. You may see in the attached photo of post #8.
That's my laptop's screen in the viewfinder. You may see there's nothing after the last two lines.
THREAD CLOSED
@Muda42 A thread for GCam already exists. Creating a new thread for the same topic is against the Forum Rules. Kindly continue the discussion in the existing thread itself, if needed.
Link to existing thread: https://forum.xda-developers.com/mi-a3/themes/google-camera-7-0-mia3-t3968317
Regards,
shadowstep
Forum Moderator