Loading media/java/android/media/AudioManager.java +15 −0 Original line number Diff line number Diff line Loading @@ -1063,6 +1063,21 @@ public class AudioManager { } } /** * @hide * Reload audio settings. This method is called by Settings backup * agent when audio settings are restored and causes the AudioService * to read and apply restored settings. */ public void reloadAudioSettings() { IAudioService service = getService(); try { service.reloadAudioSettings(); } catch (RemoteException e) { Log.e(TAG, "Dead object in reloadAudioSettings"+e); } } /** * {@hide} */ Loading media/java/android/media/AudioService.java +47 −5 Original line number Diff line number Diff line Loading @@ -508,14 +508,14 @@ public class AudioService extends IAudioService.Stub { /** @see AudioManager#setRingerMode(int) */ public void setRingerMode(int ringerMode) { if (ringerMode != mRingerMode) { setRingerModeInt(ringerMode); setRingerModeInt(ringerMode, true); // Send sticky broadcast broadcastRingerMode(); } } private void setRingerModeInt(int ringerMode) { private void setRingerModeInt(int ringerMode, boolean persist) { mRingerMode = ringerMode; // Adjust volumes via posting message Loading Loading @@ -543,9 +543,11 @@ public class AudioService extends IAudioService.Stub { } // Post a persist ringer mode msg if (persist) { sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE, SHARED_MSG, SENDMSG_REPLACE, 0, 0, null, PERSIST_DELAY); } } /** @see AudioManager#shouldVibrate(int) */ public boolean shouldVibrate(int vibrateType) { Loading Loading @@ -914,6 +916,46 @@ public class AudioService extends IAudioService.Stub { } } /** @see AudioManager#reloadAudioSettings() */ public void reloadAudioSettings() { // restore ringer mode, ringer mode affected streams, mute affected streams and vibrate settings readPersistedSettings(); // restore volume settings int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = 0; streamType < numStreamTypes; streamType++) { VolumeStreamState streamState = mStreamStates[streamType]; // there is no volume setting for STREAM_BLUETOOTH_SCO if (streamType != AudioSystem.STREAM_BLUETOOTH_SCO) { String settingName = System.VOLUME_SETTINGS[streamType]; String lastAudibleSettingName = settingName + System.APPEND_FOR_LAST_AUDIBLE; streamState.mIndex = streamState.getValidIndex(Settings.System.getInt(mContentResolver, settingName, AudioManager.DEFAULT_STREAM_VOLUME[streamType])); streamState.mLastAudibleIndex = streamState.getValidIndex(Settings.System.getInt(mContentResolver, lastAudibleSettingName, streamState.mIndex > 0 ? streamState.mIndex : AudioManager.DEFAULT_STREAM_VOLUME[streamType])); } // unmute stream that whas muted but is not affect by mute anymore if (streamState.muteCount() != 0 && !isStreamAffectedByMute(streamType)) { int size = streamState.mDeathHandlers.size(); for (int i = 0; i < size; i++) { streamState.mDeathHandlers.get(i).mMuteCount = 1; streamState.mDeathHandlers.get(i).mute(false); } } // apply stream volume if (streamState.muteCount() == 0) { AudioSystem.setVolume(streamType, streamState.mVolumes[streamState.mIndex]); } } // apply new ringer mode setRingerModeInt(getRingerMode(), false); } /////////////////////////////////////////////////////////////////////////// // Internal methods /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -1426,7 +1468,7 @@ public class AudioService extends IAudioService.Stub { * Ensure all stream types that should be affected by ringer mode * are in the proper state. */ setRingerModeInt(getRingerMode()); setRingerModeInt(getRingerMode(), false); } } Loading media/java/android/media/IAudioService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -71,4 +71,5 @@ interface IAudioService { oneway void unloadSoundEffects(); oneway void reloadAudioSettings(); } Loading
media/java/android/media/AudioManager.java +15 −0 Original line number Diff line number Diff line Loading @@ -1063,6 +1063,21 @@ public class AudioManager { } } /** * @hide * Reload audio settings. This method is called by Settings backup * agent when audio settings are restored and causes the AudioService * to read and apply restored settings. */ public void reloadAudioSettings() { IAudioService service = getService(); try { service.reloadAudioSettings(); } catch (RemoteException e) { Log.e(TAG, "Dead object in reloadAudioSettings"+e); } } /** * {@hide} */ Loading
media/java/android/media/AudioService.java +47 −5 Original line number Diff line number Diff line Loading @@ -508,14 +508,14 @@ public class AudioService extends IAudioService.Stub { /** @see AudioManager#setRingerMode(int) */ public void setRingerMode(int ringerMode) { if (ringerMode != mRingerMode) { setRingerModeInt(ringerMode); setRingerModeInt(ringerMode, true); // Send sticky broadcast broadcastRingerMode(); } } private void setRingerModeInt(int ringerMode) { private void setRingerModeInt(int ringerMode, boolean persist) { mRingerMode = ringerMode; // Adjust volumes via posting message Loading Loading @@ -543,9 +543,11 @@ public class AudioService extends IAudioService.Stub { } // Post a persist ringer mode msg if (persist) { sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE, SHARED_MSG, SENDMSG_REPLACE, 0, 0, null, PERSIST_DELAY); } } /** @see AudioManager#shouldVibrate(int) */ public boolean shouldVibrate(int vibrateType) { Loading Loading @@ -914,6 +916,46 @@ public class AudioService extends IAudioService.Stub { } } /** @see AudioManager#reloadAudioSettings() */ public void reloadAudioSettings() { // restore ringer mode, ringer mode affected streams, mute affected streams and vibrate settings readPersistedSettings(); // restore volume settings int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = 0; streamType < numStreamTypes; streamType++) { VolumeStreamState streamState = mStreamStates[streamType]; // there is no volume setting for STREAM_BLUETOOTH_SCO if (streamType != AudioSystem.STREAM_BLUETOOTH_SCO) { String settingName = System.VOLUME_SETTINGS[streamType]; String lastAudibleSettingName = settingName + System.APPEND_FOR_LAST_AUDIBLE; streamState.mIndex = streamState.getValidIndex(Settings.System.getInt(mContentResolver, settingName, AudioManager.DEFAULT_STREAM_VOLUME[streamType])); streamState.mLastAudibleIndex = streamState.getValidIndex(Settings.System.getInt(mContentResolver, lastAudibleSettingName, streamState.mIndex > 0 ? streamState.mIndex : AudioManager.DEFAULT_STREAM_VOLUME[streamType])); } // unmute stream that whas muted but is not affect by mute anymore if (streamState.muteCount() != 0 && !isStreamAffectedByMute(streamType)) { int size = streamState.mDeathHandlers.size(); for (int i = 0; i < size; i++) { streamState.mDeathHandlers.get(i).mMuteCount = 1; streamState.mDeathHandlers.get(i).mute(false); } } // apply stream volume if (streamState.muteCount() == 0) { AudioSystem.setVolume(streamType, streamState.mVolumes[streamState.mIndex]); } } // apply new ringer mode setRingerModeInt(getRingerMode(), false); } /////////////////////////////////////////////////////////////////////////// // Internal methods /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -1426,7 +1468,7 @@ public class AudioService extends IAudioService.Stub { * Ensure all stream types that should be affected by ringer mode * are in the proper state. */ setRingerModeInt(getRingerMode()); setRingerModeInt(getRingerMode(), false); } } Loading
media/java/android/media/IAudioService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -71,4 +71,5 @@ interface IAudioService { oneway void unloadSoundEffects(); oneway void reloadAudioSettings(); }