开发环境配置
1. 工程配置
- gradle.properties文件中添加
android.useAndroidX=true
android.enableJetifier=true
2. 依赖配置
- 项目级build.gradle文件中添加
maven { url "xxx" }
maven { url 'xxx' }
- module的build.gradle文件中添加
android {
//……
// java8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//……
}
dependencies {
implementation 'xxx'
}
3. SDK配置
RtcClientOverallSetting.getInstance().setAuthUrl("xxx");
RtcClientOverallSetting.getInstance().setSocketUrl("xxx");
可以通过此方法配置鉴权地址和WebSocket连接地址,配置完后打开接听或者拨打页面的基本参数就不需要配置了,若不通过此方法配置也可以在打开接听页面方法参数中直接配置。具体查看调用方式。
SDK调用方式
// 登录用户自己的userId(用于鉴权;必传)
long authUserId = 6781;
// 登录用户昵称(必传)
String userName = "Android用户";
// 后台提供的userId(用于连接WebSocket;必传)
String userId = rtcInfo.getUserId();
// 房间号(必传)
String roomId = rtcInfo.getRoomId();
// 房间名称
String roomName = rtcInfo.getLiveTitle();
// 房间创建者(必传)
String hostId = rtcInfo.getHostId();
// 创建者头像
String hostImage = rtcInfo.getIcon();
// 报道id
String reportId = rtcInfo.getReportId();
// 拨打时间点
long callSendWhen = rtcInfo.getStartDate();
// 条件判断
if (authUserId > 0
&& !TextUtils.isEmpty(userId)
&& !TextUtils.isEmpty(roomId)
&& RtcClient.getCallState() == RtcCallStatus.CALL_IDLE
&& !RtcClient.callTimeOut(callSendWhen)) {
RtcClient
.newBuilder(this)
.authUrl(BuildConfig.RTC_URL_AUTH)
.socketUrl(BuildConfig.RTC_URL_SOCKET)
.authUserId(String.valueOf(authUserId))
.userId(userId)
.userName(userName)
.reportId(reportId)
.hostId(hostId)
.roomId(roomId)
.roomName(roomName)
.hostHeadImage(hostImage)
.build()
.rtc();
}
API说明
- 启动通话页面
/**
* 启动通话页面
*
* @param context 上下文
* @return 构建者
*/
public static Builder newBuilder(Context context) {
return new Builder(context);
}
- 获取通话状态
/**
* 获取通话状态
*
* @return 通话状态
*/
public static RtcCallStatus getCallState() {
return RtcManager.getInstance().getRtcStatus();
}
public enum RtcCallStatus {
/*空闲状态*/
CALL_IDLE,
/*待接听 中*/
ANSWER_ING,
/*通话 中*/
CALL_ON,
/*结束通话*/
CALL_OFF,
/*通话异常*/
CALL_ERROR,
/*连接中*/
CALL_CONNECTION
}
- 判断通话是否过期
/**
* 判断通话是否过期
* 默认3分钟
*
* @param callSendWhen 拨打时间
* @return 是否过期
*/
public static boolean callTimeOut(long callSendWhen) {
return System.currentTimeMillis() - callSendWhen > CALL_TIME_OUT_VALUE;
}
- 打开通话页面
/**
* 打开通话页面
*/
public void rtc() {
VideoChatActivity.launchSelf(NullObjectCheck.requestObjectNotNull(context, "context"), NullObjectCheck.requestObjectNotNull(rtcParam, "rtcParam"));
}
备注
修改视频通话悬浮窗样式可以通过复写rtc_layout_float_view.xml布局文件