Merge change I524dc046 into eclair

* changes:
  Fix issue 2192673: Music Pausing Even when notifications are set to silent.
This commit is contained in:
Android (Google) Code Review
2009-11-30 10:00:06 -08:00
3 changed files with 36 additions and 13 deletions

View File

@ -669,8 +669,14 @@ status_t CameraService::Client::startRecording()
LOGD("startRecording (pid %d)", getCallingPid());
if (mMediaPlayerBeep.get() != NULL) {
mMediaPlayerBeep->seekTo(0);
mMediaPlayerBeep->start();
// do not play record jingle if stream volume is 0
// (typically because ringer mode is silent).
int index;
AudioSystem::getStreamVolumeIndex(AudioSystem::ENFORCED_AUDIBLE, &index);
if (index != 0) {
mMediaPlayerBeep->seekTo(0);
mMediaPlayerBeep->start();
}
}
mHardware->enableMsgType(CAMERA_MSG_VIDEO_FRAME);
@ -888,8 +894,14 @@ void CameraService::Client::handleShutter(
{
// Play shutter sound.
if (mMediaPlayerClick.get() != NULL) {
mMediaPlayerClick->seekTo(0);
mMediaPlayerClick->start();
// do not play shutter sound if stream volume is 0
// (typically because ringer mode is silent).
int index;
AudioSystem::getStreamVolumeIndex(AudioSystem::ENFORCED_AUDIBLE, &index);
if (index != 0) {
mMediaPlayerClick->seekTo(0);
mMediaPlayerClick->start();
}
}
// Screen goes black after the buffer is unregistered.

View File

@ -63,11 +63,13 @@ public class Ringtone {
private AssetFileDescriptor mAssetFileDescriptor;
private int mStreamType = AudioManager.STREAM_RING;
private AudioManager mAudioManager;
private Context mContext;
Ringtone(Context context) {
mContext = context;
mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
}
/**
@ -209,7 +211,11 @@ public class Ringtone {
}
}
if (mAudio != null) {
mAudio.start();
// do not ringtones if stream volume is 0
// (typically because ringer mode is silent).
if (mAudioManager.getStreamVolume(mStreamType) != 0) {
mAudio.start();
}
}
}

View File

@ -704,6 +704,9 @@ class NotificationManagerService extends INotificationManager.Stub
&& (!(old != null
&& (notification.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0 ))
&& mSystemReady) {
final AudioManager audioManager = (AudioManager) mContext
.getSystemService(Context.AUDIO_SERVICE);
// sound
final boolean useDefaultSound =
(notification.defaults & Notification.DEFAULT_SOUND) != 0;
@ -722,18 +725,20 @@ class NotificationManagerService extends INotificationManager.Stub
audioStreamType = DEFAULT_STREAM_TYPE;
}
mSoundNotification = r;
long identity = Binder.clearCallingIdentity();
try {
mSound.play(mContext, uri, looping, audioStreamType);
}
finally {
Binder.restoreCallingIdentity(identity);
// do not play notifications if stream volume is 0
// (typically because ringer mode is silent).
if (audioManager.getStreamVolume(audioStreamType) != 0) {
long identity = Binder.clearCallingIdentity();
try {
mSound.play(mContext, uri, looping, audioStreamType);
}
finally {
Binder.restoreCallingIdentity(identity);
}
}
}
// vibrate
final AudioManager audioManager = (AudioManager) mContext
.getSystemService(Context.AUDIO_SERVICE);
final boolean useDefaultVibrate =
(notification.defaults & Notification.DEFAULT_VIBRATE) != 0;
if ((useDefaultVibrate || notification.vibrate != null)