快速开始
前提条件
- Android Sdk版本最低为19。
- Android Studio版本最低为3.0。
运行demo
- 下载无延迟直播Android端SDK压缩包,下载完成后解压缩即可。
- 压缩包的目录结构
- 将示例项目TangRTC_SDK_for_Android\rtc\demo\TangRTC_android_demo导入Android Studio中,编译和运行项目。
- 运行起demo后,在图2-2箭头指向处填入从全时获取的拉流地址,就可以点击播放体验示例demo了。
- 更换拉流地址,需要先点击停止按键,然后更换拉流地址,再点击播放按键。
集成SDK
创建工程(开发环境建立)
-
导入文件
下载解压云会议SDK的压缩包以后,将TangRTC_SDK_for_Android\rtc\sdk目录下的所有so库和jar包拷贝到您的项目中。
导入您项目的路径类似于图3-1中的libs目录下。
-
添加依赖
如图3-2红箭头1指向的build.gradle添加以下依赖,这些依赖是全时无延迟直播SDK必须要依赖的库。
// 全时基础库
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
// Android相关基础库
testImplementation rootProject.ext.support["junit"]
implementation rootProject.ext.support["design"]
implementation rootProject.ext.support["recyclerview-v7"]
implementation rootProject.ext.dependencies["rxeasyhttp"]
implementation rootProject.ext.support["constraint-layout"]
implementation rootProject.ext.dependencies["xui"]
implementation rootProject.ext.dependencies["hawk"]
implementation rootProject.ext.dependencies["xutil-core"]
implementation rootProject.ext.dependencies["xutil-sub"]
implementation rootProject.ext.dependencies["baseadapterhelper"]
implementation rootProject.ext.dependencies["butterknife"]
implementation 'com.bytedance.boost_multidex:boost_multidex:1.0.1'
implementation rootProject.ext.dependencies["glide"]
annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]
-
添加声明
如图3-2红箭头指2向的AndroidManifest.xml文件中添加以下权限声明
//将com.tangsdk.tangrtc替换成您的包名
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.tangsdk.tangrtc">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" />
-
添加混淆
如图3-2红箭头3指向的 app/proguard-rules.pro 文件中添加如下行,防止代码混淆:(按模块分拆)
-keep class com.tangsdk.{*;} -keep class org.webrtc.{*;}。
实现功能
-
初始化
在工程的Application中进行初始化操作,注意初始化操作必须在主线程进行。
mRtcManager = TangRTCEngineManager.createTangRTCEngine(Context context,String appId, ITangRTCEngineCallBack callBack);
-
拉流
将获取到的channelId,调用joinChannel接口启动拉流流程。
mRtcManager.joinChannel(String token, String channelId, int uid, ChannelMediaOptions options);
-
运行
将程序运行在Android真机设备,部分模拟器可能存在功能或性能上的缺陷,建议使用真机体验。