По этому вопросу уже есть куча вопросов, но все они относятся к Javascript. Я пытаюсь набрать Android, и мой onIceCandidate()
никогда не вызывается, когда я звоню setLocalDescription
.
private PeerConnection initPeerConnection(boolean isLocal) {
MediaConstraints sdpConstraints = new MediaConstraints();
sdpConstraints.mandatory.add(new MediaConstraints.KeyValuePair("offerToReceiveAudio", "true"));
sdpConstraints.mandatory.add(new MediaConstraints.KeyValuePair("offerToReceiveVideo", "true"));
List<PeerConnection.IceServer> servers = new ArrayList<>();
return peerConnectionFactory.createPeerConnection(servers, new CustomPeerConnectionObserver() {
@Override
public void onIceCandidate(IceCandidate iceCandidate) {
super.onIceCandidate(iceCandidate);
if (isLocal)
onIceCandidateReceived(localPeerConnection, iceCandidate);
else
onIceCandidateReceived(remotePeerConnection, iceCandidate);
}
@Override
public void onAddStream(MediaStream mediaStream) {
super.onAddStream(mediaStream);
if (!isLocal)
gotRemoteStream(mediaStream);
}
});
}
Создание соединений:
localPeerConnection = initPeerConnection(true);
remotePeerConnection = initPeerConnection(false);
Создание предложения. Теперь он должен вызвать onIceCandidate ():
localPeerConnection.createOffer(new SimpleSdpObserver() {
@Override
public void onCreateSuccess(SessionDescription sessionDescription) {
Log.e("SDP", sessionDescription.description + sessionDescription.type.toString());
localPeerConnection.setLocalDescription(new SimpleSdpObserver(), sessionDescription);
sendOffer(sessionDescription);
}
}, sdpMediaConstraints);
Но, к сожалению, это не сработает. Что не так? Что должно быть правильным?
ПРИМЕЧАНИЕ: Любой ответ, указанный c на Android JavaScript, будет высоко оценен.