Android - How can I increase the number of volume levels?

Many people have this problem with Android. You can see it has been reported in Android's bug tracking system. The number of levels is controlled by a setting that's compiled into the Android system image.

Use a different ROM

It's possible that flashing a custom-rom could increase the number of levels, but I don't know which, if any, custom ROMs do this. This bug report in cyanogenmod's tracker suggests they don't plan to add that feature, for fear it may cause compatibility problems with some apps.

Use a different app (easy)

Some media apps have their own volume control, on top of that provided by Android. I believe Poweramp is one such (but I don't use it myself). If there's one particular app you need more control of, such as a music app, you might want to replace it with one that has this feature.

Edit your phone's OS (advanced)

If you're not worried about the risk of breaking some (badly-written) apps, and your device is rooted, then you can follow these instructions to edit the Android system image to increase the number of levels. That site gives step-by-step instructions, including installing the developer tools you'll need to make system changes; a summary for knowledgeable people is as follows:

  1. Get framework.jar from your device and run baksmali on it.
  2. Edit framework\android\media\AudioService.smali
  3. Search for 0xft 0x0t 0x0t 0x0t to find the table of audio levels.
  4. Replace the first number of each row with the desired number of levels (in hexadecimal).
  5. Run smali to generate a new framework.jar, and then replace the original on the device.

If you're phone is rooted or you have a custom recovery (like TWRP), this is actually much easier. The only thing you'll have to do, is to add the following line to your build.prop file located in /system:

ro.config.media_vol_steps=30

Where 30 represents the number of steps.

This can be done with a root file explorer (like Root Browser) or via VI in the TWRP terminal or via adb.


Edit: This app looks worth a go - https://forum.xda-developers.com/android/apps-games/app-precise-volume-override-androids-t3573562 (https://play.google.com/store/apps/details?id=com.phascinate.precisevolume)

I ended up using this app on my nexus 4 - supports up to 100 volume levels. Its not perfect but should suffice till they hopefully fix what seems like such a simple problem.

https://play.google.com/store/apps/details?id=opotech.finevolumev2

Discussed here-

http://androidforums.com/android-lounge/490543-volume-control-in-android-os.html