程序笔记   发布时间:2022-07-18  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了腾讯互动白板+即时通讯+实时音视频,Android学生端接入大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

腾讯互动白板+即时通讯+实时音视频,Android学生端接入

一、简介

线上教学方案:腾讯云互动白板(Tencent Interactive Whiteboard,TIW)+即时通信(Instant messaging,IM)+实时音视频(Tencent RTC)实现老师线上互动教学 官方地址:

https://cloud.tencent.com/product/tiw https://cloud.tencent.com/product/im https://cloud.tencent.com/product/trtc

二、接入

1、前置步骤

需要在控制台申请appid,key等,参https://cloud.tencent.com/document/product/1137/39899

2、配置工程

app.build: 引用依赖库 rtc,im,eb,并指定app的cpu架构

android{
    ...
    defaultconfig{
        ...
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
        }
        ...
    }
    ...
}
...
dependencies{
    ...
    api 'com.tencent.liteav:LiteAVSDK_TRTC:8.7.10102'
    api 'com.tencent.imsdk:imsdk:4.8.50'
    api 'com.tencent.edu:TEduBoardSdk:2.6.0.98'
    ...
}
@H_197_27@

project.build: app.build中的依赖文件下载出问题时,可以参如下配置

buildscript {
    repositories {
        ...
        maven {url 'https://dl.bintray.com/tencentqcloudterminal/maven' }
        ...
    }
}
...
allprojects {
     repositories {
        ...
        maven {url 'https://dl.bintray.com/tencentqcloudterminal/maven' }
        ...
    }
}
@H_197_27@

@H_847_21@manifest: 添加以下权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTinGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<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.bLUETOOTH" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
@H_197_27@

3、接入IM

  • 初始化IM:
V2TIMManager.geTinstance().initSDK(Context context, int sdkAppID, V2TIMSDKConfig config,V2TIMSDKListener     listener)
@H_197_27@

sdkAppID: 上述控制台上申请的appid config: 配置信息可为传null,目前只有配置日志等级,默认info级别 listener: 初始化回调接口,提供了网络状态和用户信息变化回调,所有V2TIMSDKListener回调都可以参下:

回调方法 描述 推荐操作
onConnecTing()@H_450_82@ SDK 正在连接到腾讯云服务器@H_450_82@ 适合在 UI 上展示“正在连接”状态。@H_450_82@
onConnectsuccess()@H_450_82@ SDK 已经成功连接到腾讯云服务器@H_450_82@ 连接成功@H_450_82@
onConnectFailed()@H_450_82@ SDK 连接腾讯云服务器失败@H_450_82@ 可以提示用户当前网络连接不可用。@H_450_82@
onKickedOffline()@H_450_82@ 当前用户被踢下线@H_450_82@ 此时可以 UI 提示用户“您已经在其他端登录了当前账号,是否重新登录?”@H_450_82@
onUserSigExpired()@H_450_82@ 在线时票据过期@H_450_82@ 请使用新签发的 UserSig 进行登录。@H_450_82@
onSelfInfoupdated()@H_450_82@ 登录用户的资料发生了更新@H_450_82@ 可以在 UI 上更新自己的头像和昵称。@H_450_82@
  • 登录IM:
V2TIMManager.geTinstance().login(String userId, String userSig, V2TIMCallBACk callBACk);
@H_197_27@

userId: 用户id,可自定义,不超过32位 userSig: IM SDK 登录票据(token),由业务服务器生成 callBACk: 操作结果回调,所有V2TIMCallBACk回调都可以参下表说明:

回调方法 描述
void onError(int code, String desc);@H_450_82@ 出错时回调,code码详情@H_450_82@
void onsuccess();@H_450_82@ 成功时回调@H_450_82@

注意:调用 IM SDK Login 成功登录后,将会开始计算 DAU,请根据业务场景合理使用 IM SDK Login操作,避免出现 DAU 过高的情况。

登录时机 说明
App 启动后首次使用 IM SDK 的能力时@H_450_82@ 本项目为进入连麦模式才首次登录@H_450_82@
IM SDK (V2TIMSDKListener) 抛出 onUserSigExpired 回调@H_450_82@ 登录票据 (token) 已过期,需要使用新的 UserSig进行登录@H_450_82@
IM SDK(V2TIMSDKListener) 抛出 onKickOffline 回调@H_450_82@ 当前用户被踢下线,同平台多点登录时触发,可虑重新登录或者下线@H_450_82@
  • 退出登录:
V2TIMManager.geTinstance().logout(null);
@H_197_27@

为了降低 DAU,项目在结束连麦后,要及时调用退出登录。

  • 加入群组:

群分类: 好友工作群(Work)、陌生人社交群(Public)、临时会议群(MeeTing)、直播群(AVChatRoom);项目采用public群(需要审批),详细区别参:官方群类型介绍

申请入群:

V2TIMManager.geTinstance().joinGroup(String groupID, String message, V2TIMCallBACk callBACk);
@H_197_27@
参数 说明
groupID@H_450_82@ 群id,由主播端创建、业务服务器下发@H_450_82@
message@H_450_82@ 申请入群说明@H_450_82@
callBACk@H_450_82@ 发送申请状态回调@H_450_82@

入群结果监听:void onApplicationProcessed(String groupID, V2TIMGroupMemberInfo opUser, BooleanisAgreeJoin, String opReason) 其中isAgreeJointrue表示同意加群,反之被拒绝。同意加群后,全员(包括请求者)收到onMemberEnter回。

