Java datachannel_java – 在Android WebRTC应用程序中使用DataChannel

我在一个带有旧版webrtc的项目中添加了DataChannel.我查看了最新的类,似乎方法和回调仍然存在,所以希望它对你有用.

对PeerConnectionClient的更改:

在isInitiator = false之后,在createPeerConnectionInternal中创建DataChannel:

DataChannel.Init dcInit = new DataChannel.Init();

dcInit.id = 1;

dataChannel = pc.createDataChannel("1", dcInit);;

dataChannel.registerObserver(new DcObserver());

对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());

}

});

}

添加频道观察者:

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());

}

}

我将onReceivedDataevents添加到PeerConnectionEvents接口,所有事件都在CallActivity中实现,因此我处理从那里接收的数据.

要从CallActivity发送数据:

public void sendData(final String data) {

ByteBuffer buffer = ByteBuffer.wrap(data.getBytes());

peerConnectionClient.getPCDataChannel().send(new DataChannel.Buffer(buffer, false));

}

我只是快速查看了新的类并对我的代码进行了一些细微的修改,我希望它能为你工作而不再需要更改.

祝好运

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值