Fix addAudioDeviceCallback() memory leak bug

Store jobjects and JObjectHolders as backup, delete JObjectHolders after
usage

Bug: 128341809
Test: RoutingTest#test_MediaPlayer2_RoutingChangedCallback
Change-Id: I70b2312519ab0efef0ed40ce721ae8c26dc1aed2
diff --git a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
index 7381286..2ed4632 100644
--- a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
+++ b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
@@ -405,7 +405,8 @@
      * routingDelegates: backed-up routing delegates
      *
      */
-    void registerRoutingDelegates(Vector<std::pair<jobject, jobject>>& routingDelegates);
+    void registerRoutingDelegates(
+            Vector<std::pair<sp<JObjectHolder>, sp<JObjectHolder>>>& routingDelegates);
 
     /* get listener from RoutingDelegate object
      */
@@ -422,13 +423,15 @@
      * Returns value if key is in the map
      *         nullptr if key is not in the map
      */
-    static jobject findByKey(Vector<std::pair<jobject, jobject>>& mp, const jobject key);
+    static jobject findByKey(
+            Vector<std::pair<sp<JObjectHolder>, sp<JObjectHolder>>>& mp, const jobject key);
 
     /*
      * Parameters:
      * map and key
      */
-    static void eraseByKey(Vector<std::pair<jobject, jobject>>& mp, const jobject key);
+    static void eraseByKey(
+            Vector<std::pair<sp<JObjectHolder>, sp<JObjectHolder>>>& mp, const jobject key);
 
 private:
     audio_output_flags_t mFlags;