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) {
|
||||
isUsingBluetoothAudioRoute = false;
|
||||
if (mAudioManager != null) {
|
||||
Compatibility.setAudioManagerInCallMode(mAudioManager);
|
||||
mAudioManager.stopBluetoothSco();
|
||||
mAudioManager.setBluetoothScoOn(false);
|
||||
}
|
||||
|
@ -1211,7 +1212,9 @@ public class LinphoneManager implements LinphoneCoreListener {
|
|||
}
|
||||
|
||||
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))) {
|
||||
|
@ -1227,7 +1230,10 @@ public class LinphoneManager implements LinphoneCoreListener {
|
|||
}
|
||||
|
||||
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();
|
||||
if (activity != null) {
|
||||
TelephonyManager tm = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
|
@ -1262,7 +1268,7 @@ public class LinphoneManager implements LinphoneCoreListener {
|
|||
} else {
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import android.content.ClipData;
|
|||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.AudioManager;
|
||||
|
||||
/*
|
||||
ApiElevenPlus.java
|
||||
|
@ -88,4 +89,8 @@ public class ApiElevenPlus {
|
|||
ClipData clip = android.content.ClipData.newPlainText("Message", msg);
|
||||
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.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.media.AudioManager;
|
||||
import android.net.Uri;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.Preference;
|
||||
|
@ -432,4 +433,8 @@ public class ApiFivePlus {
|
|||
public static void removeGlobalLayoutListener(ViewTreeObserver viewTreeObserver, OnGlobalLayoutListener 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.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.AudioManager;
|
||||
import android.net.Uri;
|
||||
import android.preference.Preference;
|
||||
import android.view.Display;
|
||||
|
@ -268,4 +269,12 @@ public class Compatibility {
|
|||
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