准备工作

帐号申请

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

创建项目

可以在管理平台中创建新的项目(系统有一个默认项目,可以直接使用)。
项目信息页内可得到此项目的App ID及App Secret。如下图:
GetAPPID

防火墙开通

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

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

SDK集成准备

内容简介

  • 开发者使用SDK进行业务开发前,请先按照如下步骤配置开发环境。
  • 此部分内容包括: 开发工具、SDK下载、SDK导入的支持说明等部分。

开发工具

推荐使用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']
        }
    }
  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.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

  1. 添加动态权限

开发环境中设置的compileSdkVersion高于23(Android6.0)时以上时,请注意添加相机,录音和内部存储空间的动态权限

Manifest.permission.CAMERA
Manifest.permission.RECORD_AUDIO
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.READ_PHONE_STATE
  • 检查是否开启动态权限
/**
 * 查看是否权限 返回值为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文件,添加如下代码。

-keep class * { native <methods>; }
-keep class com.cloudroom.cloudroomvideosdk.** { *; }
-keep class com.cloudroom.cloudroomvideosdk.model.** { *; }
-keep class com.cloudroom.tool.** { *; }
-keep class com.cloudroom.screencapture.** { *; }
-keep class org.crmedia.** { *; }
-keep class org.crmedia.clearvoice.** { *; }
-keep class org.crmedia.crvedemo.** { *; }
-keep class org.qtproject.qt5.android.** { *; }
-keep class org.qtproject.qt5.android.bearer.** { *; }
-keep class org.qtproject.qt5.android.accessibility.** { *; }