实时音视频功能相关的 API,请直接查看 RTC SDK 4.x 的 API 参考。
类 | 描述 |
---|---|
RtcEngine |
实时音视频功能的基础接口。详见 RtcEngine 。 |
ILocalSpatialAudioEngine |
空间音效相关接口。详见 ILocalSpatialAudioEngine 。 |
IMediaPlayer |
媒体播放器相关接口。详见 IMediaPlayer 。 |
本文重点提供元语聊定制功能的 API 参考。
类 | 描述 |
---|---|
IMetachatService | 房间和场景资源相关接口。 |
IMetachatScene | 场景操作相关接口。 |
ILocalUserAvatar | 本地用户的昵称、虚拟形象、装扮、捏脸相关接口。 |
IMetachatEventhandler | 房间和场景资源相关回调。 |
IMetachatSceneEventhandler | 场景操作相关回调。 |
元语聊服务的基础类。
创建 IMetachatService
对象。
public static synchronized IMetachatService create();
返回值
IMetachatService
对象。
初始化 IMetachatService
对象并登录声网 RTM 系统。
public abstract int initialize(MetachatConfig config);
成功调用该方法会触发 onConnectionStateChanged
回调。
参数
config
:初始化 IMetachatService
对象需要的配置信息,详见 MetachatConfig。
返回值
0:方法调用成功
<0:方法调用失败。
销毁 IMetachatService
对象。
public static synchronized void destroy()
添加事件处理器对象。
public abstract int addEventHandler(IMetachatEventHandler eventHandler);
参数
eventHandler
:IMetachatEventHandler
对象。
返回值
移除事件处理器对象。
public abstract int removeEventHandler(IMetachatEventHandler eventHandler);
参数
eventHandler
:IMetachatEventHandler
对象。
返回值
获取场景列表。
调用该方法会触发 onGetSceneInfosResult
回调。
public abstract int getSceneInfos();
返回值
查询本地是否已经下载指定场景。
public abstract int isSceneDownloaded(long sceneId);
参数
sceneId
:场景的 ID,可以从 MetachatSceneInfo 获取。
返回值
0:本地没有下载该场景。
1:本地已经下载该场景。
下载场景到本地。
public abstract int downloadScene(long sceneId);
调用该方法会触发 onDownloadSceneProgress
回调。
参数
sceneId
:场景的 ID,可以从 MetachatSceneInfo 获取。
返回值
0:方法调用成功
<0:方法调用失败。
取消下载场景到本地。
public abstract int cancelDownloadScene(long sceneId);
调用该方法会触发 onDownloadSceneProgress
回调,其中 state
为 3。
调用该方法后如果再次调用 downloadScene
,会从上次取消下载时的进度恢复下载。
参数
sceneId
:场景的 ID,可以从 MetachatSceneInfo 获取。
返回值
0:方法调用成功
<0:方法调用失败。
清理本地场景。
public abstract int cleanScene(long sceneId);
参数
sceneId
:场景的 ID,可以从 MetachatSceneInfo 获取。
返回值
0:方法调用成功
<0:方法调用失败。
创建 IMetachatScene
对象。
public abstract int createScene(MetachatSceneConfig config);
调用该方法会触发 onCreateSceneResult 回调,创建的 IMetachatScene
对象可以在该回调里拿到。
参数
config
:创建 IMetachatScene
对象需要的配置信息,详见 MetachatSceneConfig。
返回值
0:方法调用成功
<0:方法调用失败。
场景相关操作。
销毁 IMetachatScene 对象。
public abstract int release();
调用该方法会触发 onReleasedScene 回调。
返回值
0:方法调用成功
<0:方法调用失败。
进入场景前,可以调用该方法获取用户的昵称、虚拟形象、装扮捏脸等信息。
public abstract ILocalUserAvatar getLocalUserAvatar();
返回值
ILocalUserAvatar
对象。
添加事件处理器对象。
public abstract int addEventHandler(IMetachatSceneEventHandler eventHandler);
参数
eventHandler
:IMetachatSceneEventHandler
对象。
返回值
移除事件处理器对象。
public abstract int removeEventHandler(IMetachatSceneEventHandler eventHandler);
参数
eventHandler
:IMetachatSceneEventHandler
对象。
返回值
进入场景。
public abstract int enterScene(EnterSceneConfig config);
成功调用该方法会触发 onEnterSceneResult
回调。
参数
config
:进入场景所需要的配置信息,详见 EnterSceneConfig。
返回值
0:方法调用成功
<0:方法调用失败。
离开场景。
public abstract int leaveScene();
成功调用该方法会触发 onLeaveSceneResult
回调。
返回值
0:方法调用成功
<0:方法调用失败。
往场景发送自定义消息。
public abstract int sendMessageToScene(byte[] message);
enterScene
之后调用。参数
message
:自定义消息,目前只支持字符串。消息格式可以自定义。
返回值
0:方法调用成功
<0:方法调用失败。
开启/关闭用户位置信息通知。
public abstract int enableUserPositionNotification(boolean enable);
参数
enable
:是否开启用户位置信息通知:
true
:开启用户位置信息通知,即监听 onUserPositionChanged
事件。false
:关闭用户位置信息通知,即不监听 onUserPositionChanged
事件。返回值
0:方法调用成功
<0:方法调用失败。
列举场景内所有显示器的 ID。
public abstract int enumerateVideoDisplays();
调用该方法会触发 onEnumerateVideoDisplaysResult 回调。
返回值
0:方法调用成功
<0:方法调用失败。
开启/关闭场景内指定的显示器。
public abstract int enableVideoDisplay(String displayId, boolean enable);
参数
displayId
:指定显示器的 ID。enable
:是否开启指定显示器:true
:开启显示器,即开始视频渲染。false
:关闭显示器,即关闭视频渲染。返回值
0:方法调用成功
<0:方法调用失败。
往场景内指定的显示器推送原始视频帧。
public abstract int pushVideoFrameToDisplay(String displayId, AgoraVideoFrame frame);
参数
displayId
:指定显示器的 ID。frame
:视频帧。详见 RTC SDK 4.x API 参考中的 AgoraVideoFrame。返回值
0:方法调用成功
<0:方法调用失败。
设置用户的基本信息。
int setUserInfo(MetachatUserInfo userInfo);
参数
userInfo
:在场景内展示的用户信息,详见 MetachatUserInfo。
返回值
获取用户的基本信息。
MetachatUserInfo getUserInfo();
返回值
MetachatUserInfo 对象。
设置用户的模型信息。
int setModelInfo(AvatarModelInfo modelInfo);
参数
modelInfo
:用户的虚拟形象模型信息,详见 AvatarModelInfo。
返回值
获取用户的模型信息。
AvatarModelInfo getModelInfo();
返回值
AvatarModelInfo 对象。
设置用户的装扮信息。
int setDressInfo(DressInfo dressInfo);
参数
dressInfo
:用户的装扮信息,详见 DressInfo。
返回值
获取用户的装扮信息。
DressInfo getDressInfo();
返回值
DressInfo 对象。
设置用户的捏脸信息。
int setFaceInfo(FaceInfo faceInfo);
参数
faceInfo
:本地用户的捏脸信息,详见 FaceInfo。
返回值
获取用户的捏脸信息。
FaceInfo getFaceInfo();
返回值
FaceInfo 对象。
设置自定义的用户信息。
int setExtraCustomInfo(byte[] extraCustomInfo);
参数
extraCustomInfo
:自定义的用户信息。
返回值
获取自定义的用户信息。
byte[] getExtraCustomInfo();
返回值
自定义的用户信息。
应用新设置的用户信息。
int applyInfo();
setUserInfo
、setModelInfo
、setDressInfo
、setFaceInfo
或 setExtraCustomInfo
方法,则不需要调用 applyInfo
。setUserInfo
、setModelInfo
、setDressInfo
、setFaceInfo
或 setExtraCustomInfo
方法,必须再调用 applyInfo
让设置的信息生效。返回值
IMetaChatService
类的回调。
创建 IMetachatScene
对象的状态回调。
public void onCreateSceneResult(IMetachatScene scene, int errorCode);
参数
scene
:创建的 IMetachatScene
对象,用于后续进出场景等操作。errorCode
:错误码。0 表示创建成功。连接状态改变回调。
public void onConnectionStateChanged(int state, int reason);
参数
state
:连接状态。
reason
:连接状态改变的原因。
请求 token 回调。
public void onRequestToken();
获取场景列表回调。
public void onGetSceneInfosResult(MetachatSceneInfo[] sceneInfos, int errorCode);
参数
sceneInfos
:场景信息列表,详见 MetachatSceneInfo。
errorCode
:错误码。0 表示获取场景列表成功。
下载场景进度回调。
public void onDownloadSceneProgress(long sceneId, int progress, int state);
参数
sceneId
:场景 ID。
progress
:下载进度,取值范围 [0,100]。
state
:下载状态:
IMetachatScene
类的回调。
进入场景回调。
public void onEnterSceneResult(int errorCode);
参数
errorCode
:0 表示进入房间成功,其它表示失败。
离开场景回调。
public void onLeaveSceneResult(int errorCode);
参数
errorCode
:0 表示进入房间成功,其它表示失败。
App 收到 Unity 发送的自定义信息时,该回调被触发。
public void onRecvMessageFromScene(byte[] message);
参数
message
:自定义消息。目前只支持字符串。
本地或远端用户位置变化回调。
public void onUserPositionChanged(String uid, MetachatUserPositionInfo posInfo);
参数
uid
:本地或远端用户的用户 ID。posInfo
:用户的位置信息,详见 MetachatUserPositionInfo。列举场景内所有显示器的回调。
public void onEnumerateVideoDisplaysResult(String[] displayIds);
参数
displayIds
:当前场景内所有显示器 ID 组成的列表。
销毁 IMetachatScene
对象的回调。
void onReleasedScene(int status);
参数
status
:错误码,0 表示销毁成功。
初始化 IMetachatService
对象的配置信息。
public class MetachatConfig {
public RtcEngine mRtcEngine;
public String mAppId;
public String mRtmToken;
public String mLocalDownloadPath;
public String mUserId;
public IMetachatEventHandler mEventHandler;
public MetachatConfig() {
mRtcEngine = null;
mAppId = "";
mRtmToken = "";
mLocalDownloadPath = "";
mUserId = "";
mEventHandler = null;
}
@Override
public String toString() {
return "MetachatConfig{"
+ "mRtcEngine=" + mRtcEngine + ", mAppId='" + mAppId + '\'' + ", mRtmToken='" + mRtmToken
+ '\'' + ", mLocalDownloadPath='" + mLocalDownloadPath + '\'' + ", mUserId='" + mUserId
+ '\'' + ", mEventHandler=" + mEventHandler + '}';
}
}
属性:
mRtcEngine
:RtcEngine
实例,创建方法详见 create [1/2]。mAppId
:在声网控制台获取的 App ID。mRtmToken
:用于登录声网 RTM 系统的动态密钥。开启动态鉴权后可用。集成及测试阶段请将 Token
设置为 null
。mLocalDownloadPath
:场景资源下载到本地的保存路径。mUserId
:登录声网 RTM 系统的用户 ID。该字符串不可超过 64 字节。可以通过以下方式和声网 RTC 用户 ID 绑定:mEventHandler
:回调事件,详见 IMetachatEventHandler。方法:
toString
:返回 MetachatConfig
对象的字符串表示形式。用户信息。
public class MetachatUserInfo {
public String mUserId;
public String mUserName;
public String mUserIconUrl;
public byte[] mExtraCustomInfo;
@CalledByNative
public MetachatUserInfo(
String mUserId, String mUserName, String mUserIconUrl, byte[] mExtraCustomInfo) {
this.mUserId = mUserId;
this.mUserName = mUserName;
this.mUserIconUrl = mUserIconUrl;
this.mExtraCustomInfo = mExtraCustomInfo;
}
public MetachatUserInfo() {
mUserId = "";
mUserName = "";
mUserIconUrl = "";
mExtraCustomInfo = null;
}
@Override
public String toString() {
return "MetachatUserInfo{"
+ "mUserId='" + mUserId + '\'' + ", mUserName='" + mUserName + '\'' + ", mUserIconUrl='"
+ mUserIconUrl + '\'' + ", mExtraCustomInfo=" + Arrays.toString(mExtraCustomInfo) + '}';
}
}
属性:
mUserId
:登录声网 RTM 系统的用户 ID。该字符串不可超过 64 字节。可以通过以下方式和声网 RTC 用户 ID 绑定:mUserName
:用户昵称,用于在场景内显示用户昵称。mUserIconUrl
:用户头像的 URL,用于在场景内显示用户头像。mExtraCustomInfo
:自定义的用户信息。目前只支持字符串。方法:
toString
:返回 MetachatUserInfo
对象的字符串表示形式。场景信息。
public class MetachatSceneInfo {
public long mSceneId;
public String mSceneName;
public String mThumbnailPath;
public String mScenePath;
public String mParentScenePath;
public String mDescription;
public String mSceneConfig;
public String mExtraInfo;
public MetachatBundleInfo[] mBundles;
public String mSceneVersion;
public String mSceneLocalVersion;
public long mTotalSize;
public MetachatSceneInfo() {
mSceneId = 0;
mSceneName = "";
mThumbnailPath = "";
mScenePath = "";
mParentScenePath = "";
mDescription = "";
mSceneConfig = "";
mExtraInfo = "";
mBundles = new MetachatBundleInfo[] {};
mSceneVersion = "";
mSceneLocalVersion = "";
mTotalSize = 0;
}
@CalledByNative
public MetachatSceneInfo(long sceneId, String sceneName, String thumbnailPath, String scenePath,
String parentScenePath, String description, String sceneConfig, String extraInfo,
MetachatBundleInfo[] bundles, String sceneVersion, String sceneLocalVersion, long totalSize) {
mSceneId = sceneId;
mSceneName = sceneName;
mThumbnailPath = thumbnailPath;
mScenePath = scenePath;
mParentScenePath = parentScenePath;
mDescription = description;
mSceneConfig = sceneConfig;
mExtraInfo = extraInfo;
mBundles = bundles;
mSceneVersion = sceneVersion;
mSceneLocalVersion = sceneLocalVersion;
mTotalSize = totalSize;
}
@Override
public String toString() {
return "MetachatSceneInfo{"
+ "mSceneId=" + mSceneId + ", mSceneName='" + mSceneName + '\'' + ", mThumbnailPath='"
+ mThumbnailPath + '\'' + ", mScenePath='" + mScenePath + '\'' + ", mParentScenePath='"
+ mParentScenePath + '\'' + ", mDescription='" + mDescription + '\'' + ", mSceneConfig='"
+ mSceneConfig + '\'' + ", mExtraInfo='" + mExtraInfo + '\''
+ ", mBundles=" + Arrays.toString(mBundles) + ", mSceneVersion='" + mSceneVersion + '\''
+ ", mSceneLocalVersion='" + mSceneLocalVersion + '\'' + ", mTotalSize=" + mTotalSize + '}';
}
}
属性:
mSceneId
:场景的唯一标识符。mSceneName
:场景名称。mThumbnailPath
:场景缩略图的本地路径。mScenePath
:场景资源的本地路径。mParentScenePath
:依赖的父场景资源的本地路径。mDescription
:场景的文字描述。mSceneConfig
:场景的配置信息。mExtraInfo
:其它额外信息。mBundles
:场景支持的资源包列表。mSceneVersion
:场景资源在服务器上的版本号。mSceneLocalVersion
:场景资源在本地的版本号。mTotalSize
:场景资源包总大小。方法:
toString
:返回 MetachatSceneInfo
对象的字符串表示形式。资源包信息。
public class MetachatBundleInfo {
public long mBundleId;
public long mSceneId;
public int mBundleType;
public String mBundleCode;
public String mBundleName;
public String mDescription;
public String mBundlePath;
public String mThumbnailPath;
public String mAssets;
public String mExtraInfo;
public long mBundleSize;
public MetachatBundleInfo() {
mBundleId = 0;
mSceneId = 0;
mBundleType = 1;
mBundleCode = "";
mBundleName = "";
mDescription = "";
mBundlePath = "";
mThumbnailPath = "";
mAssets = "";
mExtraInfo = "";
mBundleSize = 0;
}
@CalledByNative
public MetachatBundleInfo(long bundleId, long sceneId, int bundleType, String bundleCode,
String bundleName, String descript, String bundlePath, String thumbnailPath, String assets,
String extraInfo, long bundleSize) {
mBundleId = bundleId;
mSceneId = sceneId;
mBundleType = bundleType;
mBundleCode = bundleCode;
mBundleName = bundleName;
mDescription = descript;
mBundlePath = bundlePath;
mThumbnailPath = thumbnailPath;
mAssets = assets;
mExtraInfo = extraInfo;
mBundleSize = bundleSize;
}
@Override
public String toString() {
return "MetachatBundleInfo{"
+ "mBundleId=" + mBundleId + ", mSceneId=" + mSceneId + ", mBundleType=" + mBundleType
+ ", mBundleCode='" + mBundleCode + '\'' + ", mBundleName='" + mBundleName + '\''
+ ", mDescription='" + mDescription + '\'' + ", mBundlePath='" + mBundlePath + '\''
+ ", mThumbnailPath='" + mThumbnailPath + '\'' + ", mAssets='" + mAssets + '\''
+ ", mExtraInfo='" + mExtraInfo + '\'' + ", mBundleSize=" + mBundleSize + '}';
}
public static class BundleType {
private BundleType() {}
public static final int BUNDLE_TYPE_SCENE = 1;
public static final int BUNDLE_TYPE_AVATAR = 2;
public static final int BUNDLE_TYPE_ASSET_MANIFEST = 3;
public static final int BUNDLE_TYPE_OTHER = 100;
}
}
属性:
mBundleId
:资源包 ID,不同平台(Android、iOS)同一个资源包的ID 不同。mSceneId
:所属的场景 ID。mBundleType
:资源包类型:mBundleCode
:资源包代码,不同平台(Android、iOS)同一个资源包的代码要保持一致。mBundleName
:资源包名称。mDescription
:资源包描述。mBundlePath
:资源包的本地存储路径。mThumbnailPath
:资源包缩略图的本地存储路径。mAssets
:预留参数。mExtraInfo
:资源包的其它额外信息。mBundleSize
:资源包大小。方法:
toString
:返回 MetachatBundleInfo
对象的字符串表示形式。场景的配置信息。
public class MetachatSceneConfig {
public Context mActivityContext;
public MetachatSceneConfig() {
mActivityContext = null;
}
}
属性:
mActivityContext
:Activity 的 Context 对象,用于初始化 Unity。进入场景的配置信息。
public class EnterSceneConfig {
public String mRoomName;
public TextureView mSceneView;
public long mSceneId;
public byte[] mExtraCustomInfo;
public EnterSceneConfig() {
mRoomName = "";
mSceneView = null;
mSceneId = 0;
mExtraCustomInfo = null;
}
@Override
public String toString() {
return "EnterSceneConfig{"
+ "mRoomName='" + mRoomName + '\'' + ", mSceneView=" + mSceneView + ", mSceneId=" + mSceneId
+ ", mExtraCustomInfo=" + Arrays.toString(mExtraCustomInfo) + '}';
}
}
属性:
mRoomName
:进入场景的房间名称。mSceneView
:场景渲染所需要的视图。Android 上用原生的 TextureView 对象即可。mSceneId
:进入场景的 ID。mExtraCustomInfo
:(可选)加载场景时需要的其它额外自定义信息。你可以自行定义,目前只支持字符串。方法:
toString
:返回 EnterSceneConfig
对象的字符串表示形式。用户的虚拟形象信息。
public class AvatarModelInfo {
public String mBundleCode;
public boolean mLocalVisible;
public boolean mRemoteVisible;
public boolean mSyncPosition;
public byte[] mExtraCustomInfo;
@CalledByNative
public AvatarModelInfo(String bundleCode, boolean localVisible, boolean remoteVisible,
boolean syncPosition, byte[] extraCustomInfo) {
this.mBundleCode = bundleCode;
this.mLocalVisible = localVisible;
this.mRemoteVisible = remoteVisible;
this.mSyncPosition = syncPosition;
this.mExtraCustomInfo = extraCustomInfo;
}
public AvatarModelInfo() {
mBundleCode = "";
mLocalVisible = false;
mRemoteVisible = false;
mSyncPosition = false;
mExtraCustomInfo = null;
}
@Override
public String toString() {
return "AvatarModelInfo{"
+ "mBundleCode='" + mBundleCode + '\'' + ", mLocalVisible=" + mLocalVisible
+ ", mRemoteVisible=" + mRemoteVisible + ", mSyncPosition=" + mSyncPosition
+ ", mExtraCustomInfo=" + Arrays.toString(mExtraCustomInfo) + '}';
}
}
属性:
mBundleCode
:人物模型所在的资源包代码。mLocalVisible
:虚拟人物在本地是否显示。如果设为 false
,mRemoteVisible
和 mSyncPosition
会自动设为 false
,并且无法更改。mRemoteVisible
:虚拟人物在远端是否可见。mSyncPosition
:是否同步本地用户的位置,用于控制玩家和游客模式。如果设为 false``,
mRemoteVisible` 不生效。mExtraCustomInfo
:(可选)其他额外自定义信息。目前只支持字符串。方法:
toString
:返回 AvatarModelInfo
对象的字符串表示形式。用户的装扮信息。
public class DressInfo {
public byte[] mExtraCustomInfo;
@CalledByNative
public DressInfo(byte[] mExtraCustomInfo) {
this.mExtraCustomInfo = mExtraCustomInfo;
}
public DressInfo() {
mExtraCustomInfo = null;
}
@Override
public String toString() {
return "DressInfo{"
+ "mExtraCustomInfo=" + Arrays.toString(mExtraCustomInfo) + '}';
}
}
属性:
mExtraCustomInfo
:(可选)其他额外自定义信息。目前只支持字符串。方法:
toString
:返回 DressInfo
对象的字符串表示形式。用户的捏脸信息。
public class FaceInfo {
public byte[] mExtraCustomInfo;
@CalledByNative
public FaceInfo(byte[] mExtraCustomInfo) {
this.mExtraCustomInfo = mExtraCustomInfo;
}
public FaceInfo() {
mExtraCustomInfo = null;
}
@Override
public String toString() {
return "FaceInfo{"
+ "mExtraCustomInfo=" + Arrays.toString(mExtraCustomInfo) + '}';
}
}
属性:
mExtraCustomInfo
:(可选)其他额外自定义信息。目前只支持字符串。方法:
toString
:返回 FaceInfo
对象的字符串表示形式。用户的位置信息。
public class MetachatUserPositionInfo {
public float[] mPosition;
public float[] mForward;
public float[] mRight;
public float[] mUp;
@CalledByNative
MetachatUserPositionInfo(float[] position, float[] forward, float[] right, float[] up) {
mPosition = position;
mForward = forward;
mRight = right;
mUp = up;
}
@Override
public String toString() {
return "MetachatUserPositionInfo{"
+ "mPosition=" + Arrays.toString(mPosition) + ", mForward=" + Arrays.toString(mForward)
+ ", mRight=" + Arrays.toString(mRight) + ", mUp=" + Arrays.toString(mUp) + '}';
}
}
属性:
mPosition
:用户的坐标位置。mForward
:用户朝向的三维向量。mRight
:用户右手方向的向量。mUp
:用户头朝向的向量。方法:
toString
:返回 MetachatUserPositionInfo
对象的字符串表示形式。