Add SoundPool API to pause and resume all active streams. Bug 2426531.
diff --git a/media/jni/soundpool/SoundPool.cpp b/media/jni/soundpool/SoundPool.cpp
index e57f4a4..2a65b0d 100644
--- a/media/jni/soundpool/SoundPool.cpp
+++ b/media/jni/soundpool/SoundPool.cpp
@@ -294,6 +294,16 @@
     }
 }
 
+void SoundPool::autoPause()
+{
+    LOGV("pauseAll()");
+    Mutex::Autolock lock(&mLock);
+    for (int i = 0; i < mMaxChannels; ++i) {
+        SoundChannel* channel = &mChannelPool[i];
+        channel->autoPause();
+    }
+}
+
 void SoundPool::resume(int channelID)
 {
     LOGV("resume(%d)", channelID);
@@ -304,6 +314,16 @@
     }
 }
 
+void SoundPool::autoResume()
+{
+    LOGV("pauseAll()");
+    Mutex::Autolock lock(&mLock);
+    for (int i = 0; i < mMaxChannels; ++i) {
+        SoundChannel* channel = &mChannelPool[i];
+        channel->autoResume();
+    }
+}
+
 void SoundPool::stop(int channelID)
 {
     LOGV("stop(%d)", channelID);
@@ -710,12 +730,35 @@
     }
 }
 
+void SoundChannel::autoPause()
+{
+    Mutex::Autolock lock(&mLock);
+    if (mState == PLAYING) {
+        LOGV("pause track");
+        mState = PAUSED;
+        mAutoPaused = true;
+        mAudioTrack->pause();
+    }
+}
+
 void SoundChannel::resume()
 {
     Mutex::Autolock lock(&mLock);
     if (mState == PAUSED) {
         LOGV("resume track");
         mState = PLAYING;
+        mAutoPaused = false;
+        mAudioTrack->start();
+    }
+}
+
+void SoundChannel::autoResume()
+{
+    Mutex::Autolock lock(&mLock);
+    if (mAutoPaused && (mState == PAUSED)) {
+        LOGV("resume track");
+        mState = PLAYING;
+        mAutoPaused = false;
         mAudioTrack->start();
     }
 }