diff options
author | Eric Laurent <elaurent@google.com> | 2010-01-25 17:16:05 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-01-25 17:16:05 -0800 |
commit | 473bd7767593cdd16669a220cf6f1a7c885e4e85 (patch) | |
tree | d99d8ca9200aa6f2b7bc1e62e559b21cd64869bd /media | |
parent | 307da1a46b4c9b711bafe8fbaaa6b98e8868c18e (diff) | |
parent | 23f25cda0c73f8eb878844dea32fb0bd419edca2 (diff) | |
download | frameworks_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.java | 2 | ||||
-rw-r--r-- | media/java/android/media/AudioService.java | 6 | ||||
-rw-r--r-- | media/java/android/media/AudioSystem.java | 6 | ||||
-rw-r--r-- | media/libmedia/AudioSystem.cpp | 4 | ||||
-rw-r--r-- | media/libmedia/IAudioFlinger.cpp | 12 |
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: { |