音视频通话

准备工作

帐号申请

点此注册 一个账号,或者联系商务代为开通,或在网站咨询客服。

创建项目

可以在 管理平台 中创建新的项目(系统有一个默认项目,可以直接使用),如下图:
GetAPPID

为了保障接口安全,后台不再显示App Secret,所以请在创建项目成功显示App Secret时妥善保存好。 如果遗忘只能如下图更换App Secret:
ChangeAppSecret

防火墙开通

在使用云屋SDK提供的相关服务之前,您需要打开下面这些特定的端口:

端口 功能说明 Windows, Linux, Android, iOS, macOS, 网页插件 H5 SDK 小程序SDK 直播观看SDK 后台管理页面
TCP 2725 后台管理服务端口
TCP 2726 https服务端口
(SDK缺省使用https)
TCP 2728 信令服务端口
TCP 1935 服务器音视频流端口(rtmp)
UDP 2698 服务器音视频流端口
UDP 2699 服务器音视频流端口(H5)

开发环境准备

开发工具

推荐使用Android Studio或者Eclipse作为Android开发工具。

SDK下载

SDK导入及集成注意事项

注意: 以Android Stuido作为集成SDK实例工具, 集成流程如下:

  1. 创建一个Android项目

  2. 找到解压后的SDK根目录中,找到libs文件夹,将其拷贝到工程项目的app/libs目录中 ,如图所示:

An image

在app目录下的build.gradle文件中android块中配置相关的sourceSets标签,如果没有使用该标签则新增,代码如下

	sourceSets {
		main {
			jniLibs.srcDirs = ['libs']
		}
	}
	
	dependencies {
		implementation fileTree(dir: 'libs', include: ['*.jar'])
	}
  1. 添加权限声明到AndroidManifest.xml文件
 <!-- 为了能使用OpenGLES 2.0 API,你必须在你的manifest中添加以下声明: -->
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />
    <!-- 如果你的应用要使用纹理压缩功能,你必须还要声明设备需要支持什么样的压缩格式 -->
    <supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
    <supports-gl-texture android:name="GL_OES_compressed_paletted_texture" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
	<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
	<uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

  1. 添加动态权限

开发环境中设置的compileSdkVersion高于23(Android6.0)时,请注意添加相机,录音等动态权限申请

Manifest.permission.CAMERA
Manifest.permission.RECORD_AUDIO
Manifest.permission.READ_PHONE_STATE

compileSdkVersion高于31(Android12)时,请注意添加蓝牙动态权限申请

Manifest.permission.BLUETOOTH_CONNECT
  • 检查是否开启动态权限
/**
 * 查看是否权限 返回值为true代表权限已经全部开启
 */
public boolean checkPermission(String... permissions) {
    //如果android版本低于Android6.0,默认为开启权限(无危险权限)
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return true;

    PackageManager pm = contextWeakReference.get().getPackageManager();
    for(String permission : permissions) {
        if (PackageManager.PERMISSION_GRANTED !=
            pm.checkPermission(permission, contextWeakReference.get().getPackageName())) {
            return false;
        }
    }
    return true;
}
  • 添加缺省的动态权限
/**
 * 获取需要申请权限的列表
 */
private List<String> findDeniedPermissions(String[] permissions) {
    List<String> needRequestPermissionList = new ArrayList<>();
    for (String perm : permissions) {
        if (ContextCompat.checkSelfPermission(contextWeakReference.get(), perm) != PackageManager.PERMISSION_GRANTED) {
            needRequestPermissionList.add(perm);
        } else {
            if (ActivityCompat.shouldShowRequestPermissionRationale(
                    activityWeakReference.get(), perm)) {
                needRequestPermissionList.add(perm);
            }
        }
    }
	
    return needRequestPermissionList;
}
  1. 编写混淆文件,打开app目录下的proguard-rules.pro文件,添加如下代码。

############CloudroomVideoSDK begin############
-dontshrink
-dontoptimize
-ignorewarnings
-dontskipnonpubliclibraryclassmembers

-keep class * { native ; }
-keep class com.cloudroom.cloudroomvideosdk.** { *; }
-keep class com.cloudroom.cloudroomvideosdk.model.** { *; }
-keep class com.cloudroom.screencapture.** { *; }
-keep class com.rtc.tool.** { *; }
-keep class com.rtc.screencapture.** { *; }
-keep class com.rtc.usbcamera.** { *; }
-keep class org.crmedia.** { *; }
-keep class org.crmedia.clearvoice.** { *; }
-keep class org.crmedia.crvedemo.** { *; }

############CloudroomVideoSDK end############