public class android.media.MediaActionSound
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.media.MediaActionSound
  super_class: java.lang.Object
{
  private static final int NUM_MEDIA_SOUND_STREAMS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private android.media.SoundPool mSoundPool;
    descriptor: Landroid/media/SoundPool;
    flags: (0x0002) ACC_PRIVATE

  private android.media.MediaActionSound$SoundState[] mSounds;
    descriptor: [Landroid/media/MediaActionSound$SoundState;
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.String[] SOUND_DIRS;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] SOUND_FILES;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "MediaActionSound"

  public static final int SHUTTER_CLICK;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int FOCUS_COMPLETE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int START_VIDEO_RECORDING;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int STOP_VIDEO_RECORDING;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private static final int STATE_NOT_LOADED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int STATE_LOADING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int STATE_LOADING_PLAY_REQUESTED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int STATE_LOADED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private android.media.SoundPool$OnLoadCompleteListener mLoadCompleteListener;
    descriptor: Landroid/media/SoundPool$OnLoadCompleteListener;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 50
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
         1: .line 51
            ldc "/product/media/audio/ui/"
            aastore
            dup
            iconst_1
         2: .line 52
            ldc "/system/media/audio/ui/"
            aastore
         3: .line 50
            putstatic android.media.MediaActionSound.SOUND_DIRS:[Ljava/lang/String;
         4: .line 55
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
         5: .line 56
            ldc "camera_click.ogg"
            aastore
            dup
            iconst_1
         6: .line 57
            ldc "camera_focus.ogg"
            aastore
            dup
            iconst_2
         7: .line 58
            ldc "VideoRecord.ogg"
            aastore
            dup
            iconst_3
         8: .line 59
            ldc "VideoStop.ogg"
            aastore
         9: .line 55
            putstatic android.media.MediaActionSound.SOUND_FILES:[Ljava/lang/String;
        10: .line 105
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // android.media.MediaActionSound this
         0: .line 123
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 242
            aload 0 /* this */
         2: .line 243
            new android.media.MediaActionSound$1
            dup
            aload 0 /* this */
            invokespecial android.media.MediaActionSound$1.<init>:(Landroid/media/MediaActionSound;)V
            putfield android.media.MediaActionSound.mLoadCompleteListener:Landroid/media/SoundPool$OnLoadCompleteListener;
         3: .line 124
            aload 0 /* this */
            new android.media.SoundPool$Builder
            dup
            invokespecial android.media.SoundPool$Builder.<init>:()V
         4: .line 125
            iconst_1
            invokevirtual android.media.SoundPool$Builder.setMaxStreams:(I)Landroid/media/SoundPool$Builder;
         5: .line 126
            new android.media.AudioAttributes$Builder
            dup
            invokespecial android.media.AudioAttributes$Builder.<init>:()V
         6: .line 127
            bipush 13
            invokevirtual android.media.AudioAttributes$Builder.setUsage:(I)Landroid/media/AudioAttributes$Builder;
         7: .line 128
            iconst_1
            invokevirtual android.media.AudioAttributes$Builder.setFlags:(I)Landroid/media/AudioAttributes$Builder;
         8: .line 129
            iconst_4
            invokevirtual android.media.AudioAttributes$Builder.setContentType:(I)Landroid/media/AudioAttributes$Builder;
         9: .line 130
            invokevirtual android.media.AudioAttributes$Builder.build:()Landroid/media/AudioAttributes;
        10: .line 126
            invokevirtual android.media.SoundPool$Builder.setAudioAttributes:(Landroid/media/AudioAttributes;)Landroid/media/SoundPool$Builder;
        11: .line 131
            invokevirtual android.media.SoundPool$Builder.build:()Landroid/media/SoundPool;
        12: .line 124
            putfield android.media.MediaActionSound.mSoundPool:Landroid/media/SoundPool;
        13: .line 132
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSoundPool:Landroid/media/SoundPool;
            aload 0 /* this */
            getfield android.media.MediaActionSound.mLoadCompleteListener:Landroid/media/SoundPool$OnLoadCompleteListener;
            invokevirtual android.media.SoundPool.setOnLoadCompleteListener:(Landroid/media/SoundPool$OnLoadCompleteListener;)V
        14: .line 133
            aload 0 /* this */
            getstatic android.media.MediaActionSound.SOUND_FILES:[Ljava/lang/String;
            arraylength
            anewarray android.media.MediaActionSound$SoundState
            putfield android.media.MediaActionSound.mSounds:[Landroid/media/MediaActionSound$SoundState;
        15: .line 134
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        16: goto 19
        17: .line 135
      StackMap locals: android.media.MediaActionSound int
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSounds:[Landroid/media/MediaActionSound$SoundState;
            iload 1 /* i */
            new android.media.MediaActionSound$SoundState
            dup
            aload 0 /* this */
            iload 1 /* i */
            invokespecial android.media.MediaActionSound$SoundState.<init>:(Landroid/media/MediaActionSound;I)V
            aastore
        18: .line 134
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 1 /* i */
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSounds:[Landroid/media/MediaActionSound$SoundState;
            arraylength
            if_icmplt 17
        end local 1 // int i
        20: .line 137
            return
        end local 0 // android.media.MediaActionSound this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   21     0  this  Landroid/media/MediaActionSound;
           16   20     1     i  I

  private int loadSound(android.media.MediaActionSound$SoundState);
    descriptor: (Landroid/media/MediaActionSound$SoundState;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // android.media.MediaActionSound this
        start local 1 // android.media.MediaActionSound$SoundState sound
         0: .line 140
            getstatic android.media.MediaActionSound.SOUND_FILES:[Ljava/lang/String;
            aload 1 /* sound */
            getfield android.media.MediaActionSound$SoundState.name:I
            aaload
            astore 2 /* soundFileName */
        start local 2 // java.lang.String soundFileName
         1: .line 141
            getstatic android.media.MediaActionSound.SOUND_DIRS:[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 9
      StackMap locals: android.media.MediaActionSound android.media.MediaActionSound$SoundState java.lang.String top int int java.lang.String[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* soundDir */
        start local 3 // java.lang.String soundDir
         3: .line 142
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSoundPool:Landroid/media/SoundPool;
            new java.lang.StringBuilder
            dup
            aload 3 /* soundDir */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* soundFileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_1
            invokevirtual android.media.SoundPool.load:(Ljava/lang/String;I)I
            istore 7 /* id */
        start local 7 // int id
         4: .line 143
            iload 7 /* id */
            ifle 8
         5: .line 144
            aload 1 /* sound */
            iconst_1
            putfield android.media.MediaActionSound$SoundState.state:I
         6: .line 145
            aload 1 /* sound */
            iload 7 /* id */
            putfield android.media.MediaActionSound$SoundState.id:I
         7: .line 146
            iload 7 /* id */
            ireturn
        end local 7 // int id
        end local 3 // java.lang.String soundDir
         8: .line 141
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         9: iload 4
            iload 5
            if_icmplt 2
        10: .line 149
            iconst_0
            ireturn
        end local 2 // java.lang.String soundFileName
        end local 1 // android.media.MediaActionSound$SoundState sound
        end local 0 // android.media.MediaActionSound this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Landroid/media/MediaActionSound;
            0   11     1          sound  Landroid/media/MediaActionSound$SoundState;
            1   11     2  soundFileName  Ljava/lang/String;
            3    8     3       soundDir  Ljava/lang/String;
            4    8     7             id  I
    MethodParameters:
       Name  Flags
      sound  

  public void load(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // android.media.MediaActionSound this
        start local 1 // int soundName
         0: .line 165
            iload 1 /* soundName */
            iflt 1
            iload 1 /* soundName */
            getstatic android.media.MediaActionSound.SOUND_FILES:[Ljava/lang/String;
            arraylength
            if_icmplt 2
         1: .line 166
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown sound requested: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* soundName */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 168
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSounds:[Landroid/media/MediaActionSound$SoundState;
            iload 1 /* soundName */
            aaload
            astore 2 /* sound */
        start local 2 // android.media.MediaActionSound$SoundState sound
         3: .line 169
            aload 2 /* sound */
            dup
            astore 3
            monitorenter
         4: .line 170
            aload 2 /* sound */
            getfield android.media.MediaActionSound$SoundState.state:I
            tableswitch { // 0 - 0
                    0: 5
              default: 8
          }
         5: .line 172
      StackMap locals: android.media.MediaActionSound$SoundState android.media.MediaActionSound$SoundState
      StackMap stack:
            aload 0 /* this */
            aload 2 /* sound */
            invokevirtual android.media.MediaActionSound.loadSound:(Landroid/media/MediaActionSound$SoundState;)I
            ifgt 9
         6: .line 173
            ldc "MediaActionSound"
            new java.lang.StringBuilder
            dup
            ldc "load() error loading sound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* soundName */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         7: .line 175
            goto 9
         8: .line 177
      StackMap locals:
      StackMap stack:
            ldc "MediaActionSound"
            new java.lang.StringBuilder
            dup
            ldc "load() called in wrong state: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* sound */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " for sound: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* soundName */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         9: .line 169
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 3
            monitorexit
        12: athrow
        13: .line 181
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.media.MediaActionSound$SoundState sound
        end local 1 // int soundName
        end local 0 // android.media.MediaActionSound this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Landroid/media/MediaActionSound;
            0   14     1  soundName  I
            3   14     2      sound  Landroid/media/MediaActionSound$SoundState;
      Exception table:
        from    to  target  type
           4    10      11  any
          11    12      11  any
    MethodParameters:
           Name  Flags
      soundName  

  public void play(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // android.media.MediaActionSound this
        start local 1 // int soundName
         0: .line 215
            iload 1 /* soundName */
            iflt 1
            iload 1 /* soundName */
            getstatic android.media.MediaActionSound.SOUND_FILES:[Ljava/lang/String;
            arraylength
            if_icmplt 2
         1: .line 216
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown sound requested: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* soundName */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSounds:[Landroid/media/MediaActionSound$SoundState;
            iload 1 /* soundName */
            aaload
            astore 2 /* sound */
        start local 2 // android.media.MediaActionSound$SoundState sound
         3: .line 219
            aload 2 /* sound */
            dup
            astore 3
            monitorenter
         4: .line 220
            aload 2 /* sound */
            getfield android.media.MediaActionSound$SoundState.state:I
            tableswitch { // 0 - 3
                    0: 5
                    1: 9
                    2: 13
                    3: 11
              default: 13
          }
         5: .line 222
      StackMap locals: android.media.MediaActionSound$SoundState android.media.MediaActionSound$SoundState
      StackMap stack:
            aload 0 /* this */
            aload 2 /* sound */
            invokevirtual android.media.MediaActionSound.loadSound:(Landroid/media/MediaActionSound$SoundState;)I
            pop
         6: .line 223
            aload 0 /* this */
            aload 2 /* sound */
            invokevirtual android.media.MediaActionSound.loadSound:(Landroid/media/MediaActionSound$SoundState;)I
            ifgt 9
         7: .line 224
            ldc "MediaActionSound"
            new java.lang.StringBuilder
            dup
            ldc "play() error loading sound: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* soundName */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         8: .line 225
            goto 14
         9: .line 230
      StackMap locals:
      StackMap stack:
            aload 2 /* sound */
            iconst_2
            putfield android.media.MediaActionSound$SoundState.state:I
        10: .line 231
            goto 14
        11: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSoundPool:Landroid/media/SoundPool;
            aload 2 /* sound */
            getfield android.media.MediaActionSound$SoundState.id:I
            fconst_1
            fconst_1
            iconst_0
            iconst_0
            fconst_1
            invokevirtual android.media.SoundPool.play:(IFFIIF)I
            pop
        12: .line 234
            goto 14
        13: .line 236
      StackMap locals:
      StackMap stack:
            ldc "MediaActionSound"
            new java.lang.StringBuilder
            dup
            ldc "play() called in wrong state: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* sound */
            getfield android.media.MediaActionSound$SoundState.state:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " for sound: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* soundName */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        14: .line 219
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 3
            monitorexit
        17: athrow
        18: .line 240
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.media.MediaActionSound$SoundState sound
        end local 1 // int soundName
        end local 0 // android.media.MediaActionSound this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0       this  Landroid/media/MediaActionSound;
            0   19     1  soundName  I
            3   19     2      sound  Landroid/media/MediaActionSound$SoundState;
      Exception table:
        from    to  target  type
           4    15      16  any
          16    17      16  any
    MethodParameters:
           Name  Flags
      soundName  

  public void release();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // android.media.MediaActionSound this
         0: .line 287
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSoundPool:Landroid/media/SoundPool;
            ifnull 14
         1: .line 288
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSounds:[Landroid/media/MediaActionSound$SoundState;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 11
      StackMap locals: android.media.MediaActionSound top int int android.media.MediaActionSound$SoundState[]
      StackMap stack:
         2: aload 4
            iload 2
            aaload
            astore 1 /* sound */
        start local 1 // android.media.MediaActionSound$SoundState sound
         3: .line 289
            aload 1 /* sound */
            dup
            astore 5
            monitorenter
         4: .line 290
            aload 1 /* sound */
            iconst_0
            putfield android.media.MediaActionSound$SoundState.state:I
         5: .line 291
            aload 1 /* sound */
            iconst_0
            putfield android.media.MediaActionSound$SoundState.id:I
         6: .line 289
            aload 5
            monitorexit
         7: goto 10
      StackMap locals: android.media.MediaActionSound android.media.MediaActionSound$SoundState int int android.media.MediaActionSound$SoundState[] android.media.MediaActionSound$SoundState
      StackMap stack: java.lang.Throwable
         8: aload 5
            monitorexit
         9: athrow
        end local 1 // android.media.MediaActionSound$SoundState sound
        10: .line 288
      StackMap locals: android.media.MediaActionSound top int int android.media.MediaActionSound$SoundState[]
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
        11: iload 2
            iload 3
            if_icmplt 2
        12: .line 294
            aload 0 /* this */
            getfield android.media.MediaActionSound.mSoundPool:Landroid/media/SoundPool;
            invokevirtual android.media.SoundPool.release:()V
        13: .line 295
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaActionSound.mSoundPool:Landroid/media/SoundPool;
        14: .line 297
      StackMap locals: android.media.MediaActionSound
      StackMap stack:
            return
        end local 0 // android.media.MediaActionSound this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Landroid/media/MediaActionSound;
            3   10     1  sound  Landroid/media/MediaActionSound$SoundState;
      Exception table:
        from    to  target  type
           4     7       8  any
           8     9       8  any
}
SourceFile: "MediaActionSound.java"
NestMembers:
  android.media.MediaActionSound$1  android.media.MediaActionSound$SoundState
InnerClasses:
  public Builder = android.media.AudioAttributes$Builder of android.media.AudioAttributes
  android.media.MediaActionSound$1
  private SoundState = android.media.MediaActionSound$SoundState of android.media.MediaActionSound
  public Builder = android.media.SoundPool$Builder of android.media.SoundPool
  public abstract OnLoadCompleteListener = android.media.SoundPool$OnLoadCompleteListener of android.media.SoundPool