WebRTC在Android的实现案例

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:49   4070   0

1 参考代码链接

https://github.com/pchab/ProjectRTC

https://github.com/pchab/AndroidRTC

2 本篇源码地址

https://github.com/daily11/WebRTC-For-Android

3 修改源码地方

3.1 ProjectRTC

只修改一个文件,既socketHandler.js文件,注释掉代码:client.emit('id', client.id); 添加属性var mSockets = []; var ids = []; 并添加代码:

mSockets.push(client);
for (var i in mSockets) {
    ids[i] = mSockets[i].id;
}
client.emit('id', ids);

默认传回的是client.id,这里我传回了对应的id集合。

3.2 AndroidRTC

3.2.1 WebRtcClient.java类修改

private Emitter.Listener onId = new Emitter.Listener() {
    @Override
    public void call(Object[] args) {
        JSONArray ids = (JSONArray) args[0];
        String[] arr = new String[ids.length()];
        for (int i = 0; i < ids.length(); i++) {
            try {
                arr[i] = (String) ids.get(i);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        mListener.onCallReady(arr[0], arr);
    }
};

回调函数call内部修改为以上代码

3.2.2 RtcActivity.java类修改

@Override
public void onCallReady(final String callId, final String[] args) {
    final int len = args.length;
    if (len == 1) {
        call(callId);
    } else {
        callerId = args[0];
        try {
            answer(callerId);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

回调函数onCallReady内部修改如上

4 测试步骤

4.1 ProjectRTC

(1)进入项目根目录

(2)npm install

(3)node app.js

4.2 AndroidRTC

(1)保持电脑、2部手机都连在同一个局域网内;

(2)修改values文件夹下的strings.xml文件,将<string name="host">172.20.95.1</string>值修改为局域网中你主机的IP地址;

(3)在2台手机上分别运行该应用即可

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP