Temp work around for audio bugs
As a temporary work around for audio bugs this CL does the following:
- request audio focus
- set audio mode
- disable speaker phone
- unmute microphone
Bug: 13375268
Change-Id: Ibf3cda9e99463669d15804708f080b6c7efc5d5c
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 02f7efb..295e3dc 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -24,6 +24,8 @@
<!-- TODO(gilad): Better understand/document this use case. -->
<uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>
+
<!-- Declare which SDK level this application was built against. This is needed so that IDEs
can check for incompatible APIs. -->
<uses-sdk android:minSdkVersion="19" />
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index 5cb879f..23de67b 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -17,7 +17,9 @@
package com.android.telecomm;
import android.Manifest;
+import android.content.Context;
import android.content.Intent;
+import android.media.AudioManager;
import android.os.Bundle;
import android.telecomm.CallService;
import android.telecomm.CallServiceDescriptor;
@@ -237,6 +239,12 @@
call.disconnect();
}
+ // TODO(sail): Replace with CallAudioManager.
+ Log.v(this, "disconnectCall, abandoning audio focus");
+ Context context = TelecommApp.getInstance().getApplicationContext();
+ AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+ audioManager.setMode(AudioManager.MODE_NORMAL);
+ audioManager.abandonAudioFocusForCall();
}
void markCallAsRinging(String callId) {
@@ -251,6 +259,16 @@
setCallState(callId, CallState.ACTIVE);
removeFromUnansweredCalls(callId);
mInCallController.markCallAsActive(callId);
+
+ // TODO(sail): Replace with CallAudioManager.
+ Log.v(this, "markCallAsActive, requesting audio focus");
+ Context context = TelecommApp.getInstance().getApplicationContext();
+ AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+ audioManager.requestAudioFocusForCall(AudioManager.STREAM_VOICE_CALL,
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+ audioManager.setMode(AudioManager.MODE_IN_CALL);
+ audioManager.setMicrophoneMute(false);
+ audioManager.setSpeakerphoneOn(false);
}
/**