准备工作
帐号申请
点此注册 一个账号,或者联系商务代为开通,或在网站咨询客服。
创建项目
可以在 管理平台 中创建新的项目(系统有一个默认项目,可以直接使用),如下图:
为了保障接口安全,后台不再显示App Secret,所以请在创建项目成功显示App Secret时妥善保存好。 如果遗忘只能如下图更换App Secret:
防火墙开通
在使用云屋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下载
- 点此下载 Android SDK
SDK导入及集成注意事项
注意: 以Android Stuido作为集成SDK实例工具, 集成流程如下:
-
创建一个Android项目
-
找到解压后的SDK根目录中,找到libs文件夹,将其拷贝到工程项目的app/libs目录中 ,如图所示:
在app目录下的build.gradle文件中android块中配置相关的sourceSets标签,如果没有使用该标签则新增,代码如下
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
- 添加权限声明到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" />
- 添加动态权限
开发环境中设置的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;
}
- 编写混淆文件,打开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############