Fix for AudioManager mode / One X audio issue + improved traces for audio focus
This commit is contained in:
parent
a9785babf9
commit
84cd341efc
4 changed files with 28 additions and 3 deletions
|
@ -211,6 +211,7 @@ public class LinphoneManager implements LinphoneCoreListener {
|
||||||
private void routeAudioToSpeakerHelper(boolean speakerOn) {
|
private void routeAudioToSpeakerHelper(boolean speakerOn) {
|
||||||
isUsingBluetoothAudioRoute = false;
|
isUsingBluetoothAudioRoute = false;
|
||||||
if (mAudioManager != null) {
|
if (mAudioManager != null) {
|
||||||
|
Compatibility.setAudioManagerInCallMode(mAudioManager);
|
||||||
mAudioManager.stopBluetoothSco();
|
mAudioManager.stopBluetoothSco();
|
||||||
mAudioManager.setBluetoothScoOn(false);
|
mAudioManager.setBluetoothScoOn(false);
|
||||||
}
|
}
|
||||||
|
@ -1211,7 +1212,9 @@ public class LinphoneManager implements LinphoneCoreListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == LinphoneCall.State.Connected) {
|
if (state == LinphoneCall.State.Connected) {
|
||||||
Log.d("Audio focus requested: " + mAudioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN));
|
if (mLc.getCallsNb() == 1) {
|
||||||
|
Log.d("Audio focus requested: " + (mAudioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED ? "Granted" : "Denied"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == IncomingReceived || (state == State.CallIncomingEarlyMedia && mR.getBoolean(R.bool.allow_ringing_while_early_media))) {
|
if (state == IncomingReceived || (state == State.CallIncomingEarlyMedia && mR.getBoolean(R.bool.allow_ringing_while_early_media))) {
|
||||||
|
@ -1227,7 +1230,10 @@ public class LinphoneManager implements LinphoneCoreListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == CallEnd || state == Error) {
|
if (state == CallEnd || state == Error) {
|
||||||
Log.d("Audio focus released: " + mAudioManager.abandonAudioFocus(null));
|
if (mLc.getCallsNb() == 0) {
|
||||||
|
Log.d("Audio focus released: " + (mAudioManager.abandonAudioFocus(null) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED ? "Granted" : "Denied"));
|
||||||
|
mAudioManager.setMode(AudioManager.MODE_NORMAL);
|
||||||
|
}
|
||||||
Context activity = getContext();
|
Context activity = getContext();
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
TelephonyManager tm = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
|
TelephonyManager tm = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
|
@ -1262,7 +1268,7 @@ public class LinphoneManager implements LinphoneCoreListener {
|
||||||
} else {
|
} else {
|
||||||
Log.i("New call active while incall (CPU only) wake lock already active");
|
Log.i("New call active while incall (CPU only) wake lock already active");
|
||||||
}
|
}
|
||||||
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
|
Compatibility.setAudioManagerInCallMode(mAudioManager);
|
||||||
}
|
}
|
||||||
mListenerDispatcher.onCallStateChanged(call, state, message);
|
mListenerDispatcher.onCallStateChanged(call, state, message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.media.AudioManager;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
ApiElevenPlus.java
|
ApiElevenPlus.java
|
||||||
|
@ -88,4 +89,8 @@ public class ApiElevenPlus {
|
||||||
ClipData clip = android.content.ClipData.newPlainText("Message", msg);
|
ClipData clip = android.content.ClipData.newPlainText("Message", msg);
|
||||||
clipboard.setPrimaryClip(clip);
|
clipboard.setPrimaryClip(clip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setAudioManagerInCallMode(AudioManager manager) {
|
||||||
|
manager.setMode(AudioManager.MODE_IN_COMMUNICATION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import android.database.Cursor;
|
||||||
import android.database.MatrixCursor;
|
import android.database.MatrixCursor;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.preference.CheckBoxPreference;
|
import android.preference.CheckBoxPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
|
@ -432,4 +433,8 @@ public class ApiFivePlus {
|
||||||
public static void removeGlobalLayoutListener(ViewTreeObserver viewTreeObserver, OnGlobalLayoutListener keyboardListener) {
|
public static void removeGlobalLayoutListener(ViewTreeObserver viewTreeObserver, OnGlobalLayoutListener keyboardListener) {
|
||||||
viewTreeObserver.removeGlobalOnLayoutListener(keyboardListener);
|
viewTreeObserver.removeGlobalOnLayoutListener(keyboardListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setAudioManagerInCallMode(AudioManager manager) {
|
||||||
|
manager.setMode(AudioManager.MODE_IN_CALL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
|
@ -268,4 +269,12 @@ public class Compatibility {
|
||||||
ApiFourteenPlus.showNavigationBar(activity);
|
ApiFourteenPlus.showNavigationBar(activity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setAudioManagerInCallMode(AudioManager manager) {
|
||||||
|
if (Version.sdkAboveOrEqual(Version.API11_HONEYCOMB_30)) {
|
||||||
|
ApiElevenPlus.setAudioManagerInCallMode(manager);
|
||||||
|
} else {
|
||||||
|
ApiFivePlus.setAudioManagerInCallMode(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue