tencent cloud

文档反馈

最后更新时间:2024-05-17 11:48:33
    本文将介绍如何在短时间内完成 TUILiveKit 组件的接入,跟随本文档,您可以在10分钟内完成接入工作,并最终得到一个包含完备 UI 界面的直播功能。

    环境准备

    Android 5.0(SDK API Level 21)及以上版本。
    Gradle 4.2.1 及以上的版本。
    Android 5.0 及以上的手机设备。
    环境配置或编译运行期间,如有问题,请参见 常见问题

    步骤一:开通服务

    在使用腾讯云提供的音视频服务前,您需要前往控制台,为应用开通音视频服务。具体步骤请参见 开通服务(TUILiveKit)

    步骤二:下载 TUILiveKit 组件

    Java
    Github 中克隆/下载代码,然后拷贝 Android 目录下的 tuilivekit 子目录到您当前工程中的 app 同一级目录中,如下图:
    
    
    

    步骤三:工程配置

    Java
    1. 在工程中添加 jitpack 仓库依赖(下载播放礼物 svg 动画的三方库 SVGAPlayer):
    gradle7.0以下版本
    gradle7.0及以上版本
    在工程根目录下的 build.gradle 文件中添加 jitpack 仓库地址:
    allprojects { repositories { google() mavenCentral()
    // 添加 jitpack 仓库地址 maven { url 'https://jitpack.io' } } }
    在工程根目录下的 settings.gradle 文件中添加 jitpack 仓库地址:
    dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral()
    // 添加 jitpack 仓库地址 maven { url 'https://jitpack.io' } } }
    2. 在工程根目录下找到 settings.gradle 文件,并在其中增加如下代码,它的作用是将 步骤二 中下载的 tuilivekit 组件导入到您当前的项目中:
    include ':tuilivekit'
    3. 在 app 目录下找到 build.gradle 文件,并在其中增加如下代码,它的作用是声明当前 app 对新加入的 tuilivekit 组件的依赖:
    api project(':tuilivekit')
    说明:
    TUILiveKit 工程内部已经默认依赖:TRTC SDKIM SDKtuiroomengine 以及公共库 tuicore,不需要开发者单独配置。如需进行版本升级,则修改tuilivekit/build.gradle文件即可。
    4. 由于我们在 SDK 内部使用了Java 的反射特性,需要将 SDK 中的部分类加入不混淆名单,因此需要您在 proguard-rules.pro 文件中添加如下代码:
    -keep class com.tencent.** { *; }
    5. AndroidManifest.xml里,给applicationandroid:theme 属性配置一个Theme.AppCompat主题:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
    ...
    </application>
    </manifest>
    注意:
    TUILiveKit 会在内部帮助您动态申请相机、麦克风、读取存储权限等,如果因为您的业务问题需要删减,可以请修改tuilivekit/src/main/AndroidManifest.xml
    如果遇到AndroidManifest.xml 提示 allowBackup 相关异常,请参见 allowBackup 异常
    如果遇到 Theme.AppCompat 相关问题,请参见 Activity 主题问题

    步骤四:登录

    在调用 TUILiveKit 组件各项功能之前,先要执行 TUI 组件的登录。在您的项目中,建议在您的业务登录场景里或者 App 的首个启动 Activity 里,添加执行如下登录代码,它的作用是通过调用 TUICore 中的相关接口完成 TUI 组件的登录。这个步骤异常关键,因为只有在登录成功后才能正常使用 TUILiveKit 的各项功能,故请您耐心检查相关参数是否配置正确:
    Java
    //登录
    TUILogin.login(context,
    1400000001, // 请替换为步骤一取到的 SDKAppID
    "denny", // 请替换为您的 UserID
    "xxxxxxxxxxx", // 您可以在控制台中计算一个 UserSig 并填在这个位置
    new TUICallback() {
    @Override
    public void onSuccess() {
    Log.i(TAG, "login success");
    }
    
    @Override
    public void onError(int errorCode, String errorMessage) {
    Log.e(TAG, "login failed, errorCode: " + errorCode + " msg:" + errorMessage);
    }
    });
    参数说明 这里详细介绍一下 login 函数中所需要用到的几个关键参数:
    SDKAppID:在 开通服务 中您已经获取到,这里不再赘述。
    UserID:当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(_)。
    UserSig:使用 开通服务 获取的 SDKSecretKey 对 SDKAppID、UserID 等信息进行加密,就可以得到 UserSig,它是一个鉴权用的票据,用于腾讯云识别当前用户是否能够使用 TRTC 的服务。您可以通过控制台左侧项目栏中的 UserSig 工具,创建一个临时可用的 UserSig。
    
    
    
    更多信息请参见 UserSig 相关
    注意:
    这个步骤也是目前我们收到的开发者反馈最多的步骤,常见问题如下:
    SDKAppID 设置错误。
    userSig 被错配成了加密密钥(Secretkey),userSig 是用 SecretKey 把 SDKAppID、userID 以及过期时间等信息加密得来的,而不是直接把 SecretKey 配置成 userSig。
    userSig 被设置成“1”、“123”、“111”等简单字符串,由于 TRTC 不支持同一个 UserID 多端登录,所以在多人协作开发时,形如 “1”、“123”、“111” 这样的 userID 很容易被您的同事占用,导致登录失败,因此我们建议您在调试的时候设置一些辨识度高的 userID。
    Github 中的示例代码使用了 genTestUserSig 函数在本地计算 userSig 是为了更快地让您跑通当前的接入流程,但该方案会将您的 SecretKey 暴露在 App 的代码当中,这并不利于您后续升级和保护您的 SecretKey,所以我们强烈建议您将 userSig 的计算逻辑放在服务端进行,并由 App 在每次使用 TUILiveKit 组件时向您的服务器请求实时计算出的 userSig。

    步骤五:进入直播预览画面

    注意:
    请务必确保已经按照 步骤四 完成登录操作。只有TUILogin.login登录成功后才能正常进入直播预览画面。
    1. 新建 app_activity_anchor.xml 文件(默认路径:app/src/main/res/layout/app_activity_anchor.xml)。
    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/fl_container" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
    2. 新建 AnchorActivity.java,并在AndroidManifest.xml里注册,通过加载 TUILiveKit 的 TUILiveRoomAnchorFragment 页面,就可以拉起预览画面。
    Java
    public class AnchorActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.app_activity_anchor); //主播的房间 ID
    String roomId = "123666";
    
    //在 Activity 中显示 主播预览页面,点击预览页面的开始直播按钮,即可发起在线视频直播
    FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); TUILiveRoomAnchorFragment anchorFragment = new TUILiveRoomAnchorFragment(roomId); fragmentTransaction.add(R.id.fl_container, anchorFragment); fragmentTransaction.commit(); } }
    在 app 项目的 AndroidManifest.xml里注册 AnchorActivity(请使用您的AnchorActivity实际包名):
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application>
    ...
    <!-- 示例:注册AnchorActivity,请使用您的实际包名 -->
    <activity
    android:name="com.trtc.uikit.livekit.example.main.AnchorActivity"
    android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"/>
    ...
    </application>
    </manifest>
    注意:
    1. 由于AnchorActivity继承自AppCompatActivity,所以要给AnchorActivity 设置一个Theme.AppCompat主题。您可以修改成自己的Theme.AppCompat主题。
    2. 如遇到 Theme.AppCompat 相关问题,请参见 Activity 主题问题
    3. 在您需要开启直播的地方(具体由您的业务决定,默认情况下可在 MainActivity 某点击事件里执行),执行如下操作,拉起主播开播页面:
    Java
    选项二
    Intent intent = new Intent(context, AnchorActivity.class); startActivity(intent);
    
    
    
    
    视频直播预览画面
    
    
    
    视频直播中画面

    步骤六:观众进入直播间

    注意:
    请务必确保已经按照 步骤四 完成登录操作。只有TUILogin.login登录成功后观众才能正常进入直播间。并且,登录的观众 UserID 不要与主播UserID相同。
    1. 新建 app_activity_audience.xml 文件(默认路径:app/src/main/res/layout/app_activity_audience.xml)。
    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/fl_container" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
    2. 新建 AudienceActivity.java,并在AndroidManifest.xml里注册, 通过加载 TUILiveKit 的 TUILiveRoomAudienceFragment 页面,进入直播间。
    Java
    public class AudienceActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.app_activity_audience); //主播的房间 ID
    String roomId = "123666"; FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); TUILiveRoomAudienceFragment audienceFragment = new TUILiveRoomAudienceFragment(roomId); fragmentTransaction.add(R.id.fl_container, audienceFragment); fragmentTransaction.commit(); } }
    在 app 项目的 AndroidManifest.xml里注册AudienceActivity(请使用您的AudienceActivity实际包名):
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application>
    ...
    <!-- 示例:注册AudienceActivity,请使用您的实际包名 -->
    <activity
    android:name="com.trtc.uikit.livekit.example.main.AudienceActivity"
    android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"/>
    ...
    </application>
    </manifest>
    注意:
    1. 由于AudienceActivity继承自AppCompatActivity,所以要给AudienceActivity 设置一个Theme.AppCompat主题。您可以修改成自己的Theme.AppCompat主题。
    2. 如遇到 Theme.AppCompat 相关问题,请参见 Activity 主题问题
    3. 在您需要观众进房的地方(具体由您的业务决定,默认情况下可在 MainActivity 某点击事件里执行),执行如下操作,拉起观众进房页面:
    Java
    Intent intent = new Intent(context, AudienceActivity.class); startActivity(intent);
    
    
    
    视频直播间
    
    
    
    视频直播间

    更多特性

    弹幕
    礼物

    常见问题

    如果您的接入和使用中遇到问题,请参见 常见问题
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持