LCD Density and Market Compatibility (fix idea) - Android Software/Hacking General [Developers Only]

So everyone is probably aware of the problem, to wit: You have a device, and you don't think that google knows best with regard to application compatibility with your preferred (and non-standard) lcd density. At present, this means you have to change it back to standard, reboot, install apps/upgrade, change back to preferred density, reboot, and go back to where you were.
i have an idea how to solve this, but I need help.
does anyone know enough about AOSP or CM7 to know how to find where in the code build.prop is called (or local.prop)? or, really, more specifically, where is ro.sf.lcd_density or qemu.sf.lcd_density called? it's possible (and probably likely) that the entire thing is loaded at once, but if it isn't, it would make it easier.
the idea is pretty simple. have two copies on hand of build.prop (one in the standard location for the market to decide what your lcd density is), and another to be called to actually change your density.
i'd estimate that there's roughly an 80% chance it will solve the problem, but depending on how build.prop or the strings within are called it might be a huge headache. also, this fix would flummox any of the apps (like android overclock, etc.) which presently allow you to modify your build.prop.
thoughts? the OBVIOUS elegant solution is for google to fix this (allow an over-ride) or someone with the code of vending.apk to find the line where it calls build.prop or local.prop and modify THAT line to pick build.prop.spoof or something instead.
but until either of the elegant options are available, this workaround could work, depending on the code complexity.
let me know!

You really don't have to reboot etc etc. you can just uninstall the market updates, then update the apps you want. You can also freeze the market updater until the next reboot I read somewhere, but I have not done that, gunna see if I can find that now.
Edit. I just uninstalled the update and used Titanium Back up to freeze market updater...

even with the old market the updates don't show under my apps but you have to search for them manually. if you have more than a handful of apps that just sucks.
i've started contacting devs, asking them to fix the apps settings to show with non-standard dpi. so far feedback has been quite good.

@lordloki77: Thats a great idea! DEVs go!

Hello,
+1 very happy with 200DPI
@++

Google is really dropping the ball with this issue.
Please report the "Applications missing from My Apps" bug here
http://www.google.com/support/androidmarket/bin/static.py?page=known_issues.cs

The OBVIOUS elegant solution is for google to fix this (allow an over-ride) or someone with the code of vending.

The google support thread for this is here: http://code.google.com/p/android/issues/detail?id=19744#makechanges
I still have this issue and if you do a web search you'll see that many still do. Reply in the support thread to raise awareness ! or if you have a workaround please share If you have some developing skill please help OP, perhaps we can fix this somehow.

Well, I've done my bit. Apologies for the long-windedness:
Hi Mark,
Apparently, I'm not alone with this incident:
http://code.google.com/p/android/issues/detail?id=19744
It looks like this is specifically related to the screen density / DPI settings.
If the constraint is, in fact, policy-based, I suspect the decision was arrived at out of concern for support costs due to incompatibility issues.
I might challenge this aspect with the following facts from my own experience:
1. Every single app. that initially complains of being incompatible at 220 DPI and which has subsequently been down-loaded after I've switched my device to 240 DPI has been running flawlessly after I switch my device back to 220 DPI.
So, if there is a genuine technical incompatibility due to DPI settings, no incidents have been manifest in my experience so far. This is without exception. (At least 15 applications...)
2. Whether or not Google view Android in this way, certainly the consumer-base has expressed a strong value-perception in Android's flexibility and 'openness'. -A policy-based constraint surrounding a user's choice of DPI would certainly work against this value perception.
3. I have seen some developers express concern and dismay in the forums that while their applications are compatible with devices running screen densities <> 240 DPI, that they should be missing revenues due to Android Market constraints that are not clear to them. -Is it certain that a) the developers are well aware of the process to allow Market to make their apps 'compatible' with Samsung Galaxy S2 devices running non-240 DPI screen densities? and b) is this process working as expected?
At the moment, one outcome is that the consumer base is constrained from customising their devices' screen densities without paying a time / inconvenience penalty imposed by the manner in which Android Market is functioning. Another outcome is that hard-working developers are missing customers who, like me, may not bother making impulse purchases due to the inconvenience imposed by Android Market.
A genuine concern for the compatibility and stability is laudable and understandable. However, I also believe that this could be addressed with a warning and, perhaps a capture, of the situation. "Warning, the vendor has indicated that your device has not been certified in its current configuration. Do not expect support for this application from Android Market or the vendor should you choose to proceed... Your device will only be supported should it be demonstrably compliant with the following configurations...." -However, not allowing the consumer to assume these risks by denying the capability to download seems quite extreme, at best.
Addressing the exposure to increased support costs due to 'potential' incompatibility is a bit like curing the disease by killing the patient, no?
Perhaps it should be the role of Android Market to make greater strides to add value to both the consumer-base and the vendors by facilitating outcomes both parties wish to achieve?
For what it's worth, I am currently using Android Market ver. 3.3.11 and I still cannot download applications unless my DPI is set to 240. -Other than this inconvenience, my Samsung Galaxy S2 is running in a very stable and high-performance manner in its current configuration. In other words, the only thing I find displeasing about my experience at present, is the constraint imposed on me by Android Market.
Thank you for your help.
Sincerely,
Matt Wood.
On Thu, Nov 3, 2011 at 5:41 AM, Android Market Support <[email protected]> wrote:
Hi,
Have you installed an Android operating system on your device that has not
been authorized by your device's manufacturer? I can troubleshoot your
issue to the best of my abilities, but please be aware that unauthorized
operating systems (custom ROMs) may have limited functionality due to the
compatibility of the device. For best results, I recommend using the
authorized Android operating system provided by your manufacturer that can
be obtained from their website or your carrier.
http://www.samsung.com/uk/galaxys2/
Please be aware that app developers can choose to limit the availability
of their apps in several ways, including by geographic location, screen
size, Android OS as well as other device-specific features, such as pixel
density. If an app you're looking for is missing, please contact the
developer of that app to find out if the app is available in your location
and for your device.
Please note that the Android Market app on your device will filter out
apps that are not compatible with that particular device. If you visit the
Android Market on the web and can see the app there, then it means that
the developer has specified features or locations that don't match your
specifications.
If you're sure that you're missing an app that you should be seeing,
please let me know, and I'll be happy to investigate further.
Regards,
Mark
The Android Market Team
Original Message Follows:
------------------------
From: [email protected]
Subject: Your question about Android Market
Date: Wed, 02 Nov 2011 21:21:01 +0000
>
>
> AutoDetectedBrowser: Google Chrome
> AutoDetectedOS: Windows 7
> Description: I have the luxurious capability to change the display
> resolution (DPI) on my device. This is good. However, when I change it
> from anything but the default 240 dpi, Android Market punishes this
> behaviour by telling me my device is no longer compatible with any of
the
> applications. -This forces me to change the DPI back to 240 prior to
> download...and then back again.
>
> I cannot tell you how many times, I simply say 'forget it, I don't need
to
> buy this app...it's too painful and annoying to change my DPI back and
> forth...'
> IIILanguage: en
> IssueType: market_phone_tablet
> Language: en
> android_app_name: ALL
> android_os_device: 2.3.7
> android_os_other: Cyanogen
> device_manufacturer: samsung
> device_manufacturer_other:
> device_model: I9100 Galaxy S2
> first_name_optional: Matthew Wood
> hidden_country: GB
> phone_issue_select: other
>

Hey guys,
After a lot of trial and error and messing around with the Market APK, I've finally managed to hack it so that the market apk THINKS the density is 240. I've basically hardcoded the value inside the apk, so no matter what you set your lcd_density in the build.prop, it will always think it is 240 and as such, everything is available on the market. it even works from online market and everything is compatible again. And as far as I can see, nothing else got effected.
I've attached the Market 3.4.4 modified apk.
Steps to install:
- Download the modified apk
- Using Root Explorer or any other file manager program go to /system/app
- Move Vending.apk to some place safe, as backup
- Copy the downloaded market app from where you downloaded it to /system/app ...
- In Root Explorer, press 'Mount R/W' to give write access to system directory
- Rename the market app to Vending.apk and set permissions to the apk ...
- In Root Explorer, long press on Vending.apk, and then press Permissions and set the permissions as in the screenshot
- Restart your phone
- Go into Settings -> Applications and find Market, and Clear Data
- Start Market ... and everything should be good
Enjoy

alienwolf426 said:
Hey guys,
After a lot of trial and error and messing around with the Market APK, I've finally managed to hack it so that the market apk THINKS the density is 240. I've basically hardcoded the value inside the apk, so no matter what you set your lcd_density in the build.prop, it will always think it is 240 and as such, everything is available on the market. it even works from online market and everything is compatible again. And as far as I can see, nothing else got effected.
I've attached the Market 3.4.4 modified apk.
Steps to install:
- Download the modified apk
- Using Root Explorer or any other file manager program go to /system/app
- Move Vending.apk to some place safe, as backup
- Copy the downloaded market app from where you downloaded it to /system/app ...
- In Root Explorer, press 'Mount R/W' to give write access to system directory
- Rename the market app to Vending.apk and set permissions to the apk ...
- In Root Explorer, long press on Vending.apk, and then press Permissions and set the permissions as in the screenshot
- Restart your phone
- Go into Settings -> Applications and find Market, and Clear Data
- Start Market ... and everything should be good
Enjoy
Click to expand...
Click to collapse
Can you provide instructions for how to hard code the value so that we can do it ourselves for future versions?

nice! going to try it right now.
could you please post a diff of your changes?

Syco54645 said:
Can you provide instructions for how to hard code the value so that we can do it ourselves for future versions?
Click to expand...
Click to collapse
Hmm, ok I'll try.
- Using apktool, i decode the Market_3.4.4.apk, using the following command:
apktool d -r Market_3.4.4.apk
- this made sure to not decode the resources, as I had a lot of trouble re-building the apk if the resources were decoded
- Inside the newly generated folder, go inside the smali folder and navigate to the following path: com/google/android/finsky/utils/DeviceConfigurationHelper.smali
- Open the file in notepad or any word editor file (I use Notepad++)
- Now search for the string 'DensityDpi'. there should be only one reference and the line should look something like this:
iget v0, v12, Landroid/util/DisplayMetrics;->densityDpi:I
- What this line is doing is getting the lcd_density from the displaymetrics, which is a builtin android library. I'm not sure what it does but it returns the value set in your build.prop. After getting the value it sets that value to the variable 'v0'
- Replace the above line with the following: const/16 v0, 0xf0
- What my line does is hardcodes 0xf0 (which is 240 in hexadecimal) to the variable 'v0'
- leave everything as is, as all the rest of the code goes by this class and whatever density you set in here will eventually propagate to the rest of the apk
- rebuild the apk using: apktool b Market_3.4.4 mod_market.apk
- resign it using SignApk
and you end up with I gave you

alienwolf426 said:
Hmm, ok I'll try.
- Using apktool, i decode the Market_3.4.4.apk, using the following command:
apktool d -r Market_3.4.4.apk
- this made sure to not decode the resources, as I had a lot of trouble re-building the apk if the resources were decoded
- Inside the newly generated folder, go inside the smali folder and navigate to the following path: com/google/android/finsky/utils/DeviceConfigurationHelper.smali
- Open the file in notepad or any word editor file (I use Notepad++)
- Now search for the string 'DensityDpi'. there should be only one reference and the line should look something like this:
iget v0, v12, Landroid/util/DisplayMetrics;->densityDpi:I
- What this line is doing is getting the lcd_density from the displaymetrics, which is a builtin android library. I'm not sure what it does but it returns the value set in your build.prop. After getting the value it sets that value to the variable 'v0'
- Replace the above line with the following: const/16 v0, 0xf0
- What my line does is hardcodes 0xf0 (which is 240 in hexadecimal) to the variable 'v0'
- leave everything as is, as all the rest of the code goes by this class and whatever density you set in here will eventually propagate to the rest of the apk
- rebuild the apk using: apktool b Market_3.4.4 mod_market.apk
- resign it using SignApk
and you end up with I gave you
Click to expand...
Click to collapse
excellent! now we can edit the future market updates. you have no idea how happy this makes me

alienwolf426 said:
Hey guys,
After a lot of trial and error and messing around with the Market APK, I've finally managed to hack it so that the market apk THINKS the density is 240. I've basically hardcoded the value inside the apk, so no matter what you set your lcd_density in the build.prop, it will always think it is 240 and as such, everything is available on the market. it even works from online market and everything is compatible again. And as far as I can see, nothing else got effected.
Click to expand...
Click to collapse
Thanks buddy!
-edit- 16 updates. LOL...

Does this prevent system updates due to modifying the vending apk? I'm rooted but running stock rom.

thunderchicken02 said:
Does this prevent system updates due to modifying the vending apk? I'm rooted but running stock rom.
Click to expand...
Click to collapse
it should because the signed entity shouldn't match between the official market and my modified version ... ill try to keep this updated until Google decides to fix it or at least add an option to disable checking for apps by dpi

alienwolf426 said:
ill try to keep this updated until Google decides to fix it or at least add an option to disable checking for apps by dpi
Click to expand...
Click to collapse
That would be awesome.

This works perfectly - many thanks for your work!

Tried this, changed DPI via nitrality app & restarted but Vending.apk didn't stick, even though I fixed all the permissions. Will retry & see how it goes. Looks very promising, though, thanks!
Edit:
The modified Market doesn't seem to stick through 2 reboots. This is what I did. Already had DPI set to 210 via nitrality app.
1) Downloaded & renamed the Market app posted up there.
2) Mounted r/w on Root Explorer
3) Deleted old Vending.apk from /system/app & moved the modified one in
4) Fixed permissions as per screenshot
5) Rebooted, cleared Market data & checked that apps like Google Maps & JaxtrSMS didn't have the "This application is incompatible with your device" message
6) Rebooted, opened Market to check those apps again, incompatible message was there
Could be my device, so if so, I'm hoping someone can help guide me through fixing this. If not, just wondering if anyone else has faced this? I'm running CheckROM Revolution v4 with Phenomenal v2-medium kernel currently.
Thanks.
-----------------------
サンスングガラクシS II からタパトクで書いた。

Related

android2sd

