Android Java API

最近更新时间:2025-09-23 10:21:51

我的收藏

API 描述

Android 平台提供 Native C API (C/C++ 现场设备 SDK API) 和 Java API。本文档为 Java API, 适用于 Android 系统,使用时请先引用 Android SDK aar 包。

SDK 集成说明

开发环境要求

●Android Studio 2.0+。
●Android 5.0(SDK API 21)及以上系统。

SDK 引用及依赖配置

1. 将 AAR 文件复制到工程目录下(例如:app/libs)。
2. 在 gradle 文件中增加依赖配置。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar']) //添加 SDK 依赖
implementation 'com.google.code.gson:gson:2.8.9' //添加gson依赖
}

权限配置

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.CAMERA" />

混淆配置

-keep class com.tencent.trro.**{*;}

API 概览

TRROField

SDK 主入口。
API
描述
获取 TrroField 单例。
注册 SDK 事件监听。
使用 TrroOptions 配置启动 SDK。
使用 Json 配置启动 SDK。
start
启动 SDK 视频传输托管,会自动按需推流/取消推流。
stop
停止并退出 SDK。
给现场设备发送控制数据。
外部输入音频数据。
audioMute
拉流端音频设置。
外部视频流输入接口。
外部编码流输入。
设置远端设备操控权限。
评估网络状态。
获取 SDK 版本号。

getInstance

获取 TrroField 单例。

setListener

注册 SDK 事件监听,可获取网关连接状态、媒体信息等。
参数
描述
listener
监听器实例。

initWithOptions

使用 TrroOptions 配置启动 SDK,接口为同步阻塞模式,等待信令连接成功后返回。返回值:成功 1 失败 <= 0。
参数
描述
context
ApplicationContext
trroOptions
配置选项, 选项说明参见 现场设备配置说明

initWithJson

使用 JSON 配置启动 SDK,接口为同步阻塞模式,等待信令连接成功后返回。返回值:成功 1 失败 <= 0
参数
描述
context
ApplicationContext
jsonStr
JSON 格式说明参见 现场设备配置说明

start

启动音视频传输业务,返回值:成功 1 失败 <= 0
参数
描述
 view
SDK 采集视频流显示的 view。如果不需要 SDK 采集视频显示,可使用 start() 接口。

start

启动音视频传输业务,适用外部视频流输入,返回值:成功 1 失败 <= 0。

stop

停止并退出 SDK。

sendControlData

发送消息给观看端。返回值:成功 1 失败 <= 0。
参数
描述
 msg
二进制消息内容,单条大小小于1KB,每秒限制100条。

externalAudioData

外部输入音频数据,需要配置"audio_enable": 1 并开启外部音频输入"audio_external": 1,此时 SDK 音频采集会关闭并使用外部输入的音频数据。
参数
描述
gwid
目标连接的现场设备 ID。
data
音频 PCM 数据,16bit采样,10ms长度。
channel
音频声道数。
sampleRate
音频采样率。

audioMute

拉流端音频设置。
参数
 描述
deviceId
观看端 ID。
mute
true:静音。
false:取消静音。

externalVideoData

外部视频流输入,需要配置对应视频流 protocol 为 outside。返回值:成功 1 失败 <= 0。
参数
描述
streamId
视频流 ID,从0开始,第2路为1,以此递增。
data
图像数据。
width
图像宽。
height
图像高。
type
图像类型。
0:YUV I420
4:YUYV
5:JPEG 
推荐 YUVI420 格式:3 UYVY 6 ARGB 7 NV12 。

externalEncodeVideoData

外部编码流输入,需要配置对应视频流 protocol 为 outenc。返回值:成功 1 失败 <= 0。
参数
描述
streamId
视频流 ID,从0开始,第2路为1,以此递增。
data
图像编码数据,codec 类型与初始化配置中对应 streamId 视频流 codec 一致。
I 帧数据前需带 SPS/PPS 等信息。
width
图像宽。
height
图像高。
frameType
编码类型:
0:P 帧 。
1:I 帧。

setOperationPermission

设置远端设备操控权限。返回值:成功 1 失败 <= 0。
同时只能有一个远端设备有 master 权限,若已有设备是 master 权限,再设置 master 权限,会取消之前设备的权限然后设置新设备。
参数
 描述
deviceId
设置权限的远端设备 ID。
permission
0 guest,只有观看权。
1 master, 完全控制权限。

testNetworkQuality

试推流测试网络情况。返回值:无法评估网络,1:良好网络,2:较差网络,3:不可用网络。
参数
 描述
