WebRTC在Android的实现案例

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文件,将172.20.95.1值修改为局域网中你主机的IP地址;

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

 

你可能感兴趣的:(安卓)