Hi All,
Here is my second contribution to the Android community, android2sd!
I tried to make the installation a bit more straight forward and the readme very verbose.
There is NO going into recovery and wiping of the Android to install this construct. (Of course you can if you want to have a clean slate to build from but it is by your choice only!)
Remove .zip from filename, then unrar (sorry to zip users, zip was too big) the package and copy the android2sd.sh install script to the Android say /data/local and make executable with something like chmod 0750 and copy the android2sd.img install image to the sdcard. (Detailed instructions are in the readme file.) Once the install is complete, you can delete both install files.
Execute the script {where ever you installed it}ie:
/data/local/android2sd.sh and follow the instructions.
Included are several of my scripts (updated from the ones in data2sd) and the rules still apply, adjust or remove as you see fit. The readme explains them all.
I have noticed an improvement in speed based on the install, but you can judge for yourself and tweak as you see fit!
The construct uses Overlay Profiles to overlay the Android system and thus any changes to the Android once loaded, are actually done to the overlay profile thus you have like a safe mode which is the untouched Android under the overlay.
Hope you find it useful!
Darkstrumn
Darkstrumn said:
Hi All,
Here is my second contribution to the Android community, android2sd!
I tried to make the installation a bit more straight forward and the readme very verbose.
There is NO going into recovery and wiping of the Android to install this construct. (Of course you can if you want to have a clean slate to build from but it is by your choice only!)
Remove .zip from filename, then unrar (sorry to zip users, zip was too big) the package and copy the android2sd.sh install script to the Android say /data/local and make executable with something like chmod 0750 and copy the android2sd.img install image to the sdcard. (Detailed instructions are in the readme file.) Once the install is complete, you can delete both install files.
Execute the script {where ever you installed it}ie:
/data/local/android2sd.sh and follow the instructions.
Included are several of my scripts (updated from the ones in data2sd) and the rules still apply, adjust or remove as you see fit. The readme explains them all.
I have noticed an improvement in speed based on the install, but you can judge for yourself and tweak as you see fit!
The construct uses Overlay Profiles to overlay the Android system and thus any changes to the Android once loaded, are actually done to the overlay profile thus you have like a safe mode which is the untouched Android under the overlay.
Hope you find it useful!
Darkstrumn
Click to expand...
Click to collapse
Damn man. Good work.
sounds interesting, what is this all about?
brilliant?!? I think.
So basically, this is a non-destructive method that enables us to run new roms on the G1 without flashing? Am I reading this right? If so... wow.
edit: or, erm... maybe not... i think i've been up too long. Gonna have to watch this thread to get a better grasp on this. interesting nonetheless.
Rename To RAR
Darkstrumn said:
Remove .zip from filename, then unrar (sorry to zip users, zip was too big) the package and copy the android2sd.sh install script to the Android say /data/local and make executable with something like chmod 0750 and copy the android2sd.img install image to the sdcard. (Detailed instructions are in the readme file.) Once the install is complete, you can delete both install files.
Click to expand...
Click to collapse
very interesting .. at first i failed to see this part as i'm sure many pay skip over the whole "rename to rar" thing - LOL - so this loads profiles from the SD to the phone
for anyone having trouble with the whole "rename" process try this:
http://files.lucidrem.us/jf/android2sd.rar
as i know windows with hidden file extensions does not allow a rename easily
So what exactly does this do? I see install instructions, but no description.
Overlay Profiles...
tr.slate said:
So what exactly does this do? I see install instructions, but no description.
Click to expand...
Click to collapse
Well,
I've worked up the natural progression to this XXX2SD business, and have made an Android2SD construct which can expand the Android similarly to the the previous constructs, but puts /system, /data and /cache on sd.
So let me explain the overlay thing:
An overlay profile is a snapshot of the Android file system, namely /system, /data, and /cache.
The initial profile is called 'android2sd' and is a snapshot of your android at the time of install, plus the file system structure as explained in the readme adding the mnt/ dir structure and additional scripts in bin/ (which you can remove or adjust as you need).
Typically I reckon folks would only have the one profile and under it your original Android. But you can create additional profiles and set them up however you like. The overlay is overlayed on top of the Android file system with any changes or edits to the system affecting the profile and not the Android under.
The effective change is that the /system /data/, cache are moved to the sdcard thus expanding them to however large your sdcp2 is; on a class 6 card also improving access time.
A second benefit is that the underlying Android is safe from alteration and can be booted into like a 'safe mode'. (It can also serve as the base for new profiles, or you can make new profiles from active overlays. These snapshots can serve as a form of backup, but that is a fringe benefit.
It cannot protect the Android from update.zip installs exactly, as those will modify the Android directly, but say you try a theme and it gafs your 'droid...you can reapply the firmware update to clean out the theme, then copy the desired profile back to the Android and restore the Android to the state of the profile. (I would recommend having a 'base' profile of the Android but not using that as an active profile which will thus serve as a backup) Note: To restore the Android as described above, you cannot restore using a profile with 250+ apps in /data as the Android doesn't have the space for it!
Originally I used unionfs for the overlays but it was too slow.
Hope that explains things here; the readme has far more detail.
I've gotta go, but if I see that I've been as clear as mud, I'll try to explain better when I have more time.
Hmm just out of curiosity: What are you using now? Bind mounts?
I got a little bit lost in setup, I am not sure if I had problems because I was using Cyanogens latest or something else but either way Im going back to JF to try this.
I installed it using the "-COMMIT" addition
But when I made it to installing/linking apps things wouldnt link
Maybe I will let a few other people try it first.
More info...
[email protected] said:
Hmm just out of curiosity: What are you using now? Bind mounts?
Click to expand...
Click to collapse
Yes. Originally it was to have a multi profile layered system using unionfs: union0 the ro base snapshot and union1 the rw profile containing the copy-on-write data. But as the tests went on, the unionfs was too slow to use for /data; Android is unforgiving of unresponsiveness and was ANR'ing the apps that didn't respond fast enough.
The faster bind mount means that union1 is now not used and union0 is rw.
The reason I wanted the union0,union1 path was that the union0 could serve as base and various profiles could be layered over any part of the file system granting "Lego" like flexibility in how the user could adjust their a2sdLoader.sh script (the android2sd loader which controls the overlay process).
You could have a pristine base and several "change" profiles that you layered to your liking and could change any sub layer to different effect.
While you still can under this paradigm, it is not as compact.
But the unionfs option is not completely done away with. It can still be used for the above layering but shouldn't be used for that apps and package system.
An example of the layering I'm on about:
The Android 0-layer which the base layer is a snapshot of.
The base layer is pristine (fully configured settings, but minimal apps loaded, maybe a particular base launcher layout and wallpaper).
A change profile containing my apps and package system
A change profile containing a version of etc with reconfigured bluetooth settings.
A change profile with a theme (manually installed, or snapshot to profile and restored to pristine)
Now I could take these 4 profiles and arrange several different setups:
'base' with all apps loaded, themed with custom bluetooth
'base' with all apps loaded, themed with normal bluetooth
'base' with all apps loaded with custom bluetooth
'base' with all apps loaded with normal bluetooth
'base' with all apps loaded
'base' themed with with custom bluetooth
'base' themed with normal bluetooth
'base' with custom bluetooth
'base' with normal bluetooth
...
Those would be set to serve as the ro union0 and the rw union1 which will hold the copy-on-write changes to the overlay (which preserves the sub layers)
You could have several more theme profiles and have a script that randomly chooses one at boot...
You could simply use the overlay to protect a favored configuration. Should anything untoward happen such as accidentally damaging the packages.xml file while experimenting with the system, you could simply delete the change profile, make a new blank change profile and the damaged files are undone.
The things one can do with the overlay concept are limited only by your imagination and need (and if they slow down app processing too much causing ANR's)
It vary well could if done correctly allow one to have multiple roms as profiles and switch them based on the selected profile, but I have yet to experiment on that...I reckon that is my next move! (Note that this path would have a high space cost as the roms are about 40MB zipped!)
brandenk said:
I got a little bit lost in setup, I am not sure if I had problems because I was using Cyanogens latest or something else but either way Im going back to JF to try this.
I installed it using the "-COMMIT" addition
But when I made it to installing/linking apps things wouldnt link
Maybe I will let a few other people try it first.
Click to expand...
Click to collapse
Taken from [Rom] CyanogenMod:http://forum.xda-developers.com/showthread.php?t=518851
"DO NOT RUN ANY OTHER APPS2SD APPLICATIONS ON THIS BUILD. YOU WILL BREAK YOUR SYSTEM. THEY ARE NOT NECESSARY BECAUSE THIS ROM WILL DO A2SD AUTOMATICALLY AND BETTER!"
The android2sd construct pretty much falls into the A2SD category and thus is likely the reason you had issues with the install.
My Android is based on JF 1.51... and thus your mileage will vary based on the rom you are using. I reckon with a rom derived from theh JF roms, the install may work as intended.
As I go into the next construct build process, I will see if I can't make it multi-rom compatible (to support multi-rom profiles) I'm sure it will take some time to do as I would have to use my actual Android to test with, but no worries!
Hope that helps a little. Sorry it's not better news though.
An excellent "misuse" of this concept would be to run ion (picking it for its speed and almost stock nature) with a hero overlay (picked due to known instability as we are still developing it) so that ion would serve as a "safe mode" for when you crash hero.
I have a spare phone if i crash this and a secondary sd for if that gets corrupted. Let me know if you need help testing.
twistedumbrella said:
An excellent "misuse" of this concept would be to run ion (picking it for its speed and almost stock nature) with a hero overlay (picked due to known instability as we are still developing it) so that ion would serve as a "safe mode" for when you crash hero.
Click to expand...
Click to collapse
Interesting thought, and if this could be done, I suppose it would be possible to have bluetooth working in ION while using a Hero overlay?
Request for feedback...
Hi All,
Those who've installed android2sd, how is it going?
Can you give some pros and cons of your experience so I may improve things going forward? (Hopefully no cons exists!)
I know that roms that already make use apps2sd will encounter issues as the apps2sd and android2sd function similarly and thus step on each other. I may be able to detect this condition and adjust for it going forward...we'll see.
Thanks in advance for your input!
Darkstrumn
LucidREM said:
very interesting .. at first i failed to see this part as i'm sure many pay skip over the whole "rename to rar" thing - LOL - so this loads profiles from the SD to the phone
for anyone having trouble with the whole "rename" process try this:
http://files.lucidrem.us/jf/android2sd.rar
as i know windows with hidden file extensions does not allow a rename easily
Click to expand...
Click to collapse
Thanks for putting the rar up, XDA wouldn't take the .rar and I didn't want to signup to a file-share site just yet.
And it being seemingly natural to make windows show file extensions, it didn't cross my mind to make a note about that.
Thanks again!
Darkstrumn said:
Thanks for putting the rar up, XDA wouldn't take the .rar and I didn't want to signup to a file-share site just yet.
And it being seemingly natural to make windows show file extensions, it didn't cross my mind to make a note about that.
Thanks again!
Click to expand...
Click to collapse
How come no one is trying this? It seems to me an excellent idea and would be really cool to boot mutipe roms if someone figures that out. I'm not testing this because I'm using appstosd and didn't want conflicts...but no one else with jf1.51 Rom is testing this idea?
Just curious
so wait a second. let me get this straight ... if I have a class 6 8gb card i might be able to install a hero build without rosie or widgets with the original launcher on the sd card that might actually come sorta, kinda, a little close to a speed that might be bearable? at least for like 5 minutes?
Can this be adapted to install bigger roms such as hero without the dangerspl .
XD
Ill try this with ion later tonight
wow this is beautiful work! now to test it!
Im trying so hard to understand this lol.. Correct me on my errors but from what i read this is my hypothesis on what i think this does..
This is like a apps2sd but with data and that type thing from the build we are using? And you Said this takes snapshots So we can create several profiles of the phone? Like for example have a profile with some apps loaded and another profile with all removed and be able to switch between them at will?

Web Browser With Black Background (Invert Colors / Night Mode) Through Proxy Filter

This is a solution for people looking to invert colors or force specific colors (e.g. white text / black background) on their web browser. Great for easier reading (especially at night) and saving power on OLED screens. CyanogenMod's browser has an invert colors option built in, but as far as I can tell, nobody has been able to port the CM browser to other ROMs. This solution works with any browser or ROM.
The basic idea is to run a web filter proxy such as Privoxy. Proxy filters are usually used for ad blocking, but they also have the power to completely rewrite a webpage. Privoxy is run in the background, and using the browser or WiFi/APN proxy settings, all web traffic is run through Privoxy. Privoxy rewrites the web pages based on the filters before it is displayed on your browser.
In the attached set, I've put together some badly-written but effective filters to force light text on black backgrounds. The filters rewrite the webpage so that the background is always black, text is always light gray, and links are always green. The filters only tweak the HTML/styles, so as a (usually) helpful side effect, the pictures remain unchanged. With my current configuration, Privoxy loads automatically in the background at startup, and all web pages run through Privoxy and are displayed in my designated colors. See the screenshots below to see it in action.
I put together a simple set of files that so folks can test this out.
Requirements
- You must have a rooted phone.
- You must be able to access proxy settings. Depending on your firmware, you might be able to set a proxy in Wireless and Network Settings (Wi-Fi settings -> Advanced, or Mobile Networks -> Access Point Names). You can also try an app like Transproxy or AutoProxy, or a browser that supports proxy settings, such as Firefox Mobile with the Proxy Mobile add-on.
Instructions
- Download and install Autostart (Root) from the Market.
- In your root folder, create a folder called /data/opt
- Download the attached "force_colors.zip" and extract the files
- Place all the files in /data/opt. Set appropriate permissions. (Privoxy and autostart.sh need to be executable.)
- Reboot your phone. Autostart should run the autostart.sh script (it will ask for superuser permission) and Privoxy will run in the background.
- Set your proxy host to localhost and the proxy port to 8118.
- If everything went correctly, all webpages should load in black background, light gray text and green links.
Note: If you use DroidWall or similar firewall settings, make sure that you allow access for "Applications running as root" so that Privoxy can access the network.
---
Note that these filters are infinitely customizable, if you know how to use regular expressions. Just edit force_colors.filter with the filters of your choice. For example, the Privoxy filters available here are specifically designed to invert some colors and make other ones darker, so you can still preserve some website colors in a more readable format.
In the next post, I'll describe everything I researched in pursuit of this solution. I am hoping others will pick up this project and make it into an easy-to-use package, and also to create some alternative filters to make them cleaner and/or more effective.
I think this feature is sorely needed in Android. Please pass the word to any developers who can help make it a reality!
[Note: This is my earlier post explaining what I did to make this solution work. Please note that I am a complete development noob! I hope this information is helpful and other people will improve on my solution.]
- There is an Android port of Privoxy on the Android Market called Privoxy (BETA 1). Install it and see if it works for you. On my phone, the app interface does not work. If I try to manually start Privoxy in a terminal window, it gives me a seg fault. Anyway, run the app once regardless, so that it copies the Privoxy files to the app data directory (/data/data/com.galoula.Privoxy/). We will use this directory as our base.
- A *working* Android port of Privoxy is included in Orbot: Tor on Android. (Tor uses Privoxy to pass the HTTP requests to a SOCKS proxy.) Download, install and run Orbot. You just need to run it once so that it copies the Privoxy binary to the app data folder.
- You'll find Orbot's Privoxy binary in /data/data/org.torproject.android/app_bin. Copy the "privoxy" binary and use it to replace the binary that came with Privoxy (BETA 1) (located in /data/data/com.galoula.Privoxy/bin). Set appropriate permissions. (We only installed Orbot for the binary, so you can uninstall Orbot now if you don't want it always loading in the background.)
- Now set up the filters. Download the attached force_colors.zip below. Extract the three files (force_colors.action, force_colors.filter, and privoxy_conf). Copy these files to /data/data/com.galoula.Privoxy/etc.
- Open a terminal window, navigate to /data/data/com.galoula.Privoxy/bin and start privoxy by running "./privoxy ../etc/privoxy_conf"
- By default, Privoxy will listen on port 8118. Go to your WiFi settings or APN settings. Set the Proxy name to "localhost" and the port to "8118". Now all web data will pass through Privoxy.
- Browse to a few websites and you'll see white text on black backgrounds! The default colors in the force_colors.filter are black for backgrounds, light gray for text, and green for links. Feel free to edit force_colors.filter to whatever color combination you prefer. I used HTML color names instead of hex codes to make it more readable.
- To run Privoxy every time at startup, I use an app from the Market called Autostart (Root). The directions are limited but basically, you just need to install the app and make a file called /data/opt/autostart.sh (set appropriate permissions). Then in autostart.sh, put this line: "/data/data/com.galoula.Privoxy/bin/privoxy /data/data/com.galoula.Privoxy/etc/privoxy_conf". The next time you reboot (might have to try it one or two times), Autostart will ask for superuser permission, and start Privoxy automatically.
Hope this is helpful for anybody else who wants to experiment.
hey claimui, this looks like a great approach! i'm looking forward to giving it a try this weekend and learning more about how the filtering works!
I spent a couple of days learning regular expressions (or at least some of them) and throwing together a simpler set of filters to force certain colors on a webpage. With this set, all backgrounds are black, all text is light grey, and links are green.
EDIT: My filters are now included in the force_colors.zip attached in the OP.
added to
black energy saving android apps for AMOLED screens
I made several updates to the original posts, including a suggestion on how to get Privoxy to start automatically on boot. After going through this whole process, this is a really effective solution. Privoxy starts automatically and invisibly whenever I start up my phone, and all of my webpages automatically pass through Privoxy and get displayed in my preferred colors.
For future tweaking, it would be nice to have a simple shortcut to enable/disable the filtering. (Although honestly I never want to disable it -- I always like my colors better!) Note that you can't simply kill Privoxy because your browser won't be able to find the proxy to connect to. So you either need a Privoxy command to toggle filtering on and off, or toggle the proxy settings to either use or bypass Privoxy.
In the meantime though, I think this still works really well. Hope others give it a try and can improve on the procedure.
Major update: I have finally consolidated all the steps into a small zip file and some simple instructions. You will need root access and a file manager or some basic knowledge of how to get around your phone. Just follow the instructions in the first post and you should be able to get it working very quickly.
Would like to test this but couldn't things to work...
Privoxy now updates to beta2.
Everything I try I get 404 Page can't loaded...
Have changed to localhost and port 8118 but doesn't work...
No need to install Privoxy from the Market. Just follow the instructions in my first post. After you install the Autostart app and put the files in the /data/opt folder, Privoxy will start at the next reboot.
Thx! Think it was a problem with SiyahKernel! After flashing from 2.0b2 to 2.0b3 now privoxy work!
Thx a lot! Have long time searched for something similar!
when I try to create the folder /data/opt it says it is created but in doesn't show up. also when I create the same folder and then move it to root folder it automatically renames it opt. I'm using root explorer.
In Root Explorer, first navigate to the /data folder, then click the button to Mount as R/W, then create the opt folder. Does that work?
Updated the OP to include some more suggestions for folks who are having trouble finding proxy settings. The basic options are:
1. See if your firmware comes with proxy settings. Under Wireless and Network Settings, look in Wi-Fi settings -> (menu button) Advanced, or Mobile Networks -> Access Point Names.
2. You can also try an app like Transproxy or AutoProxy.
3. Try a browser that supports proxy settings, such as Firefox Mobile with the Proxy Mobile add-on.
Nice.
Have you by any chance conducted a battery test or otherwise made any effort to notice the impact of this modification on battery life?
I haven't personally done any battery experiments (at least not for the browser) but this is a good reference: http://forum.xda-developers.com/showthread.php?t=660853
Basically yes, black backgrounds do save battery power on AMOLED screens. Personally I think the difference between 5% and 3% (or 3% and 2% at lower brightness) is not that big of a deal, probably not even noticeable in normal use. But if you want to squeeze the most milliwatts out of your battery then this will help.
To me the main benefit is that black backgrounds are just much easier to read, especially at night, and especially with the deep blacks / high contrast of the AMOLED screen.
Don't need 10 chars for this replay.
AWESOME!
Edit:
Sadly, from the time that passed since I posted this post, I stumbled upon a few annoying bugs.
1. Proccess locked at 50% cpu, (100% of a single core)
2. Some sites just don't work, and then I have to restart the browser.
Yes google mobile site everytime I would like to search something I get this Error:
This page contains the following errors:
error on line 3 at colum 31: AttValue: " or ' expected
Reparse document as HTML
I know regexp pretty well, but Privoxy syntax is a little bit confusing.
I'm trying to figure out the filters supplied by the OP, and they are just too confusing
To OP : How do you set the delimiter for the filters in Privoxy?
I know / and | are possible, are you using + for some reason?
All your filters start with s+, what is the + ?
Great work. Autostart didn't work on my Galaxy Note for some reason.
But maybe changing CSS is easier. This method works on Opera Mobile:
http://forum.xda-developers.com/showthread.php?t=1326434
eitama said:
Sadly, from the time that passed since I posted this post, I stumbled upon a few annoying bugs.
1. Proccess locked at 50% cpu, (100% of a single core)
2. Some sites just don't work, and then I have to restart the browser.
Click to expand...
Click to collapse
Hm, I haven't encountered these bugs. I am using the same files that I uploaded in the zip. Does it only happen with certain sites? Maybe I just need to tweak the filters. My regexp is poor so they are very crude, and could easily screw up some sites.
bgx said:
Yes google mobile site everytime I would like to search something I get this Error:
This page contains the following errors:
error on line 3 at colum 31: AttValue: " or ' expected
Reparse document as HTML
Click to expand...
Click to collapse
Can you tell me the specific URL? I notice you're on T-Mobile so maybe you have a carrier-specific browser/search settings.
eitama said:
I know regexp pretty well, but Privoxy syntax is a little bit confusing.
I'm trying to figure out the filters supplied by the OP, and they are just too confusing
To OP : How do you set the delimiter for the filters in Privoxy?
I know / and | are possible, are you using + for some reason?
All your filters start with s+, what is the + ?
Click to expand...
Click to collapse
Privoxy syntax is supposed to be like Perl -- well I don't know Perl so I'm just copying what I read. The basic reference is here: http://www.privoxy.org/user-manual/filter-file.html
In my filters, I'm using + as the delimiter. In Privoxy you can use whatever delimiter you want, and it doesn't make a difference (I think). I just copied the + from another filter set -- probably because it's easier to read than / when working with HTML.
The first couple of filters should not be too hard to figure out. For example:
Code:
# Set default colors
s+<body+<body bgcolor=black text=LightGray link=LimeGreen vlink=Green+isUg
This just makes sure every <body> tag starts with "<body bgcolor=black text=LightGray link=LimeGreen vlink=Green" (very crude, I know). The isUg at the end are the modifiers:
i = case insensitive matching
s = allow string to span multiple lines
U = ungreedy matching
g = global matching
Two filters substitute a tag with "JED-C-Anchor-color". This is not a valid tag; the browser will just skip it so the effect is basically the same as deleting the tag. Substituting instead of deleting just makes debugging easier. I used "JED-C" because I modified these filters from http://members.cox.net/pu61ic.1inux.dunc4n/software/privoxy.jed
tamarian said:
But maybe changing CSS is easier. This method works on Opera Mobile:
http://forum.xda-developers.com/showthread.php?t=1326434
Click to expand...
Click to collapse
Thanks for the tip! Yeah I know about changing CSS and that would be a better solution. But I don't think there is a way to change the CSS with the stock browser, and some people still like using the stock Samsung browser for hardware acceleration or whatever other reason. But maybe somebody could make a Privoxy filter that adds the same CSS code into all webpages?

[DEAD][MOD][ICS] Google Now for ICS -Updated for Multi-Language (4 Feb 13) [DEAD]

READ THE FIRST TWO POSTS ENTIRELY BEFORE ATTEMPTING ANYTHING. MOST ISSUES HAVE ALREADY BEEN SOLVED.
This is the original Google Now version without sport team adding or stocks. This will not be updated any further. Use a Jellybean ROM if you want to see the updated features. Do not ask about updates. If you do not read these posts and ask a question which has already been answered, you will be mocked.​
Read through the entire first and second post before asking a question. By clicking the "Show Content" button below, you agree that you forfeit any right to get upset when someone makes fun of you for posting a question that has been covered. We will work tirelessly to help you solve issues when you have them. All that's asked of you in return is to at least attempt to solve them yourself by reading these first two posts.
The JellyBean update for Google Now, which includes manually adding sports teams, has not yet been ported. Please refrain from asking about this update, since all we're going to do is give you a silly answer to match the silly question.​
Requirements:
Follow the simple instructions here.
You must be on Ice Cream Sandwich.
You MUST be rooted
You must be on a deodexed ROM. If you aren't sure, ask your chef.
You should be running a custom recovery like ClockWorkMod Recovery (CWM) or Team Win Recovery Project (TWRP). I use CWM, so this guide is based on that.
WVGA resolution or higher. (480 x 800)
Your device must be using ARMv6 or v7 CPU architecture. If you aren't sure what that is, check this thread.
You must have a file explorer that has root permissions. I use ES File Explorer, so this guide is based on that.
You need at least 60MB of system space for the full offline installation. (30MB for online only version) If you don't know how to check, simply download Titanium Backup from the market. It tells you right on the main screen. (pic)
ARMv7 INSTRUCTIONS:
Download whichever file you want and flash it in recovery. Always be sure to make a backup just in case.
File descriptions:
Online only zip is for those of you who need to save /system space. It removes the offline voice files, so that offline voice dictation does not work. You must always have some sort of data connection for this type of zip.
Offline/Online zip is for those with no /system space restrictions. It contains the full Google Now package with offline voice dictation.
Update zip is for those who already have a version of GN installed. All it does is change your version to the one your choose without having to download a big file. If you are already on an Offline version, it will update you to the Offline version of whichever you choose. Same goes for Online versions and manual installations.
APK only is for those who have already flashed a zip. You may simply push the new apk to /system/app (overwrite or remove the previous version), set permissions to rw-r-r (0644), and reboot to enjoy the latest version of Google Now. DO NOT TRY TO INSTALL THE APK BY ITSELF.
If you aren't sure which one to use, or if this is too much information or is otherwise overwhelming for you, just flash the L4 version - Offline/Online, since it's the latest. Be sure to scroll down a bit and read about it, though.
Before doing anything, you need to make sure you have at least 60MB of free space on your /system partition for Offline/Online files and 30MB of free /system space for Online Only files. The L4 Full Zip only requires 20MB of free space.​
Easy installation:
reekotubbs created an installer/restorer that can be used to easily pick which zip you want. It also backs up relevant files for you in case you want to restore later. The thread link is below. Please ask any questions regarding this installer in his thread. [APP][4.0] Google Now for ICS Installer/Restorer [flashable Aroma Zip]
Alternately, if you aren't sure which recovery you're using, or your recovery messed up a flash, try out reekotubbs' app. It does the same thing as his aroma zip linked above, but it works through a standard Android app available for download on the Amazon app store and slide me market. As before, please ask questions about this app in his thread. GNow Handlebars
Flashable ZIPs
As per the new XDA rule on sharing, I am requesting that these zips not be shared elsewhere. I can't troubleshoot issues outside this thread, so please direct people here instead of redistributing the zips.
BY CLICKING THIS BUTTON BELOW TO SHOW THE CONTENT, YOU AGREE THAT YOU HAVE READ THIS POST AND THE NEXT ONE ENTIRELY. IF YOU HAVEN'T, AND YOU POST SOMETHING THAT HAS ALREADY BEEN ANSWERED, YOU WILL BE MOCKED. DO NOT CLICK THE "SHOW CONTENT" BUTTON UNLESS YOU AGREE TO THIS.​
L4 - lenny_kano's version 4 - This is identical to the M7 file below, except the apk has been edited to allow you to download your own language files. This means that there is no online or offline version. Download the zip, and flash it. If you already have Google Now installed, you will need to remove it first before installing this version.
Full Zip via Mediafire - 13.06MB /Hotfile mirror
L4-Velvet.apk Only
M7 - mikeyxda's version 7. This version improves on M6 by tweaking notifications to be more accurate and frequent. This version may use more battery. If you are using a Sense ROM, see the troubleshooting below for a hack to improve Google Now performance and battery efficiency.
Online/Offline via Mediafire - 36.48MB /Hotfile mirror
Online Only via Mediafire - 14.06MB /Hotfile mirror
M7 Update - 3.97MB /Hotfile mirror
M7-Velvet.apk Only
Inverted M7 - This is identical to the M7 files from above, except the colors are inverted, so that it has a black background instead of white, and white text instead of black. If you already have Google Now flashed, you can simply perform the update to this version.
Online/Offline via Mediafire - 36.81MB /Hotfile mirror
Online Only via Mediafire - 14.04MB /Hotfile mirror
Inverted M7 Update - 4.30MB /Hotfile mirror
M7inverted-Velvet.apk Only
How to:
Move the file you picked to the root of your SD card. Don't put it in any folder. This just makes it easier to find.
Reboot your device into recovery. See your device's specific instructions on how to do this if you are not sure. Google it for a faster answer.
Backup your current ROM.
In CWM, navigate to "Install zip from SD" and select that.
Next, highlight "Choose zip from SD card" and select it.
Scroll down to the Google Now zip you loaded onto your SD card, then select it.
Scroll down and select the option that says "Yes - Install Google Now....zip"
Once it has flashed, go back to the main CWM menu and select "Reboot system now".
Launch Google Now by opening your App Drawer and selecting the Google Icon (pic), or by adding the Google Search Widget (pic) to your home screen, then doing a normal search. (pic)
Go into the settings menu for Google Now and set it up for your Google account and various other settings.
Manual Installation:
Some Recoveries do not do a good job of retaining the permissions being set by the zips. Some don't even properly flash the files. If you aren't using CWM or TWR or it seems as though Google Now hasn't been flashed properly, then please follow these steps to manually install everything.
Download the Google Now zip of your choice from above and extract the /system folder into your SD card.
Fire up ES File Explorer (or whichever one you feel like using).
If you haven't used ES File Explorer before, open it, then hit menu.
Tap settings, then scroll all the way down.
Tap the entry that says "Root Settings" and make sure everything in there is checked.(pic).
Allow root access when the dialogue box for Superuser pops up.
After that, check off "Mount file system", then back out of the menu.
Navigate to the SD card with the Google Now /system folder.
Long press on the /system folder and select "Copy" from the menu.
Navigate up to the root directory and then press the "Paste" button on your menu bar at the top. (pic)
It will ask if you want to overwrite the files. Tell it yes.
Delete GoogleQuickSearchBox.apk from /system/app or rename it to "GoogleQuickSearchBox.apk.bak"
Now we need to set permissions.
Move into /system/app and scroll down to find GoogleTTS.apk.
Long press GoogleTTS.apk and select "Properties".
Change the permissions to rw-r-r. (pic)
Scroll down and find Velvet.apk.
Long press Velvet.apk and select "Properties".
Change the permissions to rw-r-r. (pic)
Navigate to /system/usr/srec/ and find two folders named "config" and "en-US"
Tap and hold on the "config" folder icon to bring up the options menu, then scroll down to Properties.
Tap properties, then tap change and see if the check boxes match this picture.
If it matches, leave it alone and head back to your home screen to enjoy using Google Now! If it doesn't match, change it so it does.
Do the same thing for the "en-US" folder.
Launch Google Now by opening your App Drawer and selecting the Google Icon (pic), or by adding the Google Search Widget (pic) to your home screen, then doing a normal search. (pic)
Go into the settings menu for Google Now and set it up for your Google account and various other settings.
ARMv6 INSTRUCTIONS:
ARMv7 zips do not work on ARMv6 devices. If your device is ARMv6, then unfortunately, you won't receive the latest and greates Google Now updates, but you can still try it out until you get a Jellybean ROM for your device. The voice search still does not work for ARMv6. There is a workaround for it, though.
The Easy Way:
Reboot into Recovery.
Backup your ROM.
Flash this in recovery.
Enjoy.
If you want to use the voice search workaround, visit this thread and install the apk.
The Hard Way:
Back up your current ROM.
Using your favorite file explorer, navigate to system/app and rename GoogleQuickSearchBox.apk to GoogleQuickSearchBox.bak. This is now your backup file.
Download this file, and rename it to "GoogleQuickSearchBox.apk"
Move this file to your SD card if you downloaded it from your PC. Move it to /system/app using your favorite root file explorer.
Set the permissions to rw-r-r
Reboot and enjoy
If you want to use the voice search workaround, visit this thread and install the apk.
Now What?
So, you flashed Google Now. You're wondering what you can do with it, right? Well, thankfully, Killer-B has a handy little guide to get you up to speed on all the cool stuff Google Now can do as well as how to do it!
Commands & Now Cards For Google Now!!! Now Video, and custom widget
At this point, I'd suggest looking through your contact list for people with unusual, or difficult to pronounce names. Go into their contact card, and add in a nickname for them of their phonetically spelled name. Google Now has trouble parsing these unusual names, and there isn't a way to make it learn. Spelling the names like they sound allows you to send texts and place calls via Google Now without any voice issues.
Open up the red mic screen and "Do a barrel roll."
Troubleshooting
If you are having an issue with Google Now, please read this and the second post to see if it's been addressed already. Failing to do this will result in someone making fun of your inability to properly read. You have been warned.
The red mic screen won't display.
To fix this, press the normal mic within the Google Now app. While it is listening (after it beeps), press menu > refresh. Now you're at the red mic.
Google Now Force Closes.
Make sure you have enough space on your /system partition before installing this. You need at least 60MB free for the Offline versions and 30MB free for the Online versions.
lenny_kano said:
About the permission denied fc, I'm guessing the users with the issue have an old gmail? Try updating or using tsjoklats patched one and the note to self fc will go away. See what logs do?
Oh and just to explain, the old gmail allows stuff based on signature, so as this apk is resigned it will not be allowed. The new.gmail marks it as.dangerous and will create a.notification for you to allow permission, or the patched one marks it as normal and allows it silently.
Click to expand...
Click to collapse
My phone gets worse battery life or uses more data.
Read this post by Racer Of All and follow the directions using apktool. This is for advanced users running a Sense 4.0 ROM only. Sense 4.1 and higher is unsupported.
Sports cards aren't showing up.
It won't add teams that aren't in regular season. To add new teams, simply do a search for them. You can also backup your ICS ROM with a nandroid, flash a Jellybean ROM, manually add teams after updating apps through the market, and then restore the ICS nandroid.
My Galaxy SIII just received the new update which blocks local search, and Google Now won't work properly.
ashshlay said:
This following post only applies currently to the stock rooted LH2 rom for the Galaxy S III TMO and Google Now installation.
The Samsung Kies update that removed the universal search function won't allow this to install via regular methods.
All files are on the device with the correct permissions except because of the different search apk (GoogleQuickSearchBox_USA.apk) the method mentioned in the OP won't work until you delete the _USA part of the file and then reboot into recovery and reflash following the OP instructions.
Click to expand...
Click to collapse
I can't open any search links!
This is a quirk in the later apks. You may need to hit the little magnifying glass icon next to the search link. This will allow you to open those links properly.
My phone exploded.
Have a muffin.
Have a question?
Please read this entire post and post #2 for solved problems before you post or you will be mocked. If your question has not been covered in either post, please feel free to describe your problem for us to help you. Here is the proper way to ask for help. Make sure to list the following things:
apk/zip FULL file name
Android version number
ROM
Recovery
UI (Sense/TW/AOKP/CM/AOSP)
/system size and free MB (example: 300MB/60MB) - Since some people don't understand this bit, just post a screenshot of the home screen of Titanium Backup.
LOGCAT or GTFO
Only after you list these things should you describe in excruciating detail what your problem is. Don't report anything that's already mentioned as not working or we'll just have a hearty laugh at your expense.
Back to stock:
If, for some reason, you want to remove Google Now and return to how you were before, flash the following zip. It removes all Google Now files, and returns the original Google Search app and voice files, as well as sets permissions for the Search app. Make sure to uninstall talkback and then reinstall it once you reboot to get voice search working again.
Google Now to Google Search via Mediafire- 2.02MB /Hotfile mirror
If you have a question, make sure you've read through the first two posts. If you don't, we will make fun of you.​
Please don't thank me. Find one of these guys' posts and thank them. They made it happen, not me.
reekotubbs, MikeyXda, and Lenny_kano for creating the hacked GN for ICS
homeslice976 for taking on the FAQ
Killer-B for an awesome write up of the cards and commands of GN
slickdaddy96, SinisterChedda, Kameirus, mf2112, jdcasino, Captain_Throwback, xCovErtWolFx757, UndeadSquirrel, and Naddict for troubleshooting, work-arounds, bug reports leading to fixes, and/or just making me laugh
silentstormer for handling the original OP
paxChristos for being our trusty mod
- If I missed you, let me know.
Disclaimer: I am in no way responsible for the well being of your cool gadget. By using any piece of software provided here, you are agreeing that all risks fall on you and you alone. If you do not agree to this, then exercise your God-given right to not flash this. Please press CTRL+F4 or the back button to leave this thread. Also, if you ask a stupid question, or one which has already been answered, you are also held responsible for the verbal fodder you post. You will be mocked severely. I, nor anyone else posting in this thread, is to be held accountable for your actions, wording, or ensuing butthurt. Please exercise caution before posting. Read until your eyes hurt, then search until your fingernails fall off. If your question has not been previously addressed, it will be handled as quickly as possible.
FAQ
1. Is my device ARMv6 or ARMv7?
Generally, new devices are ARMv7, older are ARMv6. There are lists all over the web. Here’s one:
http://forum.xda-developers.com/showthread.php?t=1596800
2. Will this work on my device?
There have been reports of multiple devices and UI’s working. The only way to know for sure is to flash it and find out. MAKE A NANDROID BACKUP FIRST. This way, if something goes wrong, you have a way back.
2a. Will this work on a stock/odexed ROM?
Again, there have been some successful reports of this working on odexed roms..but YMMV - so backup first.
3. Do I have to use CWM Recovery, or will other recoveries work?
CWM is the only recovery that’s been thoroughly tested, though there have been reports of TWRP, EXT4, and others working as well.
4. I'm getting a notification that there is a new version available, but when I try to install it, I'm told my device isn't compatible?
Well, that's because you're trying to install an official JB app on an ICS device. That's not going to work. This is a hacked version, made to be compatible with ICS. Simply swiping away the card will get rid of the update notification. There is no new version for ICS. Please do not ask for it as it's been asked for multiple times. If someone is able to hack the newer version, the OP will be updated. Til then, be happy with what you have.
5. Google Now is force closing on my device, why?
Could be a few reasons. First, make sure you have at least 60MB free space on your /system/ partition (for offline) or 30MB free space (for online). Then check permissions as specified in cajunflavoredbob’s post (http://forum.xda-developers.com/showpost.php?p=29756226&postcount=2856) (RW/R/R for .apk and lib files, RWX/RX/RX for folders). If this doesn’t work, try clearing data and cache from Google Search, Force Quit Google Search, and reboot. Also, make sure you only have 1 active Velvet.apk in /system/app/ at a time
6. Voice search isn’t working, but other functionality seems OK, what’s up?
You may have installed a standalone Velvet.apk, rather than flashing a .zip from cajunflavoredbob’s post. The flashable .zip packages contain libs and other resources that are necessary for Voice search to work. Once you’ve flashed one of these .zip packages, all you need to do in the future is replace Velvet.apk in /system/app/ with the newly released .apk, change permissions to RW/R/R, and reboot. Though, if you prefer, flashing the new .zip on top of the old one won’t hurt. Just make sure you don’t have multiple Velvet.apk files in /system/app/ at any given time. Alternatively, try the response to the last FAQ (google now remover). Also, make sure you have enough freespace in /system/app/
7. When I try to make a Note to self or send an email from Now, it doesn’t actually send, or it force closes or gives another error..., what gives?
Since Velvet.apk has been resigned (not with Google’s key,) it doesn’t pass GMail’s authentication check. Here (http://forum.xda-developers.com/showthread.php?t=1199518) is a patched GMail application that will skip/trick the signature check, and allow Now to access it.
7a. When sending a Note to self, it gives me an error about the Audio File not being attached?
Some users on some devices/ROMs have reported this problem. The email will still send, but the Audio attachment (the voice note) will not come along with it. Sorry.
8. Why can’t I back out of the Google Now Cards page?
This is currently a known issue. In the mean time, after pressing your Back key on the Cards page, press Menu then Refresh, and it will back out of the app properly.
9. My persistent search bar says “Google” where the microphone icon used to be?
This is a known issue. You’ll need to ditch the persistent search bar, and add the Google Search widget for the time being.
10. I flashed the .zip, but nothing happened, I don’t see Google Now ANYWHERE?
Just because you don’t see “Google Now” as an available app doesn’t mean it didn’t work. Open the “Google” app or add the “Google Search” widget. These will launch Google Now
If it's really not there, your recovery probably isn't playing nicely with the flashable .zips, in which case follow the Manual Installation instructions in the OP
11. I can’t add calendar entries via Google Now?
This seems to be an issue, but here’s a work around that should work. Google has a feature where you can text a number to add stuff to your calendar. First, you need to setup your Phone as a registered device. Go to www.google.com/calendar, and go to Calendar Settings. Click the Mobile Setup tab, enter your number, choose your carrier (not necessary), and click Send Verification code. Enter the verification code that you get via text, click Finish Setup. Now click Save and we're halfway there.
Now create a new contact on your phone called Calendar, and make the primary number 48368 (which is GVENT). Now you can use Google Now to "Text Calendar Lunch with Mom at Applebee's 1pm on Saturday". The event will be created on your calendar. Doing it this way, you will receive a confirmation text that the event was added as well. Don't know if that's a good thing or a bad thing, but either way, still cool....
12. Why won't NFL Teams show up?
It looks like NFL teams are slowly rolling out. There have been a number of reports of users with m7 getting Football teams (myself included). Also, if you have access to a JB ROM, you can login to now on JB, manually add the football team, go back to your ICS ROM, and the team will still be there. Unfortunately in our version it's still a baseball icon for football
12a. Why can't I manually add sports teams?
AS PER THE OP: The JellyBean update for Google Now, which includes manually adding sports teams, has not yet been ported. Please refrain from asking about this update, since all we're going to do is give you a silly answer to match the silly question.
13. Voice seems to be working, but when responding, Now is cutting off the last word of the response?
Thanks to XDA user educ for finding this - I can’t confirm first hand it works but it looks promising and he said it worked for him - http://forum.xda-developers.com/showthread.php?t=1780585
14. I installed the “Offline” version, but Now won’t respond to my questions when I don’t have internet connection?
cajunflavoredbob addressed this best - “‘Offline’ means that offline message dictation works. Perhaps that should be made more clear in the op, but even the noobiest should realise that searching the Internet does in fact require the Internet. The offline version doesn't magically cache the whole google network.”
15. Double tapping the home key no longer launches S-Voice?
Install Home2Shortcut - Thanks to ilkevinli for the setup instructions:
“Home2 Shortcut does work. Your just not setting it up right.
1. Go into S-Voice settings and uncheck the "Lauch S Voice by double pressing ..."
2. Lauch Home2 Shortcut
3. In Step 1, choose S Voice
4. In Step 2, choose what you like
5. In Step 3, choose TouchWiz Home
6. In Step 4, hit close
Now when you double click the home button, choose Home2 Shortcut
Have fun.”
16. How can I get the “Swipe Up” gesture to launch Google Now?
Some launchers don’t support this. Two that have been confirmed to work are Holo Launcher and Nova Launcher. You can set the Swipe Up action to launch the “Google” app in Holo, and “Assigning swipe up to Nova setting Voice works AMAZING!!!” (Thanks crutzulee). Other launchers may support this, Sense (Rosie) doesn’t. Let me know about any more confirmed working or not working launchers, stock or otherwise (homeslice976 on xda)
APEX Launcher also works "The "swipe up" gesture works well with these steps: menu>Apex settings>behavior settings>select "swipe up">select "launch app">select "Google">"OK">home. Works great, launches reliably." - @gershomww Thank!
17. After installing this, when pressing the button on my BT headset, it launches the crappy ICS Voice Dialer, can I change this to Google Search?
We've come across 2 ways to accomplish this, however, once you default it to the Google Now Voice Search, it won't listen through the headset, or play Now's audio through the headset, this will all be done via the speaker and mic on the device. But at least it will launch Now Search, and as long as the phone is close to you, your mic should pick you up (Now's voice recognition seems to be awesome). Anyone smart enough to figure out how Voice Dialer can listen through the headset and play it's audio through the headset and can apply it to Velvet?
Method 1: Install Bluetooth Launch from the Market. Move Velvet.apk from /system/app/ to /data/app/ and reboot. Setup Bluetooth Launch to launch Google Search/com.google.android.googlequicksearchbox.VoiceSearchActivity. A few users have reported this working for them (though you may need to setup Google Now again).
If after moving Velvet.apk to /data/app/ and rebooting you no longer have Google Search anywhere (app, widget, etc), or if this for some other reason doesn't work, move Velvet.apk back to /system/app/, reboot, and verify Now is working again. Then do this:
Method 2: Uninstall Bluetooth Launch from your phone and reboot. Ensure it's still uninstalled, and no longer in /data/app/ (com.kin.bluetooth_launch-1.apk). Place this (waiting for permission from Bluetooth Launch's dev, Guardian Bob, before sharing publicly. In the meantime, shoot me a PM) modified Bluetooth Launch apk in /system/app/, set permissions to RW/R/R, and install it. Once installed, open the app and set it to launch Google Search/com.google.android.googlequicksearchbox.VoiceSearchActivity, then reboot. Now your BT button on your headset should launch Google Now.
18. Google Now seems to have installed properly, and is working, but everytime I open Google Now I have to go through the setup process where I tell it "I'm in", why?
A couple users have reported this issue, and said that by simply flashing the uninstall .zip, then reflashing the mod, it began working properly
19. Other weird issues? Still having trouble and don’t know what to do?
Try flashing the Google Now Remover (http://www.mediafire.com/?whihy17x6q8l31f) and then try flashing the Google Now flashable .zip of your choice and see what happens.
I would really love to see this. Its one of the features I really think makes JB cool.
The actual file is called velvet.apk and I can't get it to work as it is API 16 (jellybean) and its odexed.
There a deoxed version out, but it still doesn't work because like said above the api, is for jelly bean. We need a dev to decompile find change recompile for ics
Sent from my SPH-D710 using Tapatalk 2
I hope they can get it to work on ICS, or that my Padfone gets JB quick
I played around with it and got it working on ics. Still buggy and it has no voice support (at least on my phone) yet.
I'll upload the apk later when I'm at home .
me cant wait too.. please devs, do something.
MaR-V-iN said:
I played around with it and got it working on ics. Still buggy and it has no voice support (at least on my phone) yet.
I'll upload the apk later when I'm at home .
Click to expand...
Click to collapse
You'll be my hero if you get it to work fully on ICS!
MaR-V-iN said:
I played around with it and got it working on ics. Still buggy and it has no voice support (at least on my phone) yet.
I'll upload the apk later when I'm at home .
Click to expand...
Click to collapse
I'll wait for your post
Sent from my Xperia Neo on Ics
http://d-h.st/y44 - have fun
GUYS PLEASE: Search this thread for a newer version before complaining about any errors. If you get problems, please full logcat! - We don't need a spammed thread.
MaR-V-iN said:
http://d-h.st/wst - have fun
Click to expand...
Click to collapse
"There is a problem parsing the package".
How to install ?
MaR-V-iN said:
http://d-h.st/wst - have fun
Click to expand...
Click to collapse
Doesthat one work properly? and also on unrooted devices?
Downloaded.
Got parse error on install.
Sorry uploaded APK with wrong Manifest file.
Wait a minute...
This one should work: http://d-h.st/y44
GUYS PLEASE: Search this thread for a newer version before complaining about any errors. If you get problems, please full logcat! - We don't need a spammed thread.
MaR-V-iN said:
Sorry uploaded APK with wrong Manifest file.
Wait a minute...
This one should work: http://d-h.st/y44
Click to expand...
Click to collapse
Also without root?
---===:::Greetzz, jojoost:::===---
Sent from my iPad using Tapatalk HD
I try to install and nothing.
I set permissions, reboot and wipe dalvik cache and nothing.
MaR-V-iN said:
Sorry uploaded APK with wrong Manifest file.
Wait a minute...
This one should work: http://d-h.st/y44
Click to expand...
Click to collapse
Lol you had minimal sdk version=16 in manifest while ics sdk version is 15
Any updates on voice input? whats the main problem of it not working? It's depending on libs or something?
Should I install this as a normal APK?
Yes it does not require root, install as usual app (does not require to be in /system/app)
I disabled some things in voice input initializing code that require api 16, have to look deeper to resolve this, but i have no free time at the moment, so this will not be done tomorrow
The other idea is to port the missing JB apis to ICS, this should allow other JB apps to run too.
@seahorsepip while playing around with jb apps i changed my api version in build.prop to not require recompile any time - forgot this change for velvet...

Need help--TTS in settings crashes ("secure table" in 4.4.4?) $ incentive for help...

Need help--TTS in settings crashes ("secure table" in 4.4.4?) $ incentive for help...
--The device is a Note Edge running 4.4.4, but I do not believe the problem is device-specific.
--The app is one specific Cereproc Text to Speech voice/engine
What happened? I was upgrading from a Note 3 to Edge. I used TiBu to backup and restore. I know better than to restore system apps. This is a user/data app. This app installs the apk, library files, and voice resource files to internal storage. Naturally TiBu does not properly backup this app. When I upgrade to a new device, I usually have to re-download. No big deal.
In this case, I forgot. After everything got restored, I went to Settings>Language/Input>TTS, and chose the Cereproc voice. Immediately, I get "Settings is not responding". The only way for me to select another TTS is to deinstall the Cereproc voice. Yes, I've tried wiping cache/dalvik and uninstall/reinstall, no joy.
The interesting thing is that I am able to install another Cereproc voice, any other, and it works just fine. It's only this specific one that will cause Settings to crash every time.
After doing some looking, I found these below. In excerpt:
https://code.google.com/p/android/issues/detail?id=63122
When updating our TTS engine to comply with Android 4.4 from Android 4.3 we have experienced odd behaviour in relation to the TextToSpeechSettings and java.util.Locale.getISO3Country when the application had an active install during the update process on a Google Nexus 4. The result of this behaviour is that the TextToSpeech Settings crashes as a result of MissingResourceException when the Android system is handed the locale eng_NULL.
I am pretty sure this locale (eng_NULL) was somehow associated with the package name of our application as it's default. An uninstall/reinstall doesn't fix the problem, leading me to believe it is cached somewhere in the system settings, however, a reinstall with a different package name results in an error/warning free install/operation.
I think the correct behaviour should be that the application should be handed an eng_GBR locale and not eng_NULL as it's default. Without rooting the device, there does not seem to be a way to alter this value.
Click to expand...
Click to collapse
It seems to be fixed here:
https://android-review.googlesource.com/#/c/87756/
This is an attempt to fix uncaught MissingResourceException
that would be thrown if default language of selected engine is
set to a locale that has no 3-letter country/language code.
Click to expand...
Click to collapse
Yet another post related to seemingly the same thing:
http://stackoverflow.com/questions/22297532/text-to-speech-output-screen-crashing
This in an Android bug and it's very frustrating.
There is a bug reported here (which is fixed as of this, but not yet rolled out to actual devices) and a related one here.
If the locale you are declaring cannot be matched by the system, then the Settings will persist to crash. I tried clearing everything to prevent this from happening, but the System is caching this value somewhere and attempting to match it prior to checking any updated locale in your app.
I changed my code to a locale that I knew would be matched, wiped my device and resintalled...
You need to make sure that you declare the locale correctly as heb-HEB I think!!! But beware!!! If Android doesn't recognise it, you'll get the crash again....
It's best to declare an extra locale that you default to and then check in the Settings if the locale code you are using is displayed correctly. If it's not, don't select it! And try again....
I posted on the bug report above, asking where Android persisted this incorrect locale, but I got no answer.... If you can find out, you wouldn't need to wipe your device. I tried wiping all caches in recovery, but it didn't work.
The engine settings are stored in secure table, and there is no way to alter those values (unless rooted)
Click to expand...
Click to collapse
The important take-aways are :
1) Wiping cache and reinstalling doesn't solve the problem
2) If it's a different version or package of the same app, it works just fine
3) Again, I can install any other Cereproc voice, and it works just fine
4) There is a "secure table"(?) where it *CAN* be altered and fixed if I have root? I do have root, but how do I fix this??
I can really use some help on this folks. I'll pledge $15 via PayPal to anyone who gives me specific information/instruction on getting past this. I really don't want to factory reset.....
Thanks.