streamIds
想要进行网络探测的流 ID 数组。
streamSize
想要进行网络探测的流 ID 数组的大小。
testTime
连接成功后的探测持续时间,test_time 最小2s,最大10s。

getSDKVersion

获取 SDK 版本号信息。返回值:SDK字符串版本号。

TrroFieldListener

SDK 事件监听接口。
API
描述
onState
连接状态回调。
onError
出错事件通知。
接收远端设备消息回调。
编码建议信息回调,适用于外部输入编码帧场景。
延迟信息回调。
信令连接状态回调。
媒体传输状态回调。
远端混音音频数据回调。
媒体传输状态回调。
远端设备操控权限申请通知。

onState

视频流连接状态回调
参数
描述
streamId
现场设备流 ID。
state
0:未连接,1:连接中,2:已连接,3:正在断开连接

onError

视频流连接状态回调。
参数
描述
errorCode
错误码。
errorMsg
错误信息。

onControlData

接收远端设备消息回调。
参数
描述
controllerId
远端设备 ID。
msg
消息体内容,二进制。
len
消息体长度。
qos
消息 QoS 类型。
0:超低时延通道。
1:可靠通道。

onEncodeFrameInfo

编码建议信息回调,适用于外部输入编码帧场景。
参数
描述
streamId
流 ID。
type
回调类型, 0:强制关键帧请求 ,  1 码率更新请求 。
bitrate
 type为1时有效,表示建议输入的编码数据码率,单位 kbps 。

onLatencyReport

延迟信息回调。
参数
描述
streamId
流 ID。
vcct
视频控制闭环时延,等于视频上行延迟(不含采集)+ 控制下行延迟。

onSignalState

信令连接状态回调。
参数
描述
 state
信令连接状态。
0 连接建立成功(初始化首次连接成功)。
1 连接断开,内部会进行自动重连 。
2 自动重连成功 。
3 被踢下线(已有相同用户登录)。
4 用户名或者密码错误。

onMediaState

媒体传输状态回调。
参数
描述
streamId
流 ID。
fps
每秒帧数目。
bps
每秒数据量。
rtt
网络往返时间。
packetsLost
丢包,丢包率= packetsLost / 255.0 * 100%。
packetsSend
总发送数目。
stun
穿网模式 0:host, 1:srflx, 2:prflx, 3:relay。

onRemoteMixAudioFrame

远端混音音频数据回调。
参数
描述
data
音频 PCM 数据
length
数据长度
channel
音频声道数目。
单声道为1。
双声道为2。
多声道为 N。
sampleRate
音频采样率

onAudioState

媒体传输状态回调。
参数
描述
streamId
流 ID。
fps
每秒帧数目。
bps
每秒数据量。
rtt
网络往返时间。
packetsLost
丢包,丢包率= packetsLost / 255.0 * 100%。
packetsSend
总发送数目。
stun
穿网模式 0:host, 1:srflx, 2:prflx, 3:relay。

onOperationPermissionRequest

远端设备操控权限申请通知。
参数
描述
remoteDeviceId
请求权限的remote deviceId。
permission
请求的权限, 0: guest 只有观看权限,  1: master 完全控制权限。

TXCloudVideoView

视频流显示控件。

示例代码

SDK 初始化
//初始化配置,详细参数说明参考:https://cloud.tencent.com/document/product/1584/89794
//设置流的属性
TrroOptions.StreamsConfig streamsConfig = new TrroOptions.StreamsConfig.Builder().bps(2000)
                .width(width)
                .height(height)
                .camera(mCamera)
                .build();
TrroOptions trroOptions = new TrroOptions.Builder()
                        .deviceId(mDeviceId)
                        .projectid(mProjectId)
                        .password(mPassword)                       
                        .logEnable(2) //日志级别,0:关闭,1,输出部分运行日志,2:输出详细运行日志
                        .streamConfigs(new  TrroOptions.StreamsConfig[] { streamsConfig })
                        .deviceName(mDeviceName)
                        .build();                      
//启动SDK,阻塞接口,建议在工作线程中调用                    
TrroField.getInstance().initWithOptions(getApplicationContext(), trroOptions);
启动音视频传输托管
//配置视频流显示控件
<com.tencent.trro.rtmp.ui.TXCloudVideoView
        android:id="@+id/txcvv_1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
/>
//启动音视频传输托管
TrroField.getInstance().start(txCloudVideoView);
事件回调监听
//在Activity生命周期函数中设置监听器,比如onStart方法设置监听,在onStop方法取消监听
TrroField.getInstance().setListener(this);
资源释放
//在退出时释放资源,比如Activity的onDestroy方法中调用
TrroGateway.getInstance().stop();