public class android.media.MediaRecorder implements android.media.AudioRouting
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.media.MediaRecorder
  super_class: java.lang.Object
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "MediaRecorder"

  private long mNativeContext;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private android.view.Surface mSurface;
    descriptor: Landroid/view/Surface;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String mPath;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.io.FileDescriptor mFd;
    descriptor: Ljava/io/FileDescriptor;
    flags: (0x0002) ACC_PRIVATE

  private java.io.File mFile;
    descriptor: Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE

  private android.media.MediaRecorder$EventHandler mEventHandler;
    descriptor: Landroid/media/MediaRecorder$EventHandler;
    flags: (0x0002) ACC_PRIVATE

  private android.media.MediaRecorder$OnErrorListener mOnErrorListener;
    descriptor: Landroid/media/MediaRecorder$OnErrorListener;
    flags: (0x0002) ACC_PRIVATE

  private android.media.MediaRecorder$OnInfoListener mOnInfoListener;
    descriptor: Landroid/media/MediaRecorder$OnInfoListener;
    flags: (0x0002) ACC_PRIVATE

  private int mChannelCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private android.media.AudioDeviceInfo mPreferredDevice;
    descriptor: Landroid/media/AudioDeviceInfo;
    flags: (0x0002) ACC_PRIVATE

  private android.util.ArrayMap<android.media.AudioRouting$OnRoutingChangedListener, android.media.NativeRoutingEventHandlerDelegate> mRoutingChangeListeners;
    descriptor: Landroid/util/ArrayMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Landroid/util/ArrayMap<Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/media/NativeRoutingEventHandlerDelegate;>;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.GuardedBy(value = "mRoutingChangeListeners")

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 90
            ldc "media_jni"
            invokestatic java.lang.System.loadLibrary:(Ljava/lang/String;)V
         1: .line 91
            invokestatic android.media.MediaRecorder.native_init:()V
         2: .line 1202
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 114
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1303
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mPreferredDevice:Landroid/media/AudioDeviceInfo;
         2: .line 1378
            aload 0 /* this */
            new android.util.ArrayMap
            dup
            invokespecial android.util.ArrayMap.<init>:()V
            putfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
         3: .line 117
            invokestatic android.os.Looper.myLooper:()Landroid/os/Looper;
            dup
            astore 1 /* looper */
        start local 1 // android.os.Looper looper
         4: ifnull 7
         5: .line 118
            aload 0 /* this */
            new android.media.MediaRecorder$EventHandler
            dup
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* looper */
            invokespecial android.media.MediaRecorder$EventHandler.<init>:(Landroid/media/MediaRecorder;Landroid/media/MediaRecorder;Landroid/os/Looper;)V
            putfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
         6: .line 119
            goto 11
      StackMap locals: android.media.MediaRecorder android.os.Looper
      StackMap stack:
         7: invokestatic android.os.Looper.getMainLooper:()Landroid/os/Looper;
            dup
            astore 1 /* looper */
            ifnull 10
         8: .line 120
            aload 0 /* this */
            new android.media.MediaRecorder$EventHandler
            dup
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* looper */
            invokespecial android.media.MediaRecorder$EventHandler.<init>:(Landroid/media/MediaRecorder;Landroid/media/MediaRecorder;Landroid/os/Looper;)V
            putfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
         9: .line 121
            goto 11
        10: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
        11: .line 125
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaRecorder.mChannelCount:I
        12: .line 126
            invokestatic android.app.ActivityThread.currentPackageName:()Ljava/lang/String;
            astore 2 /* packageName */
        start local 2 // java.lang.String packageName
        13: .line 130
            aload 0 /* this */
            new java.lang.ref.WeakReference
            dup
            aload 0 /* this */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            aload 2 /* packageName */
        14: .line 131
            invokestatic android.app.ActivityThread.currentOpPackageName:()Ljava/lang/String;
        15: .line 130
            invokevirtual android.media.MediaRecorder.native_setup:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V
        16: .line 132
            return
        end local 2 // java.lang.String packageName
        end local 1 // android.os.Looper looper
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Landroid/media/MediaRecorder;
            4   17     1       looper  Landroid/os/Looper;
           13   17     2  packageName  Ljava/lang/String;

  public native void setCamera(android.hardware.Camera);
    descriptor: (Landroid/hardware/Camera;)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      c     

  public native android.view.Surface getSurface();
    descriptor: ()Landroid/view/Surface;
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  public void setInputSurface(android.view.Surface);
    descriptor: (Landroid/view/Surface;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.view.Surface surface
         0: .line 175
            aload 1 /* surface */
            instanceof android.media.MediaCodec$PersistentSurface
            ifne 2
         1: .line 176
            new java.lang.IllegalArgumentException
            dup
            ldc "not a PersistentSurface"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* surface */
            invokevirtual android.media.MediaRecorder.native_setInputSurface:(Landroid/view/Surface;)V
         3: .line 179
            return
        end local 1 // android.view.Surface surface
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Landroid/media/MediaRecorder;
            0    4     1  surface  Landroid/view/Surface;
    MethodParameters:
         Name  Flags
      surface  

  private final native void native_setInputSurface(android.view.Surface);
    descriptor: (Landroid/view/Surface;)V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
         Name  Flags
      surface  

  public void setPreviewDisplay(android.view.Surface);
    descriptor: (Landroid/view/Surface;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.view.Surface sv
         0: .line 197
            aload 0 /* this */
            aload 1 /* sv */
            putfield android.media.MediaRecorder.mSurface:Landroid/view/Surface;
         1: .line 198
            return
        end local 1 // android.view.Surface sv
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/MediaRecorder;
            0    2     1    sv  Landroid/view/Surface;
    MethodParameters:
      Name  Flags
      sv    

  public static boolean isSystemOnlyAudioSource(int);
    descriptor: (I)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int source
         0: .line 323
            iload 0 /* source */
            tableswitch { // 0 - 9
                    0: 1
                    1: 1
                    2: 1
                    3: 1
                    4: 1
                    5: 1
                    6: 1
                    7: 1
                    8: 2
                    9: 1
              default: 2
          }
         1: .line 334
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 336
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // int source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  source  I
    MethodParameters:
        Name  Flags
      source  

  public static final java.lang.String toLogFriendlyAudioSource(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int source
         0: .line 342
            iload 0 /* source */
            lookupswitch { // 13
                   -1: 13
                    0: 1
                    1: 2
                    2: 3
                    3: 4
                    4: 5
                    5: 6
                    6: 7
                    7: 8
                    8: 9
                    9: 10
                 1998: 11
                 1999: 12
              default: 14
          }
         1: .line 344
      StackMap locals:
      StackMap stack:
            ldc "DEFAULT"
            areturn
         2: .line 346
      StackMap locals:
      StackMap stack:
            ldc "MIC"
            areturn
         3: .line 348
      StackMap locals:
      StackMap stack:
            ldc "VOICE_UPLINK"
            areturn
         4: .line 350
      StackMap locals:
      StackMap stack:
            ldc "VOICE_DOWNLINK"
            areturn
         5: .line 352
      StackMap locals:
      StackMap stack:
            ldc "VOICE_CALL"
            areturn
         6: .line 354
      StackMap locals:
      StackMap stack:
            ldc "CAMCORDER"
            areturn
         7: .line 356
      StackMap locals:
      StackMap stack:
            ldc "VOICE_RECOGNITION"
            areturn
         8: .line 358
      StackMap locals:
      StackMap stack:
            ldc "VOICE_COMMUNICATION"
            areturn
         9: .line 360
      StackMap locals:
      StackMap stack:
            ldc "REMOTE_SUBMIX"
            areturn
        10: .line 362
      StackMap locals:
      StackMap stack:
            ldc "UNPROCESSED"
            areturn
        11: .line 364
      StackMap locals:
      StackMap stack:
            ldc "RADIO_TUNER"
            areturn
        12: .line 366
      StackMap locals:
      StackMap stack:
            ldc "HOTWORD"
            areturn
        13: .line 368
      StackMap locals:
      StackMap stack:
            ldc "AUDIO_SOURCE_INVALID"
            areturn
        14: .line 370
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "unknown source "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* source */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // int source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0  source  I
    MethodParameters:
        Name  Flags
      source  

  public native void setAudioSource(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
              Name  Flags
      audio_source  

  public static final int getAudioSourceMax();
    descriptor: ()I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Code:
      stack=1, locals=0, args_size=0
         0: .line 507
            bipush 9
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public native void setVideoSource(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
              Name  Flags
      video_source  

  public void setProfile(android.media.CamcorderProfile);
    descriptor: (Landroid/media/CamcorderProfile;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.media.CamcorderProfile profile
         0: .line 533
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.fileFormat:I
            invokevirtual android.media.MediaRecorder.setOutputFormat:(I)V
         1: .line 534
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.videoFrameRate:I
            invokevirtual android.media.MediaRecorder.setVideoFrameRate:(I)V
         2: .line 535
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.videoFrameWidth:I
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.videoFrameHeight:I
            invokevirtual android.media.MediaRecorder.setVideoSize:(II)V
         3: .line 536
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.videoBitRate:I
            invokevirtual android.media.MediaRecorder.setVideoEncodingBitRate:(I)V
         4: .line 537
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.videoCodec:I
            invokevirtual android.media.MediaRecorder.setVideoEncoder:(I)V
         5: .line 538
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.quality:I
            sipush 1000
            if_icmplt 7
         6: .line 539
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.quality:I
            sipush 1007
            if_icmple 11
         7: .line 543
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.audioBitRate:I
            invokevirtual android.media.MediaRecorder.setAudioEncodingBitRate:(I)V
         8: .line 544
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.audioChannels:I
            invokevirtual android.media.MediaRecorder.setAudioChannels:(I)V
         9: .line 545
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.audioSampleRate:I
            invokevirtual android.media.MediaRecorder.setAudioSamplingRate:(I)V
        10: .line 546
            aload 0 /* this */
            aload 1 /* profile */
            getfield android.media.CamcorderProfile.audioCodec:I
            invokevirtual android.media.MediaRecorder.setAudioEncoder:(I)V
        11: .line 548
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.CamcorderProfile profile
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Landroid/media/MediaRecorder;
            0   12     1  profile  Landroid/media/CamcorderProfile;
    MethodParameters:
         Name  Flags
      profile  

  public void setCaptureRate(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // double fps
         0: .line 568
            aload 0 /* this */
            ldc "time-lapse-enable=1"
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         1: .line 569
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "time-lapse-fps="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            dload 1 /* fps */
            invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         2: .line 570
            return
        end local 1 // double fps
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/MediaRecorder;
            0    3     1   fps  D
    MethodParameters:
      Name  Flags
      fps   

  public void setOrientationHint(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // int degrees
         0: .line 588
            iload 1 /* degrees */
            ifeq 5
         1: .line 589
            iload 1 /* degrees */
            bipush 90
            if_icmpeq 5
         2: .line 590
            iload 1 /* degrees */
            sipush 180
            if_icmpeq 5
         3: .line 591
            iload 1 /* degrees */
            sipush 270
            if_icmpeq 5
         4: .line 592
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported angle: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* degrees */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 594
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "video-param-rotation-angle-degrees="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* degrees */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         6: .line 595
            return
        end local 1 // int degrees
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Landroid/media/MediaRecorder;
            0    7     1  degrees  I
    MethodParameters:
         Name  Flags
      degrees  

  public void setLocation(float, float);
    descriptor: (FF)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // android.media.MediaRecorder this
        start local 1 // float latitude
        start local 2 // float longitude
         0: .line 614
            fload 1 /* latitude */
            ldc 10000.0
            fmul
            f2d
            ldc 0.5
            dadd
            d2i
            istore 3 /* latitudex10000 */
        start local 3 // int latitudex10000
         1: .line 615
            fload 2 /* longitude */
            ldc 10000.0
            fmul
            f2d
            ldc 0.5
            dadd
            d2i
            istore 4 /* longitudex10000 */
        start local 4 // int longitudex10000
         2: .line 617
            iload 3 /* latitudex10000 */
            ldc 900000
            if_icmpgt 3
            iload 3 /* latitudex10000 */
            ldc -900000
            if_icmpge 5
         3: .line 618
      StackMap locals: int int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Latitude: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            fload 1 /* latitude */
            invokevirtual java.lang.StringBuilder.append:(F)Ljava/lang/StringBuilder;
            ldc " out of range."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* msg */
        start local 5 // java.lang.String msg
         4: .line 619
            new java.lang.IllegalArgumentException
            dup
            aload 5 /* msg */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.String msg
         5: .line 621
      StackMap locals:
      StackMap stack:
            iload 4 /* longitudex10000 */
            ldc 1800000
            if_icmpgt 6
            iload 4 /* longitudex10000 */
            ldc -1800000
            if_icmpge 8
         6: .line 622
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Longitude: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            fload 2 /* longitude */
            invokevirtual java.lang.StringBuilder.append:(F)Ljava/lang/StringBuilder;
            ldc " out of range"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* msg */
        start local 5 // java.lang.String msg
         7: .line 623
            new java.lang.IllegalArgumentException
            dup
            aload 5 /* msg */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.String msg
         8: .line 626
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "param-geotag-latitude="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* latitudex10000 */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         9: .line 627
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "param-geotag-longitude="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* longitudex10000 */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
        10: .line 628
            return
        end local 4 // int longitudex10000
        end local 3 // int latitudex10000
        end local 2 // float longitude
        end local 1 // float latitude
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Landroid/media/MediaRecorder;
            0   11     1         latitude  F
            0   11     2        longitude  F
            1   11     3   latitudex10000  I
            2   11     4  longitudex10000  I
            4    5     5              msg  Ljava/lang/String;
            7    8     5              msg  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      latitude   
      longitude  

  public native void setOutputFormat(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
               Name  Flags
      output_format  

  public native void setVideoSize(int, int);
    descriptor: (II)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
        Name  Flags
      width   
      height  

  public native void setVideoFrameRate(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
      Name  Flags
      rate  

  public native void setMaxDuration(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
                 Name  Flags
      max_duration_ms  

  public native void setMaxFileSize(long);
    descriptor: (J)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
                    Name  Flags
      max_filesize_bytes  

  public native void setAudioEncoder(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
               Name  Flags
      audio_encoder  

  public native void setVideoEncoder(int);
    descriptor: (I)V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
               Name  Flags
      video_encoder  

  public void setAudioSamplingRate(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // int samplingRate
         0: .line 744
            iload 1 /* samplingRate */
            ifgt 2
         1: .line 745
            new java.lang.IllegalArgumentException
            dup
            ldc "Audio sampling rate is not positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 747
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "audio-param-sampling-rate="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* samplingRate */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         3: .line 748
            return
        end local 1 // int samplingRate
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Landroid/media/MediaRecorder;
            0    4     1  samplingRate  I
    MethodParameters:
              Name  Flags
      samplingRate  

  public void setAudioChannels(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // int numChannels
         0: .line 759
            iload 1 /* numChannels */
            ifgt 2
         1: .line 760
            new java.lang.IllegalArgumentException
            dup
            ldc "Number of channels is not positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 762
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* numChannels */
            putfield android.media.MediaRecorder.mChannelCount:I
         3: .line 763
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "audio-param-number-of-channels="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* numChannels */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         4: .line 764
            return
        end local 1 // int numChannels
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Landroid/media/MediaRecorder;
            0    5     1  numChannels  I
    MethodParameters:
             Name  Flags
      numChannels  

  public void setAudioEncodingBitRate(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // int bitRate
         0: .line 776
            iload 1 /* bitRate */
            ifgt 2
         1: .line 777
            new java.lang.IllegalArgumentException
            dup
            ldc "Audio encoding bit rate is not positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 779
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "audio-param-encoding-bitrate="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* bitRate */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         3: .line 780
            return
        end local 1 // int bitRate
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Landroid/media/MediaRecorder;
            0    4     1  bitRate  I
    MethodParameters:
         Name  Flags
      bitRate  

  public void setVideoEncodingBitRate(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // int bitRate
         0: .line 792
            iload 1 /* bitRate */
            ifgt 2
         1: .line 793
            new java.lang.IllegalArgumentException
            dup
            ldc "Video encoding bit rate is not positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 795
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "video-param-encoding-bitrate="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* bitRate */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         3: .line 796
            return
        end local 1 // int bitRate
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Landroid/media/MediaRecorder;
            0    4     1  bitRate  I
    MethodParameters:
         Name  Flags
      bitRate  

  public void setVideoEncodingProfileLevel(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // android.media.MediaRecorder this
        start local 1 // int profile
        start local 2 // int level
         0: .line 814
            iload 1 /* profile */
            ifgt 2
         1: .line 815
            new java.lang.IllegalArgumentException
            dup
            ldc "Video encoding profile is not positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 817
      StackMap locals:
      StackMap stack:
            iload 2 /* level */
            ifgt 4
         3: .line 818
            new java.lang.IllegalArgumentException
            dup
            ldc "Video encoding level is not positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 820
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "video-param-encoder-profile="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* profile */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         5: .line 821
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "video-param-encoder-level="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* level */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual android.media.MediaRecorder.setParameter:(Ljava/lang/String;)V
         6: .line 822
            return
        end local 2 // int level
        end local 1 // int profile
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Landroid/media/MediaRecorder;
            0    7     1  profile  I
            0    7     2    level  I
    MethodParameters:
         Name  Flags
      profile  
      level    

  public void setAuxiliaryOutputFile(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // java.io.FileDescriptor fd
         0: .line 832
            ldc "MediaRecorder"
            ldc "setAuxiliaryOutputFile(FileDescriptor) is no longer supported."
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         1: .line 833
            return
        end local 1 // java.io.FileDescriptor fd
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/MediaRecorder;
            0    2     1    fd  Ljava/io/FileDescriptor;
    MethodParameters:
      Name  Flags
      fd    

  public void setAuxiliaryOutputFile(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // java.lang.String path
         0: .line 843
            ldc "MediaRecorder"
            ldc "setAuxiliaryOutputFile(String) is no longer supported."
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         1: .line 844
            return
        end local 1 // java.lang.String path
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/MediaRecorder;
            0    2     1  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  

  public void setOutputFile(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // java.io.FileDescriptor fd
         0: .line 856
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mPath:Ljava/lang/String;
         1: .line 857
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mFile:Ljava/io/File;
         2: .line 858
            aload 0 /* this */
            aload 1 /* fd */
            putfield android.media.MediaRecorder.mFd:Ljava/io/FileDescriptor;
         3: .line 859
            return
        end local 1 // java.io.FileDescriptor fd
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/media/MediaRecorder;
            0    4     1    fd  Ljava/io/FileDescriptor;
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
      Name  Flags
      fd    

  public void setOutputFile(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // java.io.File file
         0: .line 871
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mPath:Ljava/lang/String;
         1: .line 872
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mFd:Ljava/io/FileDescriptor;
         2: .line 873
            aload 0 /* this */
            aload 1 /* file */
            putfield android.media.MediaRecorder.mFile:Ljava/io/File;
         3: .line 874
            return
        end local 1 // java.io.File file
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/media/MediaRecorder;
            0    4     1  file  Ljava/io/File;
    MethodParameters:
      Name  Flags
      file  

  public void setNextOutputFile(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // java.io.FileDescriptor fd
         0: .line 897
            aload 0 /* this */
            aload 1 /* fd */
            invokevirtual android.media.MediaRecorder._setNextOutputFile:(Ljava/io/FileDescriptor;)V
         1: .line 898
            return
        end local 1 // java.io.FileDescriptor fd
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/MediaRecorder;
            0    2     1    fd  Ljava/io/FileDescriptor;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  public void setOutputFile(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // java.lang.String path
         0: .line 910
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mFd:Ljava/io/FileDescriptor;
         1: .line 911
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaRecorder.mFile:Ljava/io/File;
         2: .line 912
            aload 0 /* this */
            aload 1 /* path */
            putfield android.media.MediaRecorder.mPath:Ljava/lang/String;
         3: .line 913
            return
        end local 1 // java.lang.String path
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/media/MediaRecorder;
            0    4     1  path  Ljava/lang/String;
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
      Name  Flags
      path  

  public void setNextOutputFile(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // java.io.File file
         0: .line 934
            new java.io.RandomAccessFile
            dup
            aload 1 /* file */
            ldc "rw"
            invokespecial java.io.RandomAccessFile.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 2 /* f */
        start local 2 // java.io.RandomAccessFile f
         1: .line 936
            aload 0 /* this */
            aload 2 /* f */
            invokevirtual java.io.RandomAccessFile.getFD:()Ljava/io/FileDescriptor;
            invokevirtual android.media.MediaRecorder._setNextOutputFile:(Ljava/io/FileDescriptor;)V
         2: .line 937
            goto 6
      StackMap locals: android.media.MediaRecorder java.io.File java.io.RandomAccessFile
      StackMap stack: java.lang.Throwable
         3: astore 3
         4: .line 938
            aload 2 /* f */
            invokevirtual java.io.RandomAccessFile.close:()V
         5: .line 939
            aload 3
            athrow
         6: .line 938
      StackMap locals:
      StackMap stack:
            aload 2 /* f */
            invokevirtual java.io.RandomAccessFile.close:()V
         7: .line 940
            return
        end local 2 // java.io.RandomAccessFile f
        end local 1 // java.io.File file
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/media/MediaRecorder;
            0    8     1  file  Ljava/io/File;
            1    8     2     f  Ljava/io/RandomAccessFile;
      Exception table:
        from    to  target  type
           1     3       3  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  private native void _setOutputFile(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException, java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  private native void _setNextOutputFile(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException, java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  private native void _prepare();
    descriptor: ()V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException, java.io.IOException

  public void prepare();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 958
            aload 0 /* this */
            getfield android.media.MediaRecorder.mPath:Ljava/lang/String;
            ifnull 9
         1: .line 959
            new java.io.RandomAccessFile
            dup
            aload 0 /* this */
            getfield android.media.MediaRecorder.mPath:Ljava/lang/String;
            ldc "rw"
            invokespecial java.io.RandomAccessFile.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 1 /* file */
        start local 1 // java.io.RandomAccessFile file
         2: .line 961
            aload 0 /* this */
            aload 1 /* file */
            invokevirtual java.io.RandomAccessFile.getFD:()Ljava/io/FileDescriptor;
            invokevirtual android.media.MediaRecorder._setOutputFile:(Ljava/io/FileDescriptor;)V
         3: .line 962
            goto 7
      StackMap locals: android.media.MediaRecorder java.io.RandomAccessFile
      StackMap stack: java.lang.Throwable
         4: astore 2
         5: .line 963
            aload 1 /* file */
            invokevirtual java.io.RandomAccessFile.close:()V
         6: .line 964
            aload 2
            athrow
         7: .line 963
      StackMap locals:
      StackMap stack:
            aload 1 /* file */
            invokevirtual java.io.RandomAccessFile.close:()V
        end local 1 // java.io.RandomAccessFile file
         8: .line 965
            goto 22
      StackMap locals:
      StackMap stack:
         9: aload 0 /* this */
            getfield android.media.MediaRecorder.mFd:Ljava/io/FileDescriptor;
            ifnull 12
        10: .line 966
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.MediaRecorder.mFd:Ljava/io/FileDescriptor;
            invokevirtual android.media.MediaRecorder._setOutputFile:(Ljava/io/FileDescriptor;)V
        11: .line 967
            goto 22
      StackMap locals:
      StackMap stack:
        12: aload 0 /* this */
            getfield android.media.MediaRecorder.mFile:Ljava/io/File;
            ifnull 21
        13: .line 968
            new java.io.RandomAccessFile
            dup
            aload 0 /* this */
            getfield android.media.MediaRecorder.mFile:Ljava/io/File;
            ldc "rw"
            invokespecial java.io.RandomAccessFile.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 1 /* file */
        start local 1 // java.io.RandomAccessFile file
        14: .line 970
            aload 0 /* this */
            aload 1 /* file */
            invokevirtual java.io.RandomAccessFile.getFD:()Ljava/io/FileDescriptor;
            invokevirtual android.media.MediaRecorder._setOutputFile:(Ljava/io/FileDescriptor;)V
        15: .line 971
            goto 19
      StackMap locals: android.media.MediaRecorder java.io.RandomAccessFile
      StackMap stack: java.lang.Throwable
        16: astore 2
        17: .line 972
            aload 1 /* file */
            invokevirtual java.io.RandomAccessFile.close:()V
        18: .line 973
            aload 2
            athrow
        19: .line 972
      StackMap locals:
      StackMap stack:
            aload 1 /* file */
            invokevirtual java.io.RandomAccessFile.close:()V
        end local 1 // java.io.RandomAccessFile file
        20: .line 974
            goto 22
        21: .line 975
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "No valid output file"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        22: .line 978
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.MediaRecorder._prepare:()V
        23: .line 979
            return
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   24     0  this  Landroid/media/MediaRecorder;
            2    8     1  file  Ljava/io/RandomAccessFile;
           14   20     1  file  Ljava/io/RandomAccessFile;
      Exception table:
        from    to  target  type
           2     4       4  any
          14    16      16  any
    Exceptions:
      throws java.lang.IllegalStateException, java.io.IOException

  public native void start();
    descriptor: ()V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException

  public native void stop();
    descriptor: ()V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException

  public native void pause();
    descriptor: ()V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException

  public native void resume();
    descriptor: ()V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 1040
            aload 0 /* this */
            invokevirtual android.media.MediaRecorder.native_reset:()V
         1: .line 1043
            aload 0 /* this */
            getfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
            aconst_null
            invokevirtual android.media.MediaRecorder$EventHandler.removeCallbacksAndMessages:(Ljava/lang/Object;)V
         2: .line 1044
            return
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/MediaRecorder;

  private native void native_reset();
    descriptor: ()V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE

  public native int getMaxAmplitude();
    descriptor: ()I
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException

  public void setOnErrorListener(android.media.MediaRecorder$OnErrorListener);
    descriptor: (Landroid/media/MediaRecorder$OnErrorListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.media.MediaRecorder$OnErrorListener l
         0: .line 1100
            aload 0 /* this */
            aload 1 /* l */
            putfield android.media.MediaRecorder.mOnErrorListener:Landroid/media/MediaRecorder$OnErrorListener;
         1: .line 1101
            return
        end local 1 // android.media.MediaRecorder$OnErrorListener l
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/MediaRecorder;
            0    2     1     l  Landroid/media/MediaRecorder$OnErrorListener;
    MethodParameters:
      Name  Flags
      l     

  public void setOnInfoListener(android.media.MediaRecorder$OnInfoListener);
    descriptor: (Landroid/media/MediaRecorder$OnInfoListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.media.MediaRecorder$OnInfoListener listener
         0: .line 1234
            aload 0 /* this */
            aload 1 /* listener */
            putfield android.media.MediaRecorder.mOnInfoListener:Landroid/media/MediaRecorder$OnInfoListener;
         1: .line 1235
            return
        end local 1 // android.media.MediaRecorder$OnInfoListener listener
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Landroid/media/MediaRecorder;
            0    2     1  listener  Landroid/media/MediaRecorder$OnInfoListener;
    MethodParameters:
          Name  Flags
      listener  

  public boolean setPreferredDevice(android.media.AudioDeviceInfo);
    descriptor: (Landroid/media/AudioDeviceInfo;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.media.AudioDeviceInfo deviceInfo
         0: .line 1315
            aload 1 /* deviceInfo */
            ifnull 2
            aload 1 /* deviceInfo */
            invokevirtual android.media.AudioDeviceInfo.isSource:()Z
            ifne 2
         1: .line 1316
            iconst_0
            ireturn
         2: .line 1318
      StackMap locals:
      StackMap stack:
            aload 1 /* deviceInfo */
            ifnull 3
            aload 1 /* deviceInfo */
            invokevirtual android.media.AudioDeviceInfo.getId:()I
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 2 /* preferredDeviceId */
        start local 2 // int preferredDeviceId
         5: .line 1319
            aload 0 /* this */
            iload 2 /* preferredDeviceId */
            invokevirtual android.media.MediaRecorder.native_setInputDevice:(I)Z
            istore 3 /* status */
        start local 3 // boolean status
         6: .line 1320
            iload 3 /* status */
            ifeq 13
         7: .line 1321
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         8: .line 1322
            aload 0 /* this */
            aload 1 /* deviceInfo */
            putfield android.media.MediaRecorder.mPreferredDevice:Landroid/media/AudioDeviceInfo;
         9: .line 1321
            aload 4
            monitorexit
        10: goto 13
      StackMap locals: android.media.MediaRecorder android.media.AudioDeviceInfo int int android.media.MediaRecorder
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        13: .line 1325
      StackMap locals:
      StackMap stack:
            iload 3 /* status */
            ireturn
        end local 3 // boolean status
        end local 2 // int preferredDeviceId
        end local 1 // android.media.AudioDeviceInfo deviceInfo
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0               this  Landroid/media/MediaRecorder;
            0   14     1         deviceInfo  Landroid/media/AudioDeviceInfo;
            5   14     2  preferredDeviceId  I
            6   14     3             status  Z
      Exception table:
        from    to  target  type
           8    10      11  any
          11    12      11  any
    MethodParameters:
            Name  Flags
      deviceInfo  

  public android.media.AudioDeviceInfo getPreferredDevice();
    descriptor: ()Landroid/media/AudioDeviceInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 1334
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 1335
            aload 0 /* this */
            getfield android.media.MediaRecorder.mPreferredDevice:Landroid/media/AudioDeviceInfo;
            aload 1
            monitorexit
         2: areturn
         3: .line 1334
      StackMap locals: android.media.MediaRecorder android.media.MediaRecorder
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/media/MediaRecorder;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public android.media.AudioDeviceInfo getRoutedDevice();
    descriptor: ()Landroid/media/AudioDeviceInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 1347
            aload 0 /* this */
            invokevirtual android.media.MediaRecorder.native_getRoutedDeviceId:()I
            istore 1 /* deviceId */
        start local 1 // int deviceId
         1: .line 1348
            iload 1 /* deviceId */
            ifne 3
         2: .line 1349
            aconst_null
            areturn
         3: .line 1352
      StackMap locals: int
      StackMap stack:
            iconst_1
            invokestatic android.media.AudioManager.getDevicesStatic:(I)[Landroid/media/AudioDeviceInfo;
         4: .line 1351
            astore 2 /* devices */
        start local 2 // android.media.AudioDeviceInfo[] devices
         5: .line 1353
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         6: goto 10
         7: .line 1354
      StackMap locals: android.media.AudioDeviceInfo[] int
      StackMap stack:
            aload 2 /* devices */
            iload 3 /* i */
            aaload
            invokevirtual android.media.AudioDeviceInfo.getId:()I
            iload 1 /* deviceId */
            if_icmpne 9
         8: .line 1355
            aload 2 /* devices */
            iload 3 /* i */
            aaload
            areturn
         9: .line 1353
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 2 /* devices */
            arraylength
            if_icmplt 7
        end local 3 // int i
        11: .line 1358
            aconst_null
            areturn
        end local 2 // android.media.AudioDeviceInfo[] devices
        end local 1 // int deviceId
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Landroid/media/MediaRecorder;
            1   12     1  deviceId  I
            5   12     2   devices  [Landroid/media/AudioDeviceInfo;
            6   11     3         i  I

  private void enableNativeRoutingCallbacksLocked(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // boolean enabled
         0: .line 1366
            aload 0 /* this */
            getfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.size:()I
            ifne 2
         1: .line 1367
            aload 0 /* this */
            iload 1 /* enabled */
            invokevirtual android.media.MediaRecorder.native_enableDeviceCallback:(Z)V
         2: .line 1369
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean enabled
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Landroid/media/MediaRecorder;
            0    3     1  enabled  Z
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.GuardedBy(value = "mRoutingChangeListeners")
    MethodParameters:
         Name  Flags
      enabled  

  public void addOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener, android.os.Handler);
    descriptor: (Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/os/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
        start local 2 // android.os.Handler handler
         0: .line 1391
            aload 0 /* this */
            getfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
            dup
            astore 3
            monitorenter
         1: .line 1392
            aload 1 /* listener */
            ifnull 10
            aload 0 /* this */
            getfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
            aload 1 /* listener */
            invokevirtual android.util.ArrayMap.containsKey:(Ljava/lang/Object;)Z
            ifne 10
         2: .line 1393
            aload 0 /* this */
            iconst_1
            invokevirtual android.media.MediaRecorder.enableNativeRoutingCallbacksLocked:(Z)V
         3: .line 1394
            aload 0 /* this */
            getfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
         4: .line 1395
            aload 1 /* listener */
         5: new android.media.NativeRoutingEventHandlerDelegate
            dup
            aload 0 /* this */
            aload 1 /* listener */
         6: .line 1396
            aload 2 /* handler */
            ifnull 7
            aload 2 /* handler */
            goto 8
      StackMap locals: android.media.MediaRecorder android.media.AudioRouting$OnRoutingChangedListener android.os.Handler android.util.ArrayMap
      StackMap stack: android.util.ArrayMap android.media.AudioRouting$OnRoutingChangedListener new 5 new 5 android.media.MediaRecorder android.media.AudioRouting$OnRoutingChangedListener
         7: aload 0 /* this */
            getfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
      StackMap locals: android.media.MediaRecorder android.media.AudioRouting$OnRoutingChangedListener android.os.Handler android.util.ArrayMap
      StackMap stack: android.util.ArrayMap android.media.AudioRouting$OnRoutingChangedListener new 5 new 5 android.media.MediaRecorder android.media.AudioRouting$OnRoutingChangedListener android.os.Handler
         8: invokespecial android.media.NativeRoutingEventHandlerDelegate.<init>:(Landroid/media/AudioRouting;Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/os/Handler;)V
         9: .line 1394
            invokevirtual android.util.ArrayMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 1391
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 3
            monitorexit
        13: athrow
        14: .line 1399
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.os.Handler handler
        end local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Landroid/media/MediaRecorder;
            0   15     1  listener  Landroid/media/AudioRouting$OnRoutingChangedListener;
            0   15     2   handler  Landroid/os/Handler;
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    MethodParameters:
          Name  Flags
      listener  
      handler   

  public void removeOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener);
    descriptor: (Landroid/media/AudioRouting$OnRoutingChangedListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.media.MediaRecorder this
        start local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
         0: .line 1409
            aload 0 /* this */
            getfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
            dup
            astore 2
            monitorenter
         1: .line 1410
            aload 0 /* this */
            getfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
            aload 1 /* listener */
            invokevirtual android.util.ArrayMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 1411
            aload 0 /* this */
            getfield android.media.MediaRecorder.mRoutingChangeListeners:Landroid/util/ArrayMap;
            aload 1 /* listener */
            invokevirtual android.util.ArrayMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 1412
            aload 0 /* this */
            iconst_0
            invokevirtual android.media.MediaRecorder.enableNativeRoutingCallbacksLocked:(Z)V
         4: .line 1409
      StackMap locals: android.util.ArrayMap
      StackMap stack:
            aload 2
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 1415
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Landroid/media/MediaRecorder;
            0    9     1  listener  Landroid/media/AudioRouting$OnRoutingChangedListener;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    MethodParameters:
          Name  Flags
      listener  

  private final native boolean native_setInputDevice(int);
    descriptor: (I)Z
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
          Name  Flags
      deviceId  

  private final native int native_getRoutedDeviceId();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_enableDeviceCallback(boolean);
    descriptor: (Z)V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
         Name  Flags
      enabled  

  public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 1433
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* activeMicrophones */
        start local 1 // java.util.ArrayList activeMicrophones
         1: .line 1434
            aload 0 /* this */
            aload 1 /* activeMicrophones */
            invokevirtual android.media.MediaRecorder.native_getActiveMicrophones:(Ljava/util/ArrayList;)I
            istore 2 /* status */
        start local 2 // int status
         2: .line 1435
            iload 2 /* status */
            ifeq 6
         3: .line 1436
            iload 2 /* status */
            bipush -3
            if_icmpeq 5
         4: .line 1437
            ldc "MediaRecorder"
            new java.lang.StringBuilder
            dup
            ldc "getActiveMicrophones failed:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* status */
            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
         5: .line 1439
      StackMap locals: java.util.ArrayList int
      StackMap stack:
            ldc "MediaRecorder"
            ldc "getActiveMicrophones failed, fallback on routed device info"
            invokestatic android.util.Log.i:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         6: .line 1441
      StackMap locals:
      StackMap stack:
            aload 1 /* activeMicrophones */
            invokestatic android.media.AudioManager.setPortIdForMicrophones:(Ljava/util/ArrayList;)V
         7: .line 1444
            aload 1 /* activeMicrophones */
            invokevirtual java.util.ArrayList.size:()I
            ifne 19
         8: .line 1445
            aload 0 /* this */
            invokevirtual android.media.MediaRecorder.getRoutedDevice:()Landroid/media/AudioDeviceInfo;
            astore 3 /* device */
        start local 3 // android.media.AudioDeviceInfo device
         9: .line 1446
            aload 3 /* device */
            ifnull 19
        10: .line 1447
            aload 3 /* device */
            invokestatic android.media.AudioManager.microphoneInfoFromAudioDeviceInfo:(Landroid/media/AudioDeviceInfo;)Landroid/media/MicrophoneInfo;
            astore 4 /* microphone */
        start local 4 // android.media.MicrophoneInfo microphone
        11: .line 1448
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* channelMapping */
        start local 5 // java.util.ArrayList channelMapping
        12: .line 1449
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        13: goto 16
        14: .line 1450
      StackMap locals: android.media.MediaRecorder java.util.ArrayList int android.media.AudioDeviceInfo android.media.MicrophoneInfo java.util.ArrayList int
      StackMap stack:
            aload 5 /* channelMapping */
            new android.util.Pair
            dup
            iload 6 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokespecial android.util.Pair.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        15: .line 1449
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 6 /* i */
            aload 0 /* this */
            getfield android.media.MediaRecorder.mChannelCount:I
            if_icmplt 14
        end local 6 // int i
        17: .line 1452
            aload 4 /* microphone */
            aload 5 /* channelMapping */
            invokevirtual android.media.MicrophoneInfo.setChannelMapping:(Ljava/util/List;)V
        18: .line 1453
            aload 1 /* activeMicrophones */
            aload 4 /* microphone */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.util.ArrayList channelMapping
        end local 4 // android.media.MicrophoneInfo microphone
        end local 3 // android.media.AudioDeviceInfo device
        19: .line 1456
      StackMap locals: android.media.MediaRecorder java.util.ArrayList int
      StackMap stack:
            aload 1 /* activeMicrophones */
            areturn
        end local 2 // int status
        end local 1 // java.util.ArrayList activeMicrophones
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   20     0               this  Landroid/media/MediaRecorder;
            1   20     1  activeMicrophones  Ljava/util/ArrayList<Landroid/media/MicrophoneInfo;>;
            2   20     2             status  I
            9   19     3             device  Landroid/media/AudioDeviceInfo;
           11   19     4         microphone  Landroid/media/MicrophoneInfo;
           12   19     5     channelMapping  Ljava/util/ArrayList<Landroid/util/Pair<Ljava/lang/Integer;Ljava/lang/Integer;>;>;
           13   17     6                  i  I
    Exceptions:
      throws java.io.IOException
    Signature: ()Ljava/util/List<Landroid/media/MicrophoneInfo;>;

  private final native int native_getActiveMicrophones(java.util.ArrayList<android.media.MicrophoneInfo>);
    descriptor: (Ljava/util/ArrayList;)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    Signature: (Ljava/util/ArrayList<Landroid/media/MicrophoneInfo;>;)I
    MethodParameters:
                   Name  Flags
      activeMicrophones  

  private static void postEventFromNative(java.lang.Object, int, int, int, java.lang.Object);
    descriptor: (Ljava/lang/Object;IIILjava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // java.lang.Object mediarecorder_ref
        start local 1 // int what
        start local 2 // int arg1
        start local 3 // int arg2
        start local 4 // java.lang.Object obj
         0: .line 1472
            aload 0 /* mediarecorder_ref */
            checkcast java.lang.ref.WeakReference
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast android.media.MediaRecorder
            astore 5 /* mr */
        start local 5 // android.media.MediaRecorder mr
         1: .line 1473
            aload 5 /* mr */
            ifnonnull 3
         2: .line 1474
            return
         3: .line 1477
      StackMap locals: android.media.MediaRecorder
      StackMap stack:
            aload 5 /* mr */
            getfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
            ifnull 6
         4: .line 1478
            aload 5 /* mr */
            getfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
            iload 1 /* what */
            iload 2 /* arg1 */
            iload 3 /* arg2 */
            aload 4 /* obj */
            invokevirtual android.media.MediaRecorder$EventHandler.obtainMessage:(IIILjava/lang/Object;)Landroid/os/Message;
            astore 6 /* m */
        start local 6 // android.os.Message m
         5: .line 1479
            aload 5 /* mr */
            getfield android.media.MediaRecorder.mEventHandler:Landroid/media/MediaRecorder$EventHandler;
            aload 6 /* m */
            invokevirtual android.media.MediaRecorder$EventHandler.sendMessage:(Landroid/os/Message;)Z
            pop
        end local 6 // android.os.Message m
         6: .line 1481
      StackMap locals:
      StackMap stack:
            return
        end local 5 // android.media.MediaRecorder mr
        end local 4 // java.lang.Object obj
        end local 3 // int arg2
        end local 2 // int arg1
        end local 1 // int what
        end local 0 // java.lang.Object mediarecorder_ref
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0  mediarecorder_ref  Ljava/lang/Object;
            0    7     1               what  I
            0    7     2               arg1  I
            0    7     3               arg2  I
            0    7     4                obj  Ljava/lang/Object;
            1    7     5                 mr  Landroid/media/MediaRecorder;
            5    6     6                  m  Landroid/os/Message;
    MethodParameters:
                   Name  Flags
      mediarecorder_ref  
      what               
      arg1               
      arg2               
      obj                

  public native void release();
    descriptor: ()V
    flags: (0x0101) ACC_PUBLIC, ACC_NATIVE

  private static final native void native_init();
    descriptor: ()V
    flags: (0x011a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_NATIVE

  private final native void native_setup(java.lang.Object, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
                    Name  Flags
      mediarecorder_this  
      clientName          
      opPackageName       

  private final native void native_finalize();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private native void setParameter(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
               Name  Flags
      nameValuePair  

  public android.os.PersistableBundle getMetrics();
    descriptor: ()Landroid/os/PersistableBundle;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 1524
            aload 0 /* this */
            invokevirtual android.media.MediaRecorder.native_getMetrics:()Landroid/os/PersistableBundle;
            astore 1 /* bundle */
        start local 1 // android.os.PersistableBundle bundle
         1: .line 1525
            aload 1 /* bundle */
            areturn
        end local 1 // android.os.PersistableBundle bundle
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/MediaRecorder;
            1    2     1  bundle  Landroid/os/PersistableBundle;

  private native android.os.PersistableBundle native_getMetrics();
    descriptor: ()Landroid/os/PersistableBundle;
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.MediaRecorder this
         0: .line 1531
            aload 0 /* this */
            invokevirtual android.media.MediaRecorder.native_finalize:()V
            return
        end local 0 // android.media.MediaRecorder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/MediaRecorder;
}
SourceFile: "MediaRecorder.java"
NestMembers:
  android.media.MediaRecorder$AudioEncoder  android.media.MediaRecorder$AudioSource  android.media.MediaRecorder$EventHandler  android.media.MediaRecorder$MetricsConstants  android.media.MediaRecorder$OnErrorListener  android.media.MediaRecorder$OnInfoListener  android.media.MediaRecorder$OutputFormat  android.media.MediaRecorder$VideoEncoder  android.media.MediaRecorder$VideoSource
InnerClasses:
  public abstract OnRoutingChangedListener = android.media.AudioRouting$OnRoutingChangedListener of android.media.AudioRouting
  PersistentSurface = android.media.MediaCodec$PersistentSurface of android.media.MediaCodec
  public final AudioEncoder = android.media.MediaRecorder$AudioEncoder of android.media.MediaRecorder
  public final AudioSource = android.media.MediaRecorder$AudioSource of android.media.MediaRecorder
  private EventHandler = android.media.MediaRecorder$EventHandler of android.media.MediaRecorder
  public final MetricsConstants = android.media.MediaRecorder$MetricsConstants of android.media.MediaRecorder
  public abstract OnErrorListener = android.media.MediaRecorder$OnErrorListener of android.media.MediaRecorder
  public abstract OnInfoListener = android.media.MediaRecorder$OnInfoListener of android.media.MediaRecorder
  public final OutputFormat = android.media.MediaRecorder$OutputFormat of android.media.MediaRecorder
  public final VideoEncoder = android.media.MediaRecorder$VideoEncoder of android.media.MediaRecorder
  public final VideoSource = android.media.MediaRecorder$VideoSource of android.media.MediaRecorder