summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2010-01-25 17:16:05 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-01-25 17:16:05 -0800
commit473bd7767593cdd16669a220cf6f1a7c885e4e85 (patch)
treed99d8ca9200aa6f2b7bc1e62e559b21cd64869bd /media
parent307da1a46b4c9b711bafe8fbaaa6b98e8868c18e (diff)
parent23f25cda0c73f8eb878844dea32fb0bd419edca2 (diff)
downloadframeworks_base-473bd7767593cdd16669a220cf6f1a7c885e4e85.zip
frameworks_base-473bd7767593cdd16669a220cf6f1a7c885e4e85.tar.gz
frameworks_base-473bd7767593cdd16669a220cf6f1a7c885e4e85.tar.bz2
Merge "Fix issue 2378022: AudioService should direct volume control to STREAM_VOICE_CALL stream when STREAM_VOICE_CALL stream is active."
Diffstat (limited to 'media')
-rw-r--r--media/java/android/media/AudioManager.java2
-rw-r--r--media/java/android/media/AudioService.java6
-rw-r--r--media/java/android/media/AudioSystem.java6
-rw-r--r--media/libmedia/AudioSystem.cpp4
-rw-r--r--media/libmedia/IAudioFlinger.cpp12
5 files changed, 16 insertions, 14 deletions
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index c2e6142..171881f 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -924,7 +924,7 @@ public class AudioManager {
* @return true if any music tracks are active.
*/
public boolean isMusicActive() {
- return AudioSystem.isMusicActive();
+ return AudioSystem.isStreamActive(STREAM_MUSIC);
}
/*
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index 9362305..bde8a47 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -957,10 +957,10 @@ public class AudioService extends IAudioService.Stub {
if (AudioSystem.getForceUse(AudioSystem.FOR_COMMUNICATION) == AudioSystem.FORCE_BT_SCO) {
// Log.v(TAG, "getActiveStreamType: Forcing STREAM_BLUETOOTH_SCO...");
return AudioSystem.STREAM_BLUETOOTH_SCO;
- } else if (isOffhook) {
+ } else if (isOffhook || AudioSystem.isStreamActive(AudioSystem.STREAM_VOICE_CALL)) {
// Log.v(TAG, "getActiveStreamType: Forcing STREAM_VOICE_CALL...");
return AudioSystem.STREAM_VOICE_CALL;
- } else if (AudioSystem.isMusicActive()) {
+ } else if (AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC)) {
// Log.v(TAG, "getActiveStreamType: Forcing STREAM_MUSIC...");
return AudioSystem.STREAM_MUSIC;
} else if (suggestedStreamType == AudioManager.USE_DEFAULT_STREAM_TYPE) {
@@ -1366,7 +1366,7 @@ public class AudioService extends IAudioService.Stub {
// Force creation of new IAudioflinger interface
if (!mMediaServerOk) {
Log.e(TAG, "Media server died.");
- AudioSystem.isMusicActive();
+ AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC);
sendMsg(mAudioHandler, MSG_MEDIA_SERVER_DIED, SHARED_MSG, SENDMSG_NOOP, 0, 0,
null, 500);
}
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 137b919..a4818ff 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -153,11 +153,11 @@ public class AudioSystem
}
/*
- * Checks whether any music is active.
+ * Checks whether the specified stream type is active.
*
- * return true if any music tracks are active.
+ * return true if any track playing on this stream is active.
*/
- public static native boolean isMusicActive();
+ public static native boolean isStreamActive(int stream);
/*
* Sets a group generic audio configuration parameters. The use of these parameters
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::setMode(int mode)
}
-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 @@ enum {
SET_MODE,
SET_MIC_MUTE,
GET_MIC_MUTE,
- IS_MUSIC_ACTIVE,
+ IS_STREAM_ACTIVE,
SET_PARAMETERS,
GET_PARAMETERS,
REGISTER_CLIENT,
@@ -286,11 +286,12 @@ public:
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 @@ status_t BnAudioFlinger::onTransact(
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: {