class android.media.AudioPortEventHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.media.AudioPortEventHandler
  super_class: java.lang.Object
{
  private android.os.Handler mHandler;
    descriptor: Landroid/os/Handler;
    flags: (0x0002) ACC_PRIVATE

  private android.os.HandlerThread mHandlerThread;
    descriptor: Landroid/os/HandlerThread;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.ArrayList<android.media.AudioManager$OnAudioPortUpdateListener> mListeners;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Landroid/media/AudioManager$OnAudioPortUpdateListener;>;

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

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

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

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

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

  private static final long RESCHEDULE_MESSAGE_DELAY_MS;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 100

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

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.media.AudioPortEventHandler this
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 35
            aload 0 /* this */
         2: .line 36
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield android.media.AudioPortEventHandler.mListeners:Ljava/util/ArrayList;
         3: .line 32
            return
        end local 0 // android.media.AudioPortEventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/media/AudioPortEventHandler;

  void init();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // android.media.AudioPortEventHandler this
         0: .line 54
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 55
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandler:Landroid/os/Handler;
            ifnull 4
         2: .line 56
            aload 1
            monitorexit
         3: return
         4: .line 59
      StackMap locals: android.media.AudioPortEventHandler
      StackMap stack:
            aload 0 /* this */
            new android.os.HandlerThread
            dup
            ldc "AudioPortEventHandler"
            invokespecial android.os.HandlerThread.<init>:(Ljava/lang/String;)V
            putfield android.media.AudioPortEventHandler.mHandlerThread:Landroid/os/HandlerThread;
         5: .line 60
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.start:()V
         6: .line 62
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.getLooper:()Landroid/os/Looper;
            ifnull 10
         7: .line 63
            aload 0 /* this */
            new android.media.AudioPortEventHandler$1
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.getLooper:()Landroid/os/Looper;
            invokespecial android.media.AudioPortEventHandler$1.<init>:(Landroid/media/AudioPortEventHandler;Landroid/os/Looper;)V
            putfield android.media.AudioPortEventHandler.mHandler:Landroid/os/Handler;
         8: .line 134
            aload 0 /* this */
            new java.lang.ref.WeakReference
            dup
            aload 0 /* this */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            invokevirtual android.media.AudioPortEventHandler.native_setup:(Ljava/lang/Object;)V
         9: .line 135
            goto 11
        10: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioPortEventHandler.mHandler:Landroid/os/Handler;
        11: .line 54
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 1
            monitorexit
        14: athrow
        15: .line 139
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioPortEventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Landroid/media/AudioPortEventHandler;
      Exception table:
        from    to  target  type
           1     3      13  any
           4    12      13  any
          13    14      13  any

  private native void native_setup(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
             Name  Flags
      module_this  

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioPortEventHandler this
         0: .line 145
            aload 0 /* this */
            invokevirtual android.media.AudioPortEventHandler.native_finalize:()V
         1: .line 146
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.isAlive:()Z
            ifeq 3
         2: .line 147
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.quit:()Z
            pop
         3: .line 149
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioPortEventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/media/AudioPortEventHandler;

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

  void registerListener(android.media.AudioManager$OnAudioPortUpdateListener);
    descriptor: (Landroid/media/AudioManager$OnAudioPortUpdateListener;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // android.media.AudioPortEventHandler this
        start local 1 // android.media.AudioManager$OnAudioPortUpdateListener l
         0: .line 153
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 154
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mListeners:Ljava/util/ArrayList;
            aload 1 /* l */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         2: .line 153
            aload 2
            monitorexit
         3: goto 6
      StackMap locals: android.media.AudioPortEventHandler android.media.AudioManager$OnAudioPortUpdateListener android.media.AudioPortEventHandler
      StackMap stack: java.lang.Throwable
         4: aload 2
            monitorexit
         5: athrow
         6: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandler:Landroid/os/Handler;
            ifnull 9
         7: .line 157
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandler:Landroid/os/Handler;
            iconst_4
            iconst_0
            iconst_0
            aload 1 /* l */
            invokevirtual android.os.Handler.obtainMessage:(IIILjava/lang/Object;)Landroid/os/Message;
            astore 2 /* m */
        start local 2 // android.os.Message m
         8: .line 158
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandler:Landroid/os/Handler;
            aload 2 /* m */
            invokevirtual android.os.Handler.sendMessage:(Landroid/os/Message;)Z
            pop
        end local 2 // android.os.Message m
         9: .line 160
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.AudioManager$OnAudioPortUpdateListener l
        end local 0 // android.media.AudioPortEventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Landroid/media/AudioPortEventHandler;
            0   10     1     l  Landroid/media/AudioManager$OnAudioPortUpdateListener;
            8    9     2     m  Landroid/os/Message;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    MethodParameters:
      Name  Flags
      l     

  void unregisterListener(android.media.AudioManager$OnAudioPortUpdateListener);
    descriptor: (Landroid/media/AudioManager$OnAudioPortUpdateListener;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.media.AudioPortEventHandler this
        start local 1 // android.media.AudioManager$OnAudioPortUpdateListener l
         0: .line 163
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 164
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mListeners:Ljava/util/ArrayList;
            aload 1 /* l */
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
         2: .line 163
            aload 2
            monitorexit
         3: goto 6
      StackMap locals: android.media.AudioPortEventHandler android.media.AudioManager$OnAudioPortUpdateListener android.media.AudioPortEventHandler
      StackMap stack: java.lang.Throwable
         4: aload 2
            monitorexit
         5: athrow
         6: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.AudioManager$OnAudioPortUpdateListener l
        end local 0 // android.media.AudioPortEventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/media/AudioPortEventHandler;
            0    7     1     l  Landroid/media/AudioManager$OnAudioPortUpdateListener;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    MethodParameters:
      Name  Flags
      l     

  android.os.Handler handler();
    descriptor: ()Landroid/os/Handler;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioPortEventHandler this
         0: .line 169
            aload 0 /* this */
            getfield android.media.AudioPortEventHandler.mHandler:Landroid/os/Handler;
            areturn
        end local 0 // android.media.AudioPortEventHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioPortEventHandler;

  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=8, args_size=5
        start local 0 // java.lang.Object module_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 176
            aload 0 /* module_ref */
            checkcast java.lang.ref.WeakReference
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast android.media.AudioPortEventHandler
         1: .line 175
            astore 5 /* eventHandler */
        start local 5 // android.media.AudioPortEventHandler eventHandler
         2: .line 177
            aload 5 /* eventHandler */
            ifnonnull 4
         3: .line 178
            return
         4: .line 181
      StackMap locals: android.media.AudioPortEventHandler
      StackMap stack:
            aload 5 /* eventHandler */
            ifnull 11
         5: .line 182
            aload 5 /* eventHandler */
            invokevirtual android.media.AudioPortEventHandler.handler:()Landroid/os/Handler;
            astore 6 /* handler */
        start local 6 // android.os.Handler handler
         6: .line 183
            aload 6 /* handler */
            ifnull 11
         7: .line 184
            aload 6 /* handler */
            iload 1 /* what */
            iload 2 /* arg1 */
            iload 3 /* arg2 */
            aload 4 /* obj */
            invokevirtual android.os.Handler.obtainMessage:(IIILjava/lang/Object;)Landroid/os/Message;
            astore 7 /* m */
        start local 7 // android.os.Message m
         8: .line 185
            iload 1 /* what */
            iconst_4
            if_icmpeq 10
         9: .line 187
            aload 6 /* handler */
            iload 1 /* what */
            invokevirtual android.os.Handler.removeMessages:(I)V
        10: .line 189
      StackMap locals: android.os.Handler android.os.Message
      StackMap stack:
            aload 6 /* handler */
            aload 7 /* m */
            invokevirtual android.os.Handler.sendMessage:(Landroid/os/Message;)Z
            pop
        end local 7 // android.os.Message m
        end local 6 // android.os.Handler handler
        11: .line 192
      StackMap locals:
      StackMap stack:
            return
        end local 5 // android.media.AudioPortEventHandler eventHandler
        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 module_ref
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0    module_ref  Ljava/lang/Object;
            0   12     1          what  I
            0   12     2          arg1  I
            0   12     3          arg2  I
            0   12     4           obj  Ljava/lang/Object;
            2   12     5  eventHandler  Landroid/media/AudioPortEventHandler;
            6   11     6       handler  Landroid/os/Handler;
            8   11     7             m  Landroid/os/Message;
    MethodParameters:
            Name  Flags
      module_ref  
      what        
      arg1        
      arg2        
      obj         
}
SourceFile: "AudioPortEventHandler.java"
NestMembers:
  android.media.AudioPortEventHandler$1
InnerClasses:
  public abstract OnAudioPortUpdateListener = android.media.AudioManager$OnAudioPortUpdateListener of android.media.AudioManager
  android.media.AudioPortEventHandler$1