监听申请结果:

V2TIMManager.geTinstance().setGroupListener(V2TIMGroupListener listener);
@H_197_27@

V2TIMGroupListener:该回调接口能监听所有群相关的状态,重要方法参下表:

方法 说明
void onMemberEnter(String groupID, List<V2TIMGroupMemberInfo>memberList)@H_450_82@ 有用户加入群(全员能够收到)@H_647_25@memberList - 加入的成员@H_450_82@
void onMemberLeave(String groupID, V2TIMGroupMemberInfomember)@H_450_82@ 有用户离开群(全员能够收到)@H_647_25@member - 离开的成员注意:群主只能解散群不能离开@H_450_82@
void onMemberKicked(String groupID, V2TIMGroupMemberInfo opUser, List<V2TIMGroupMemberInfo>memberList)@H_450_82@ 某些人被踢出某群(全员能够收到)opUser - 处理人@H_647_25@memberList - 被踢成员@H_450_82@
void onGroupDismissed(String groupID, V2TIMGroupMemberInfoopUser)@H_450_82@ 群被解散了(全员能收到)opUser - 处理人@H_450_82@
void onGroupRecycled(String groupID, V2TIMGroupMemberInfoopUser)@H_450_82@ 群被回收(全员能收到)opUser - 处理人@H_450_82@
void onApplicationProcessed(String groupID, V2TIMGroupMemberInfo opUser, Boolean isAgreeJoin, StringopReason)@H_450_82@ 加群请求已经被群主或管理员处理了(只有申请人能够收到)opUser -处理人isAgreeJoin - 是否同意加群opReason - 处理原因@H_450_82@

4、接入RTC

备注:rtc使用的房间为im中的房间

  • 概念:
名称 说明
通话模式@H_450_82@ 无旁路,本项目不用@H_450_82@
直播模式@H_450_82@ 有旁路@H_450_82@
接口机@H_450_82@ 用于连麦互动,费用高@H_450_82@
代理机@H_450_82@ 用于观众拉流观看,费用低@H_450_82@
  • 初始化RTC:
@H_872_450@
  • 获取 TRTCCloud 实例:TRTCCloud.sharedInstance(context);
  • 设置腾讯云视频通话功能的事件回调接口:setListener(TRTCCloudListener listener)
    • 设置本地视频编码参数: 详情参官方文档说明
      void setVideoEncoderParam(com.tencent.trtc.TRTCCloudDef.TRTCVideoEncParam trtcVideoEncParam)
      @H_197_27@
      
    • 进入房间:
      void enterRoom(com.tencent.trtc.TRTCCloudDef.TRTCParams trtcParams, int scenE)@H_197_27@
              进入房间的返回结果,会在TRTCCloudlistener.onEnterRoom(result)中回调。更多详情参官方文档
              
      • trtcParams:appid,token,roomId,role等,如果进入房间并互动,role要设置为主播。更多详情参官方文档
      • scene:应用场景主播端和连入端必须统一,本项目采用连麦直播(Live)TRTCCloudDef.TRTC_APP_SCENE_LIVE。更多详情参官方文档
      注意:不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题
    • 退出房间: void exitRoom()
    • 开始连麦互动:
      trtcCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_DEFAULT);
      trtcCloud.startLocalPreview(true, view);@H_197_27@
              
      • 如果当前没有在互动中,需要先调用trtcCloud.switchRole(TRTCCloudDef.TRTCRoleAnchor)切换到主播角色
      • startLocalAudio: 开启音频,参数为音频质量。更多详细说明请参官网文档
      • startLocalPreview: 开启摄像头预览,第一个参数是否为前置摄像头,第二个参数为承载预览的TXCloudVideoView。更多详细说明请参官网文档
      • 只要在房间中,会自动推流
    • 结束连麦互动:
      trtcCloud.stopLocalAudio();
      trtcCloud.stopLocalPreview();@H_197_27@
          

    5、接入IW

    互动白板在有IM前提下,接入比较简单

    • 初始化:
      // 创建并初始化白板控制器
      //(1)鉴权配置
      TEduBoardController.TEduBoardAuthParam authParam = new TEduBoardController.TEduBoardAuthParam(sdkAppId, userId, userSig);
      //(2)白板默认配置
      TEduBoardController.TEduBoardInitParam initParam = new TEduBoardController.TEduBoardInitParam();
      mBoard = new TEduBoardController(context);
      //(3)添加白板事件回调
      mBoard.addCallBACk(callBACk);
      //(4)进行初始化
      mBoard.init(authParam, roomId, initParam);@H_197_27@
          initParam: 白板配置为默认配置,如果有笔画颜色等特殊需求,参官方文档配置。
          
    • 显示白板:
      //(1)获取白板 View
      View boardview = mBoard.getBoardRenderView();
      //(2)添加到父视图中
      FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
      FrameLayout container = findViewById(R.id.board_view_container);
      container.addView(boardview, layoutParams);@H_197_27@
          
    • 销毁: TIMManager.geTinstance().unInit();

    大佬总结

    以上是大佬教程为你收集整理的腾讯互动白板+即时通讯+实时音视频,Android学生端接入全部内容,希望文章能够帮你解决腾讯互动白板+即时通讯+实时音视频,Android学生端接入所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。