Merge "Merge 25Q1 (ab/BP1A.250305.020) to AOSP main" into main
diff --git a/src/android/AudioPlayer_to_android.cpp b/src/android/AudioPlayer_to_android.cpp
index 134bf3d..a0b0de9 100644
--- a/src/android/AudioPlayer_to_android.cpp
+++ b/src/android/AudioPlayer_to_android.cpp
@@ -35,6 +35,7 @@
 
 #include <system/audio.h>
 #include <SLES/OpenSLES_Android.h>
+#include <media/AudioContainers.h>
 
 template class android::KeyedVector<SLuint32,
                                     android::sp<android::AudioEffect> > ;
@@ -51,9 +52,13 @@
 //-----------------------------------------------------------------------------
 // Inline functions to communicate with AudioService through the native AudioManager interface
 inline void audioManagerPlayerEvent(CAudioPlayer* ap, android::player_state_t event,
-        audio_port_handle_t deviceId) {
+        const android::DeviceIdVector& deviceIds) {
     if (ap->mObject.mEngine->mAudioManager != 0) {
-        ap->mObject.mEngine->mAudioManager->playerEvent(ap->mPIId, event, deviceId);
+        std::vector<audio_port_handle_t> eventIdVector;
+        for (auto deviceId : deviceIds) {
+            eventIdVector.push_back(deviceId);
+        }
+        ap->mObject.mEngine->mAudioManager->playerEvent(ap->mPIId, event, eventIdVector);
     }
 }
 
@@ -881,7 +886,8 @@
         if ((audioTrack != 0) && (!ap->mSeek.mLoopEnabled)) {
             audioTrack->stop();
         }
-        ap->mTrackPlayer->reportEvent(android::PLAYER_STATE_STOPPED, AUDIO_PORT_HANDLE_NONE);
+        android::DeviceIdVector emptyDeviceIdVector;
+        ap->mTrackPlayer->reportEvent(android::PLAYER_STATE_STOPPED, emptyDeviceIdVector);
         }
         break;
 
@@ -2196,11 +2202,12 @@
 
     SLuint32 playState = ap->mPlay.mState;
 
-    audio_port_handle_t deviceId = AUDIO_PORT_HANDLE_NONE;
+    android::DeviceIdVector deviceIds;
+    android::DeviceIdVector emptyDeviceIdVector;
     android::sp<android::AudioTrack> audioTrack =
         ap->mTrackPlayer != 0 ? ap->mTrackPlayer->getAudioTrack() : nullptr;
     if (audioTrack != 0) {
-        deviceId = audioTrack->getRoutedDeviceId();
+        deviceIds = audioTrack->getRoutedDeviceIds();
     }
 
     switch (ap->mAndroidObjType) {
@@ -2220,7 +2227,7 @@
                 // instead of ap->mTrackPlayer->mAudioTrack->start();
                 if (!ap->mDeferredStart) {
                     // state change
-                    ap->mTrackPlayer->reportEvent(android::PLAYER_STATE_STARTED, deviceId);
+                    ap->mTrackPlayer->reportEvent(android::PLAYER_STATE_STARTED, deviceIds);
                 }
                 ap->mDeferredStart = true;
             }
@@ -2235,14 +2242,14 @@
         switch (playState) {
         case SL_PLAYSTATE_STOPPED:
             aplayer_setPlayState(ap->mAPlayer, playState, &ap->mAndroidObjState);
-            audioManagerPlayerEvent(ap, android::PLAYER_STATE_STOPPED, AUDIO_PORT_HANDLE_NONE);
+            audioManagerPlayerEvent(ap, android::PLAYER_STATE_STOPPED, emptyDeviceIdVector);
             break;
         case SL_PLAYSTATE_PAUSED:
             aplayer_setPlayState(ap->mAPlayer, playState, &ap->mAndroidObjState);
-            audioManagerPlayerEvent(ap, android::PLAYER_STATE_PAUSED, AUDIO_PORT_HANDLE_NONE);
+            audioManagerPlayerEvent(ap, android::PLAYER_STATE_PAUSED, emptyDeviceIdVector);
             break;
         case SL_PLAYSTATE_PLAYING:
-            audioManagerPlayerEvent(ap, android::PLAYER_STATE_STARTED, deviceId);
+            audioManagerPlayerEvent(ap, android::PLAYER_STATE_STARTED, deviceIds);
             aplayer_setPlayState(ap->mAPlayer, playState, &ap->mAndroidObjState);
             break;
         }
@@ -2457,7 +2464,7 @@
     auto audioTrack = ap->mTrackPlayer->getAudioTrack();
     if (audioTrack != 0) {
         ap->mTrackPlayer->reportEvent(android::PLAYER_STATE_STARTED,
-                            audioTrack->getRoutedDeviceId());
+                            audioTrack->getRoutedDeviceIds());
         // instead of ap->mTrackPlayer->mAudioTrack->start();
         ap->mDeferredStart = true;
     }