[Guide] Multi User Setup for Kitkat 4.4.4 (for noobs)

This tutorial will show you how to setup your device as admin and configure other user profiles (this is important when you're not the owner). Your device maker disabled multiuser functionality in Kitkat, like on my Lenovo Tab 2 A10-70L? - then this for you. At least, that's where this procedure is tested on. Afaik, this should work on Lollipop too. But will it work for your device? - No clue, you tell us!
Basically it's an accumulation of what I've read here (thanks again) and my personal experience as a noob myself.
So far, this guide is incomplete and I'm hoping for some pro tipps to perfect it. Please help me sort out the unclear parts highlighted in red and I'll update this post accordingly. The sooner the better, because this actually is not my device and someday soon I'll have to pass it over to my mom since it's my present to her, I'm only setting this slab up...
Preconditions:
Android treats the first account created as "owner". Only owner will have root privileges if installed accordingly (=admin).
Root permission and a file manager (e.g. ES File Explorer) are required for this fix so go get that first. For the Lenovo Tab 2 A10-70L, I followed this beautiful guide, besides that, I can't help much here.
Unable/uninstall all bloatware (I was adventurous with Titanium Backup with no probs so far, but some crap remained from looking at new user folders; still in search of a vendor/device-specific "save to remove" list)
Install ALL apps you and the other users suppesdly need. This will avoid the need to redownload and reinstall all the apps for each and every user wasting storage. Think thrice, usually it'll be more than desired, but better you do it instead of a DAU... Each user will be able to install apps later though. Full control over user restrictions can be applied for "guest profile" only.
Steps:
In file explorer, go to /system/ and open build.prop
Check if you have anything like the below text (you shouldn't, otherwise edit accordingly) and add these lines at the end of it:
Code:
# Multi Users
fw.max_users=[COLOR="DarkGreen"]X[/COLOR]
fw.show_multiuserui=1
Replace X with your desired digit (up to 7?)
(I've read somewhere that 7 users is maximum that system can handle, but I haven't tried)
Save, reboot and log in as "owner" (your profile)
Go to Settings>Device and say hello to new item "Users"
Create new users and/or a guest profile (important: write down the order in which you created them!)
All new user profiles are now shown as "new user" no matter what you wrote in the profile properties (only guest will be shown as "guest"). Mind you, this also applies for the lockscreen!
In file explorer, go to /data/system/users/ to find your users' folders containing some system files (what exactly?) Now guess what - the order of the numbered folders and #.xml files match the order you created them. "0" is you, the owner.
Open each .xml file and replace "Owner" with "Your Name" and "New user" with "Username"
Put the device to sleep, trigger lockscreen and log in to each user profile and
Pull down shortcut menu from top right and enable autorotate
Go to Settings>Users>Security, check all settings and note each unlock-code
Disable background services like sync, location, etc. that could potentionally drain battery where applicable
Rinse & repeat 8) for all new profiles
Install "Multi-User App Share" and set apps per user. (Or is there a newer app or more hackish approach without the need for xposed or compiling stuff etc.?)
= DONE =
If you want the user icon in status bar, follow http://forum.xda-developers.com/gal...-users-mod-t3017782/post58659868#post58659868 (haven't tried that ).
Well... build.prop fixes are working, at least for me. It's good alternative to multi-user app from Xposed (we don't want to use Xposed too much...).
Still tried with decompiling & compiling framework for fixing icon problem, and... in framework-res there is not status_bar_expanded_header.xml file, se we are in deep ****.
I am working on: LP

Categories

Resources