Fix issue 2301630: Mismatch of state occurs when media server is killed while in-call.
Use setParameters() API to indicate to audio HAL that we are restarting the media server after a crash.
The use made by audio HAL implementation of this indication is platform specific.
Change-Id: I085b174fa1474575da0e4d295921079b6b68efb8
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index bd78f93..50f0674 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -1627,6 +1627,12 @@
case MSG_MEDIA_SERVER_STARTED:
Log.e(TAG, "Media server started.");
+ // indicate to audio HAL that we start the reconfiguration phase after a media
+ // server crash
+ // Note that MSG_MEDIA_SERVER_STARTED message is only received when the media server
+ // process restarts after a crash, not the first time it is started.
+ AudioSystem.setParameters("restarting=true");
+
// Restore device connection states
Set set = mConnectedDevices.entrySet();
Iterator i = set.iterator();
@@ -1660,6 +1666,9 @@
// Restore ringer mode
setRingerModeInt(getRingerMode(), false);
+
+ // indicate the end of reconfiguration phase to audio HAL
+ AudioSystem.setParameters("restarting=false");
break;
case MSG_PLAY_SOUND_EFFECT: