Android Telecom Manager нет входящего звука / звука при добавленном вызове VOIP
Я пытаюсь добавить видеозвонки VOIP в свое приложение. Я зарегистрировал телефонную учетную запись и добавил вызов в TelecomManager. Звонок принят успешно. Я уже реализовал Connection и ConnectionService.
Я использую приведенный ниже код для добавления вызова.
var uri = Android.Net.Uri.FromParts(PhoneAccount.SchemeSip, voipCallInfo.Payload?.CallerName, null);
extras.PutParcelable(TelecomManager.ExtraIncomingCallAddress, uri);
extras.PutParcelable(TelecomManager.ExtraPhoneAccountHandle, phoneAccountHandle);
telecomManager.AddNewIncomingCall(phoneAccountHandle, extras);
, и я использую приведенный ниже код для приема звонка.
var telecomManager = GetTelecomManager();
if (telecomManager == null)
{
logger.Error("Telecom Manager is null, May be permissions not granted");
return;
}
try
{
.
.
.
telecomManager.AcceptRingingCall();
.
.
}
catch (Exception ex)
{
logger.Error("RequestSystemToAnswerCall Exception : " + ex.Message);
}
Я попытался запросить фокус звука, но когда я добавляю вызов в диспетчере связи, мое приложение теряет фокус, потому что телефон начинает звонить. После того, как я принимаю вызов, приложение не получает фокус обратно, я считаю, что Telecom / Call имеет фокус , но я ничего не слышу . Другой собеседник может меня услышать без проблем. Когда я завершаю вызов, приложения возвращают фокус.
Я вижу в журналах ниже.
2020-06-22,14:09:34.831 WebRTCManager Trace IsAudioSubscriptionEnabled True
[AudioManager] Use of stream types is deprecated for operations other than volume control
[AudioManager] See the documentation of requestAudioFocus() for what to use instead with android.media.AudioAttributes to qualify your playback use case
[AUDIO_FOCUS] Audio Focus request DENIED !
Ниже приведен код, который я использую для запроса аудио.
public bool RequestAudioFocus()
{
var amanager = (AudioManager)GetSystemService(AudioService);
AudioFocusRequest audioFocusRequest;
if (Build.VERSION.SdkInt > BuildVersionCodes.O)
{
audioFocusRequest = amanager.RequestAudioFocus(new AudioFocusRequestClass.Builder(AudioFocus.Gain)
.SetAudioAttributes(new AudioAttributes.Builder().SetLegacyStreamType(Stream.VoiceCall).Build())
.SetOnAudioFocusChangeListener(this)
.Build());
}
else
{
audioFocusRequest = amanager.RequestAudioFocus(this, Stream.VoiceCall, AudioFocus.Gain);
}
Debug.WriteLine("MainActivity RequestAudioFocus audioFocusRequest : " + audioFocusRequest);
if (audioFocusRequest == AudioFocusRequest.Granted)
{
return true;
}
return false;
}
Когда я устанавливаю sh соединение VOIP без использования TelecomManager. Все работает нормально. Поэтому я считаю, что что-то пойдет не так, когда я добавляю и принимаю вызов.
Спасибо за любую идею или исправление.