[Galaxy Note II Original Android Development] Nazo:
Ok, so if I understand this correctly, it can even patch framework.jar? I'm pretty sure that's what Greenify says it's doing even. This maybe gives me some hope for a potential less messy solution to a problem that has plagued me from day one with Android -- the horrible volume control. The current 15-positions for media volume gives me a lot of trouble whenever I use headphones (or IEMs, but the SGS3 doesn't like low impedances -- the same issue the SGS4 has from what I'm reading -- plus it's my headphones that are good quality, not my IEMs.) It's always either too loud or too quiet and I can't get the right balance in the sound. I tried doing it the hard way -- adjusting the volume of the audio files themselves (and you can only directly change MP3s and lossless files without having to reencode and damage the quality -- though Poweramp now seems to support ReplayGain it seems to not work well or at all for me at least) but after processing for probably a good 30 minutes and trying a bunch of different settings (with more processing each time of course) I eventually gave up as it's nearly impossible to get just right even if songs are supposedly of equal "loudness" according to the algorithms.

But recently someone pointed me to an article that basically said the same thing as this (this one is just a bit newer and nicer with working links): http://chrisdube.com/increase-number-of-volume-steps-in-android/ As you can see, it's a convoluted and messy process however. The sad thing is, all of this mess must be done just simply to change a few pre-defined values in one array and nothing else. There are some significant problems with this method even ignoring how many steps and how much time is required:

1. This can only be done on de-odexed ROMs. I'm running CyanogenMod, but this means I can't share this fix with anyone else I know that's on Android!

2. This must be done again every single time there is an update. If you like to try nightlies or just need to update a bit more often than, say, stable releases alone, this means it can get to be really really tedious in a hurry.

3. It's pretty easy to mess this up and render the OS itself unbootable since you not only must replace the existing framework.jar but have to remember to chmod it and of course you have to be sure not to accidentally use a framework.jar you've fixed from a different version (so far it has been different every single time without exception for whatever reason so using the wrong one by accident has always resulted in an unbootable OS for me.) Somehow (no clue how) I even had my phone to the point that even doing another clean update wouldn't fix it the last time I messed this up and couldn't even get it to go to recovery without one heck of a fight. I ended up having to completely wipe the internal storage and reinstall everything from scratch (thank goodness for Titanium Backup!)

4. It requires access to a computer. And usually one with adb support (so drivers and etc must be installed first as well as the Google framework) though with my own phone at least I can run a SSH server with root privileges and manually do it all through SSH instead (which is actually a heck of a lot nicer than adb I might add.) I'm afraid to ever update when not at home because I might need to listen to music while waiting on something or something like that and would be stuck until I could get home and fix it again. There's no way that I can find to do the "Baksmali/Smali" process from a phone/tablet even if I didn't mind the fact that it would be about 20x harder to do the other stuff directly on them.

Once I finally do all of this mess, I'm finally able to truly enjoy listening to music (and playing games with good music like Sonic CD) on my phone and, in fact, like the sound of it directly driving my headphones better than my PC's rather nice external DAC+external headphone amplifier combo, but I'm so sick of having to keep doing this over and over and dealing with the mistakes that inevitably occur when repeatedly doing the same things over and over (like getting the wrong modified framework.jar.) But upon reading this, I'm wondering. Is it possible that this could possibly be used to patch those values? I'm not a programmer so don't really fully understand all of what this thing can do, but it sounds almost like it mostly patches functions and such whereas these are values that are defined in the code. Is it possible? If so, by any chance would anyone be willing to whip up a basic module to do this? Preferably something where I can in some way change the values myself (it's ok if it's not easy, I'd only need to set them once as I've already found the numbers that work best for me.)

I wanted to post in the official dedicated forums, but it seems they've been down for some time.