Я создаю VoIP-приложение для Android, используя PJSUA2. В настоящее время звонки работают, за исключением некоторых общедоступных сетей Wi-Fi, где поворот, похоже, решает проблему. Однако установка для setTurnEnabled значения true в конфигурации NAT учетной записи по умолчанию устанавливает линию c=IN IP4 в SDP на сервер очереди, что, по-видимому, заставляет все вызовы проходить через нее. Хотелось бы включать его только в ледовые кандидаты, чтобы использовать его только в том случае, если другие варианты не сработают. Возможно ли это?
Код для включения сервера поворотов при создании учетной записи:
Код: Выделить всё
accCfg.getNatConfig().setTurnServer("x.x.x.x:3478");
accCfg.getNatConfig().setTurnEnabled(true);
accCfg.getNatConfig().setIceEnabled(true);
РЕДАКТИРОВАТЬ: Все еще сталкиваюсь с этой проблемой, но теперь я заметил, что использование TURN в основном требуется для типа NAT 6 (симметричного), который является известным проблемным типом NAT для работы. В качестве обходного пути я в настоящее время рассматриваю возможность сохранения конфигурации учетной записи, а при совершении вызова проверяю тип NAT и включаю сервер очереди, если он симметричен. Причина, по которой я не делаю этого при первом создании учетной записи, заключается в том, что я иногда создаю учетную запись прямо при запуске приложения, и проверка типа NAT в этом состоянии дает ошибку PJ_EPENDING. На данный момент, если у кого-то есть более жизнеспособное решение, я был бы очень рад его услышать.
Подробнее здесь:
https://stackoverflow.com/questions/790 ... a2-android