[Sony Cross-Device Development Themes and Apps] holyping:
I converted the source file to smali2.1.1 format:

for example of cm12.1, the modifition framework.jar:

unzip the class file classes.dex from framework.jar

run: java -jar baksmali.jar classes.dex

and then in then created directory "out", find the path that contains StorageManager.smali: "os\storage"

add a file named StorageManager$StorageType.smali with this content:

.class public final enum Landroid/os/storage/StorageManager$StorageType;
.super Ljava/lang/Enum;
.source "StorageManager.java"

# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Landroid/os/storage/StorageManager;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x4019
name = "StorageType"
.end annotation

.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Enum",
"<",
"Landroid/os/storage/StorageManager$StorageType;",
">;"
}
.end annotation

# static fields
.field private static final synthetic $VALUES:[Landroid/os/storage/StorageManager$StorageType;

.field public static final enum EXTERNAL_CARD:Landroid/os/storage/StorageManager$StorageType;

.field public static final enum EXTERNAL_USB:Landroid/os/storage/StorageManager$StorageType;

.field public static final enum INTERNAL:Landroid/os/storage/StorageManager$StorageType;

.field public static final enum UNKNOWN:Landroid/os/storage/StorageManager$StorageType;

# direct methods
.method static constructor <clinit>()V
.registers 6

.prologue
const/4 v5, 0x3

const/4 v4, 0x2

const/4 v3, 0x1

const/4 v2, 0x0

.line 717
new-instance v0, Landroid/os/storage/StorageManager$StorageType;

const-string v1, "INTERNAL"

invoke-direct {v0, v1, v2}, Landroid/os/storage/StorageManager$StorageType;-><init>(Ljava/lang/String;I)V

sput-object v0, Landroid/os/storage/StorageManager$StorageType;->INTERNAL:Landroid/os/storage/StorageManager$StorageType;

.line 720
new-instance v0, Landroid/os/storage/StorageManager$StorageType;

const-string v1, "EXTERNAL_CARD"

invoke-direct {v0, v1, v3}, Landroid/os/storage/StorageManager$StorageType;-><init>(Ljava/lang/String;I)V

sput-object v0, Landroid/os/storage/StorageManager$StorageType;->EXTERNAL_CARD:Landroid/os/storage/StorageManager$StorageType;

.line 723
new-instance v0, Landroid/os/storage/StorageManager$StorageType;

const-string v1, "EXTERNAL_USB"

invoke-direct {v0, v1, v4}, Landroid/os/storage/StorageManager$StorageType;-><init>(Ljava/lang/String;I)V

sput-object v0, Landroid/os/storage/StorageManager$StorageType;->EXTERNAL_USB:Landroid/os/storage/StorageManager$StorageType;

.line 726
new-instance v0, Landroid/os/storage/StorageManager$StorageType;

const-string v1, "UNKNOWN"

invoke-direct {v0, v1, v5}, Landroid/os/storage/StorageManager$StorageType;-><init>(Ljava/lang/String;I)V

sput-object v0, Landroid/os/storage/StorageManager$StorageType;->UNKNOWN:Landroid/os/storage/StorageManager$StorageType;

.line 715
const/4 v0, 0x4

new-array v0, v0, [Landroid/os/storage/StorageManager$StorageType;

sget-object v1, Landroid/os/storage/StorageManager$StorageType;->INTERNAL:Landroid/os/storage/StorageManager$StorageType;

aput-object v1, v0, v2

sget-object v1, Landroid/os/storage/StorageManager$StorageType;->EXTERNAL_CARD:Landroid/os/storage/StorageManager$StorageType;

aput-object v1, v0, v3

sget-object v1, Landroid/os/storage/StorageManager$StorageType;->EXTERNAL_USB:Landroid/os/storage/StorageManager$StorageType;

aput-object v1, v0, v4

sget-object v1, Landroid/os/storage/StorageManager$StorageType;->UNKNOWN:Landroid/os/storage/StorageManager$StorageType;

aput-object v1, v0, v5

sput-object v0, Landroid/os/storage/StorageManager$StorageType;->$VALUES:[Landroid/os/storage/StorageManager$StorageType;

return-void
.end method

.method private constructor <init>(Ljava/lang/String;I)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()V"
}
.end annotation

.prologue
.line 715
invoke-direct {p0, p1, p2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V

return-void
.end method

.method public static valueOf(Ljava/lang/String;)Landroid/os/storage/StorageManager$StorageType;
.registers 2
.param p0, "name" # Ljava/lang/String;

.prologue
.line 715
const-class v0, Landroid/os/storage/StorageManager$StorageType;

invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;

move-result-object v0

check-cast v0, Landroid/os/storage/StorageManager$StorageType;

return-object v0
.end method

.method public static values()[Landroid/os/storage/StorageManager$StorageType;
.registers 1

.prologue
.line 715
sget-object v0, Landroid/os/storage/StorageManager$StorageType;->$VALUES:[Landroid/os/storage/StorageManager$StorageType;

invoke-virtual {v0}, [Landroid/os/storage/StorageManager$StorageType;->clone()Ljava/lang/Object;

move-result-object v0

check-cast v0, [Landroid/os/storage/StorageManager$StorageType;

return-object v0
.end method

modify the file StorageManager.smali:

1. insert a line under

.annotation system Ldalvik/annotation/MemberClasses;

value = {

Landroid/os/storage/StorageManager$1;,

the content:

Landroid/os/storage/StorageManager$StorageType;,

2. append this content at the end of file:

.method public getVolumePath(Landroid/os/storage/StorageManager$StorageType;)Ljava/lang/String;
.registers 8
.param p1, "type" # Landroid/os/storage/StorageManager$StorageType;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/FileNotFoundException;
}
.end annotation

.prologue
.line 789
invoke-virtual {p0}, Landroid/os/storage/StorageManager;->getVolumeList()[Landroid/os/storage/StorageVolume;

move-result-object v0

.local v0, "arr$":[Landroid/os/storage/StorageVolume;
array-length v2, v0

.local v2, "len$":I
const/4 v1, 0x0

.local v1, "i$":I
:goto_6
if-ge v1, v2, :cond_1c

aget-object v3, v0, v1

.line 790
.local v3, "volume":Landroid/os/storage/StorageVolume;
invoke-virtual {p0, v3}, Landroid/os/storage/StorageManager;->getVolumeType(Landroid/os/storage/StorageVolume;)Landroid/os/storage/StorageManager$StorageType;

move-result-object v4

invoke-virtual {p1, v4}, Landroid/os/storage/StorageManager$StorageType;->equals(Ljava/lang/Object;)Z

move-result v4

if-eqz v4, :cond_19

.line 791
invoke-virtual {v3}, Landroid/os/storage/StorageVolume;->getPath()Ljava/lang/String;

move-result-object v4

return-object v4

.line 789
:cond_19
add-int/lit8 v1, v1, 0x1

goto :goto_6

.line 795
.end local v3 # "volume":Landroid/os/storage/StorageVolume;
:cond_1c
new-instance v4, Ljava/io/FileNotFoundException;

const-string v5, "No such storage volume"

invoke-direct {v4, v5}, Ljava/io/FileNotFoundException;-><init>(Ljava/lang/String;)V

throw v4
.end method

.method public getVolumeType(Landroid/os/storage/StorageVolume;)Landroid/os/storage/StorageManager$StorageType;
.registers 5
.param p1, "volume" # Landroid/os/storage/StorageVolume;

.prologue
.line 739
invoke-static {}, Landroid/content/res/Resources;->getSystem()Landroid/content/res/Resources;

move-result-object v1

.line 740
.local v1, "r":Landroid/content/res/Resources;
invoke-virtual {p1}, Landroid/os/storage/StorageVolume;->getDescriptionId()I

move-result v0

.line 742
.local v0, "descriptionId":I
const v2, 0x10405ad

if-ne v0, v2, :cond_10

.line 743
sget-object v2, Landroid/os/storage/StorageManager$StorageType;->INTERNAL:Landroid/os/storage/StorageManager$StorageType;

.line 752
:goto_f
return-object v2

.line 744
:cond_10
const v2, 0x10405ae

if-ne v0, v2, :cond_18

.line 745
sget-object v2, Landroid/os/storage/StorageManager$StorageType;->EXTERNAL_CARD:Landroid/os/storage/StorageManager$StorageType;

goto :goto_f

.line 746
:cond_18
const v2, 0x10405af

if-ne v0, v2, :cond_20

.line 747
sget-object v2, Landroid/os/storage/StorageManager$StorageType;->EXTERNAL_USB:Landroid/os/storage/StorageManager$StorageType;

goto :goto_f

.line 752
:cond_20
sget-object v2, Landroid/os/storage/StorageManager$StorageType;->UNKNOWN:Landroid/os/storage/StorageManager$StorageType;

goto :goto_f
.end method

.method public getVolumeType(Ljava/lang/String;)Landroid/os/storage/StorageManager$StorageType;
.registers 8
.param p1, "mountPoint" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/FileNotFoundException;
}
.end annotation

.prologue
.line 766
invoke-virtual {p0}, Landroid/os/storage/StorageManager;->getVolumeList()[Landroid/os/storage/StorageVolume;

move-result-object v0

.local v0, "arr$":[Landroid/os/storage/StorageVolume;
array-length v2, v0

.local v2, "len$":I
const/4 v1, 0x0

.local v1, "i$":I
:goto_6
if-ge v1, v2, :cond_1c

aget-object v3, v0, v1

.line 767
.local v3, "volume":Landroid/os/storage/StorageVolume;
invoke-virtual {v3}, Landroid/os/storage/StorageVolume;->getPath()Ljava/lang/String;

move-result-object v4

invoke-virtual {v4, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v4

if-eqz v4, :cond_19

.line 768
invoke-virtual {p0, v3}, Landroid/os/storage/StorageManager;->getVolumeType(Landroid/os/storage/StorageVolume;)Landroid/os/storage/StorageManager$StorageType;

move-result-object v4

return-object v4

.line 766
:cond_19
add-int/lit8 v1, v1, 0x1

goto :goto_6

.line 772
.end local v3 # "volume":Landroid/os/storage/StorageVolume;
:cond_1c
new-instance v4, Ljava/io/FileNotFoundException;

const-string v5, "No such storage volume"

invoke-direct {v4, v5}, Ljava/io/FileNotFoundException;-><init>(Ljava/lang/String;)V

throw v4
.end method

There the issues I encounted:

1. fc when default mode is set to auto mode,

2. fc when zoomed by the ratio between start and half of the zoom slidebar