アレッ*_*ックス 4 java android webrtc
由于Android WebRTC客户端示例中的重大变化,我正在寻找代码示例,该示例演示如何在Android中添加和使用DataChannel.我需要通过DataChannel在2个Android设备之间发送"Hello Worlds".这是旧代码:
它使用了新版本中不存在的一些类和接口.
那么我如何才能将DataChannel的支持添加到我的Android WebRTC应用程序中,通过它发送和接收文本?
我在一个带有旧版webrtc的项目中添加了DataChannel.我查看了最新的类,似乎方法和回调仍然存在,所以希望它对你有用.
变更为PeerConnectionClient:
在创建DataChannel createPeerConnectionInternal后isInitiator = false;:
DataChannel.Init dcInit = new DataChannel.Init();
dcInit.id = 1;
dataChannel = pc.createDataChannel("1", dcInit);;
dataChannel.registerObserver(new DcObserver());
Run Code Online (Sandbox Code Playgroud)
变更为onDataChannel:
@Override
public void onDataChannel(final DataChannel dc) {
Log.d(TAG, "onDataChannel");
executor.execute(new Runnable() {
@Override
public void run() {
dataChannel = dc;
String channelName = dataChannel.label();
dataChannel.registerObserver(new DcObserver());
}
});
}
Run Code Online (Sandbox Code Playgroud)
添加频道观察者:
private class DcObserver implements DataChannel.Observer {
@Override
public void onMessage(final DataChannel.Buffer buffer) {
ByteBuffer data = buffer.data;
byte[] bytes = new byte[data.remaining()];
data.get(bytes);
final String command = new String(bytes);
executor.execute(new Runnable() {
public void run() {
events.onReceivedData(command);
}
});
}
@Override
public void onStateChange() {
Log.d(TAG, "DataChannel: onStateChange: " + dataChannel.state());
}
}
Run Code Online (Sandbox Code Playgroud)
我onReceivedData向PeerConnectionEvents接口添加了事件,并且所有事件都在CallActivity中实现,因此我从那里处理在通道上接收的数据.
要从CallActivity发送数据:
public void sendData(final String data) {
ByteBuffer buffer = ByteBuffer.wrap(data.getBytes());
peerConnectionClient.getPCDataChannel().send(new DataChannel.Buffer(buffer, false));
}
Run Code Online (Sandbox Code Playgroud)
我只是快速查看了新的类并对我的代码进行了一些细微的修改,我希望它能为你工作而不再需要更改.
祝好运