初始化
概述
集成 SDK 完成后,要想使用 SDK 的功能,需要先对SDK 进行初始化和鉴权,然后才能正常使用。
初始化步骤
申请AppID和AppSecret
请在 LinkV 开发者后台 申请 SDK 鉴权需要的 appid 和 签名,获取 AppID 和 AppSecret 指引。
初始化SDK
StrangerChat mEngine = StrangerChat.createEngine(application, Constants.APP_ID, Constants.APP_SECRET, false,
                i -> {
                    LogUtils.d(TAG, "onInitResult code = " + i);
                }, this);
实现IM连接状态回调
 @Override
    public void onQueryIMToken() {
            // 此处传入token,token由您的服务器获取。
        LVIMSDK.sharedInstance().setIMToken("登录IM的userId", "xxx");
    }
    @Override
    public void onIMAuthFailed(String uid, String token, int ecode, int rcode, boolean isTokenExpired) {
        // IM鉴权失败
    }
    @Override
    public void onIMAuthSucceed(String uid, String token, long unReadMsgSize) {
                // IM鉴权成功
    }
    @Override
    public void onIMTokenExpired(String uid, String token) {
        // IM Token过期
    }
呼叫、接听、挂断

- 传入某个用户的user_id进行呼叫
 
mEngine.call(tid, false, "", null);
- 被呼叫的用户会收到呼叫回调,在回调中进行接听或者挂断操作
 
@Override
public int onCallReceived(String uid, boolean isAudio, long timestamp, String extra) {
    mRingTonCallPlayer.stopRingtone();
    IncomingCallActivity.actionStart(this, uid);
    return 0;
}
- 接听或挂断某个用户的来电
 
// 第2个参数传true为接听,false为挂断
mEngine.answerCall(”对方用户ID“, true, false, "", null);
- 收到某个用户接听或挂断的回调
 
@Override
public int onAnswerCallReceived(String uid, boolean accept, boolean isAudio, long timestamp, String extra) {
    // 收到同意接听电话的回调
    return 0;
}
@Override
public int onHangupCallReceived(String uid, String extra) {
    // 收到挂断电话的回调
    return 0;
}
房间
- 进入房间
 
mEngine.loginRoom("登录用户的id", mRoomId, true);
- 当收到onRoomConnected的时候表示进入房间成功
- 调用SDK的startPreview开始预览,startPreview返回的是视频流View,移动此View就能达到移动视频流的效果
 - 调用SDK的startPublishing开始推流
 
 
// 进入房间成功
 @Override
 public void onRoomConnected(String s) {
     // 进入房间成功,开启预览。
     mStrangerChatEngine.startPreview("登录用户的id", mContainerVideoSmall, true);
     // 开始推流
     mStrangerChatEngine.startPublishing();
 }
- 在收到onRemoteStreamAdd的时候调用SDK的startPlayingStream播放对方视频流, startPlayingStream返回的是对方视频流View,移动此View就能达到移动视频流的效果
 
// 收到对方视频流回调
@Override
public void onRemoteStreamAdd(String userId) {
    LogUtils.d(TAG, "onRemoteStreamAdd = " + userId);
    // 拉流
    mEngine.startPlayingStream(userId, mContainerVideoLarge, false);
}
- 在收到onRemoteStreamEnd的回调时调用SDK的stopPlayingStream停止播放对方视频流
 
    public void onRemoteStreamEnd(String userId) {
        // 远端流退出,停止拉流。
        mEngine.stopPlayingStream();
    }
- 房间中的其它回调
- 对方关闭或者打开麦克风
 - 对方关闭或者打开摄像头
 - 收到礼物
 - 房间断开连接
 
 
// 收到某个用户发送的礼物消息
int onGiftReceived(String giftId, int count, String sendUid, List<String> uids, String roomId, String extra);
// 某个用户的麦克风状态发生了变化
int onUserMicrophoneChanged(String uid, String roomId, boolean isOpen);
// 某个用户的摄像头状态发生了变化
int onUserVideoCameraChanged(String uid, String roomId, boolean isOpen);