diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index f935bb9..b42bf54 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -194,8 +194,8 @@
     // set audio mode in audio hardware (see AudioSystem::audio_mode)
     static status_t setMode(int mode);
 
-    // returns true if tracks are active on AudioSystem::MUSIC stream
-    static status_t isMusicActive(bool *state);
+    // returns true in *state if tracks are active on the specified stream
+    static status_t isStreamActive(int stream, bool *state);
 
     // set/get audio hardware parameters. The function accepts a list of parameters
     // key value pairs in the form: key1=value1;key2=value2;...
diff --git a/include/media/IAudioFlinger.h b/include/media/IAudioFlinger.h
index a46c727..b689dcb 100644
--- a/include/media/IAudioFlinger.h
+++ b/include/media/IAudioFlinger.h
@@ -97,8 +97,8 @@
     virtual     status_t    setMicMute(bool state) = 0;
     virtual     bool        getMicMute() const = 0;
 
-    // is a music stream active?
-    virtual     bool        isMusicActive() const = 0;
+    // is any track active on this stream?
+    virtual     bool        isStreamActive(int stream) const = 0;
 
     virtual     status_t    setParameters(int ioHandle, const String8& keyValuePairs) = 0;
     virtual     String8     getParameters(int ioHandle, const String8& keys) = 0;
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp
index e1b1776..e3b829b 100644
--- a/media/libmedia/AudioSystem.cpp
+++ b/media/libmedia/AudioSystem.cpp
@@ -170,10 +170,10 @@
 }
 
 
-status_t AudioSystem::isMusicActive(bool* state) {
+status_t AudioSystem::isStreamActive(int stream, bool* state) {
     const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
     if (af == 0) return PERMISSION_DENIED;
-    *state = af->isMusicActive();
+    *state = af->isStreamActive(stream);
     return NO_ERROR;
 }
 
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
index 0eff205..fc42979 100644
--- a/media/libmedia/IAudioFlinger.cpp
+++ b/media/libmedia/IAudioFlinger.cpp
@@ -47,7 +47,7 @@
     SET_MODE,
     SET_MIC_MUTE,
     GET_MIC_MUTE,
-    IS_MUSIC_ACTIVE,
+    IS_STREAM_ACTIVE,
     SET_PARAMETERS,
     GET_PARAMETERS,
     REGISTER_CLIENT,
@@ -286,11 +286,12 @@
         return reply.readInt32();
     }
 
-    virtual bool isMusicActive() const
+    virtual bool isStreamActive(int stream) const
     {
         Parcel data, reply;
         data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
-        remote()->transact(IS_MUSIC_ACTIVE, data, &reply);
+        data.writeInt32(stream);
+        remote()->transact(IS_STREAM_ACTIVE, data, &reply);
         return reply.readInt32();
     }
 
@@ -599,9 +600,10 @@
             reply->writeInt32( getMicMute() );
             return NO_ERROR;
         } break;
-        case IS_MUSIC_ACTIVE: {
+        case IS_STREAM_ACTIVE: {
             CHECK_INTERFACE(IAudioFlinger, data, reply);
-            reply->writeInt32( isMusicActive() );
+            int stream = data.readInt32();
+            reply->writeInt32( isStreamActive(stream) );
             return NO_ERROR;
         } break;
         case SET_PARAMETERS: {
