游戏多媒体(AppGallery Connect)快速入门

游戏多媒体服务是华为游戏中心推出的一款快速实现游戏内实时语音对讲和IM聊天(Instant Messaging,即时通讯)功能的服务。您只需要集成游戏多媒体服务SDK,即可为您的游戏提供实时语音对讲、语音转文本、即时消息等能力,降低开发难度,提升玩家的游戏体验。

主要功能

主要功能 功能描述
实时语音 实时语音功能主要用于实现不同客户端之间的实时语音对讲能力。借助“语音房间”这一虚拟的音频空间,将不同玩家加入到同一语音房间中,即可实现实时语音通话功能,在实时语音过程中还可以实现设置麦克风状态、禁言、屏蔽等功能。同时,游戏多媒体SDK还支持范围语音能力和3D音效特性,主要用于实现玩家实时语音时模拟真实世界的空间音效,打造沉浸式的声音效果。
实时信令 游戏多媒体服务实时信令(Real-time Messaging,RTM)功能提供了适配Cocos引擎的TypeScript SDK以及服务端REST API,该功能基于华为RTN网络,支持通过网络实时发送和接收消息,提供了稳定可靠、低延时、高并发的通信服务。当前,RTM客户端SDK提供了点对点消息收发、频道订阅、频道消息收发等能力,可用于实现实时通信、全局聊天、游戏通知、指令同步等游戏场景。同时,RTM服务端API提供了点对点消息以及频道消息发送能力,可用于发送游戏公告、消息通知等游戏使用场景。
语音消息 为了更加方便玩家间的即时交流,游戏多媒体SDK提供了语音消息录制、录制文件上传下载与播放等语音消息能力,支持玩家录制一段语音消息并将录制文件上传至云端,通过IM通道将文件ID发送给其他玩家,其他玩家通过文件ID下载语音消息文件即可播放收听该语音消息内容。
效果音播放 在一些游戏或直播场景中,通常为了增强真实感或烘托场景氛围,需要播放一些简短的效果音,例如子弹声或掌声等。游戏多媒体SDK提供了效果音播放的相关接口,可用于实现简短音效的播放与音量系数管理等能力
语音转文本 语音转文本功能具备快速识别实时语音并转录成文本内容的能力,可用于语音输入等使用场景。

工作原理

集成游戏多媒体服务SDK的客户端,将语音信息输入到华为游戏多媒体服务器,服务器接收并处理,然后将语音数据输出给房间内的所有客户端。同时,游戏多媒体服务SDK还提供IM聊天功能,用于不同客户端之间的消息会话。您只需要将游戏多媒体服务SDK集成到您的游戏中,并通过简单的功能开发,即可为您的游戏快速构建语音对讲和即时消息能力。

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtyPub/011/111/111/0000000000011111111.20230811185002.93436547234333337127849612796014:50001231000000:2800:F2DBDC5E8A8BF9714CD86AE106AC9F9644527E6F58345A474E8A3BE4EB36E1A2.png?needInitFileName=true?needInitFileName=true

版本更新说明

  • 当前版本:[3.x]1.0.12_1.12.2.300

    • 完善内部实现
    • SDK 升级到 1.12.2.300
  • [3.x] 1.0.7_1.12.1.300

    • 修复设置麦克风回调报错
  • [3.x] 1.0.6_1.12.1.300

    • 修复监听频道属性变更回调报错
    • 修复更新其他玩家位置会报错
  • [3.x] 0.0.4_1.11.1.300

    • 初始版本

一键接入游戏多媒体

开通服务

  • 在华为agc后台需要开通游戏多媒体功能,并开启“语音转文本”。

  • 使用 Cocos Creator 打开需要接入游戏多媒体的项目工程。

  • 点击菜单栏的面板 -> 服务,打开 服务 面板,在 HUAWEI AppGallery Connect 选择 游戏多媒体,进入服务详情页。然后点击右上方的 启用 按钮即可开通服务。

    WX20230913-165214.png

验证服务是否开通成功

  • 开启后在项目工程的 assets 下的 cs-huawei 文件夹内如果看到 hwmmsdk 相关文件,如果无此文件夹,请查看编辑器控制台的log信息。

  • 可参照 Sample 工程,进行初始化,打包成“安卓”或者“HUAWEI AppGallery Connect”平台,在安卓手机上运行后,观察回调是否可以初始化成功,如果失败,请检查初始化参数是否正确和包名是否和agc后台是否一致。

Sample 工程

开发者可以通过 Sample 工程快速体验联机对战服务。

  • 点击分析服务面板中的 Sample 工程 按钮,Clone 或下载 HUAWEI Sample 工程,并在 Cocos Creator 中打开。

  • 你需要找到 hwmmsdk.ts 脚本并修改数据为您创建的应用信息。

    image.png

  • Sample 工程运行到手机后,点击首页的 Hwmmsdk 按钮,即可进入功能界面进行测试。

    10ca84ea85d8.png

开发指南

游戏多媒体所有的 API 均是异步回调。可使用 huawei.game.mmsdk.mmsdkService.once 获取单次回调,或者使用 huawei.game.mmsdk.mmsdkService.on 监听回调。可使用huawei.game.mmsdk.mmsdkService.off移除回调

申请权限

requestPermissions(guideUser: boolean, guideUserTipsText?: string, guideUserBtnText?: string): void;

参数说明

参数 说明
guideUser 如果用户未授予权限是否显示引导弹窗
guideUserTipsText 引导弹窗显示的内容
guideUserBtnText 引导弹窗按钮的内容

代码示例:

requestPermissions () {
huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.requestPermissionsCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
this.mmsdkService.requestPermissions(true, "需要开启权限才能使用此功能", "去开启");
}

初始化(创建实例)

指南

init(info: {
    openId: string;
    agcAppId: string;
    agcClientId: string;
    agcClientSecret: string;
    agcApiKey: string;
    logEnable: boolean;
    logSize: number;
    countryCode: string;
    useSign: boolean;
    sign: string;
    nonce: string;
    timeStamp: string;
}): void;

参数说明

参数 说明
openId 用户的唯一ID, 必传
agcAppId agc后台获取, 必传
agcClientId agc后台获取, 必传
agcClientSecret agc后台获取, 必传
agcApiKey agc后台获取, 必传
logEnable 是否启用日志, 必传
logSize 日志存储大小, 必传
countryCode 国家码,用于网关路由,默认CN, 必传
useSign 是否使用安全加固,必传,true or false
sign 开发者生成的接入签名,必传,未使用安全加固传""
nonce 开发者接入签名的随机数,必传,未使用安全加固传""
timeStamp 开发者接入签名的时间戳, 必传,未使用安全加固传""

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.initCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
let info = {
    openId: "",
    agcAppId: "",
    agcClientId: "",
    agcClientSecret: "",
    agcApiKey: "",
    logEnable: true,
    logSize: 10240,
    countryCode: "CN",
    useSign: false,
    sign: "",
    nonce: "",
    timeStamp: "",
}
this.mmsdkService.init(info);

销毁实例

destroy(): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onDestroyCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.destroy();

实时语音

加入小队房间

joinTeamRoom(roomId: string): void;

指南

参数说明

参数 说明
roomId 自定义的房间id

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onJoinTeamRoomCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.joinTeamRoom("XXX");

加入国战房间

joinNationalRoom(roomId: string, roleType: number): void;

指南

参数说明

参数 说明
roomId 自定义的房间id
roleType 玩家角色,1表示指挥官,2表示群众

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onJoinNationalRoomCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.joinNationalRoom("XXX", 1);

切换房间

switchRoom(roomId: string): void;

指南

参数说明

参数 说明
roomId 目标房间ID

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onSwitchRoomCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.switchRoom("XXX");

转让房主身份

transferOwner(roomId: string, ownerId: string): void;

指南

参数说明

参数 说明
roomId 房间ID
ownerId 新的房间主ID

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onTransferOwnerCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.transferOwner("XXX", "XXX");

获取指定房间信息

getRoom (roomId: string): void;

指南

参数说明

参数 说明
roomId 房间ID

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.getRoomCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
      console.log(result);
})
huawei.game.mmsdk.mmsdkService.getRoom("XXX");

离开房间

leaveRoom (roomId: string, ownerId?: string): void;

指南

参数说明

参数 说明
roomId 房间ID
ownerId 新房间主ID

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onLeaveRoomCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.leaveRoom("XXX", null);

设置麦克风状态

enableMic (isEnabled: boolean): void;

指南

参数说明

参数 说明
isEnabled true 表示开启 false 表示关闭

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.enableMicCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.enableMic(true);

禁言/解禁指定玩家

forbidPlayer (roomId: string, openId: string, isForbidden: boolean): void;

指南

参数说明

参数 说明
roomId 房间ID
openId 玩家ID
isForbidden true表示禁言,false表示解禁

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onForbidPlayerCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
      console.log(result);
  })
huawei.game.mmsdk.mmsdkService.forbidPlayer("XXX", "XXX", true);

禁言/解禁全部玩家

forbidAllPlayers (roomId: string, isForbidden: boolean): void;

指南

参数说明

参数 说明
roomId 房间ID
isForbidden true表示禁言,false表示解禁

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onForbidAllPlayersCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
      console.log(result);
  })
huawei.game.mmsdk.mmsdkService.forbidAllPlayers("XXX",true);

屏蔽/打开指定玩家语音

mutePlayer (roomId: string, openId: string, isMuted: boolean): void;

指南

参数说明

参数 说明
roomId 房间ID
openId 玩家ID
isMuted true表示屏蔽语音,false表示取消屏蔽

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onMutePlayerCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.mutePlayer("XXX", "XXX", true);

屏蔽/打开其他全部玩家语音

muteAllPlayers (roomId: string, isMuted: boolean): void;

指南

参数说明

参数 说明
roomId 房间ID
isMuted true表示屏蔽语音,false表示取消屏蔽

代码示例

 huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onMuteAllPlayersCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.muteAllPlayers(this._teamRoomId, true);

获取当前发言玩家列表

指南

enableSpeakersDetection (roomId: string, interval: number): void;

参数说明

参数 说明
roomId 房间ID
interval 当前发言玩家列表回调的时间间隔,有效值范围为[100, 10000],单位: 毫秒,当传入0时,即关闭音量回调

代码示例

huawei.game.mmsdk.mmsdkService.enableSpeakersDetection("XXX", 1000);

初始化3d音效

initSpatialSound (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.initSpatialSoundCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.initSpatialSound();

开启/关闭3D音效

enableSpatialSound (roomId: string, enable: boolean): void;

指南

参数说明

参数 说明
roomId 房间ID
enable 是否开启3D音效,true表示开启,false表示关闭

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.enableSpatialSoundCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.enableSpatialSound("XXX", true);

设置语音接收范围

setAudioRecvRange (range: number): void;

指南

参数说明

参数 说明
range 范围 整数

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.setAudioRecvRangeCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.setAudioRecvRange(10);

更新自身位置

updateSelfPosition (forward: number, right: number, up: number): void;

指南

参数说明

参数 说明
forward 玩家在世界坐标系前轴(Z轴)的坐标值。
right 玩家在世界坐标系右轴(X轴)的坐标值。
up 玩家在世界坐标系上轴(Y轴)的坐标值。

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.updateSelfPositionCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.updateSelfPosition(1, 2, 3);

更新其他玩家位置

updateRemotePosition (openId: string, forward: number, right: number, up: number): void;

指南

参数说明

参数 说明
openId 目标玩家id
forward 玩家在世界坐标系前轴(Z轴)的坐标值。
right 玩家在世界坐标系右轴(X轴)的坐标值。
up 玩家在世界坐标系上轴(Y轴)的坐标值。

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.updateRemotePositionCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.updateRemotePosition("XXX", 1, 2, 3);

清理其他玩家位置

clearRemotePlayerPosition (openId: string): void;

指南

参数说明

参数 说明
openId 目标玩家id

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.clearRemotePlayerPositionCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
      console.log(result);
})
huawei.game.mmsdk.mmsdkService.clearRemotePlayerPosition("XXX");

清理其他所有玩家的位置信息

clearAllRemotePositions (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.clearAllRemotePositionsCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.clearAllRemotePositions();

查询3D音效开启状态

isEnableSpatialSound (roomId: string): void;

指南

参数说明

参数 说明
roomId 房间ID

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.isEnableSpatialSoundCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.isEnableSpatialSound("XXX");

加入范围语音房间

joinRangeRoom (roomId: string): void;

指南

参数说明

参数 说明
roomId 房间ID

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onJoinRangeRoomCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.joinRangeRoom("XXX");

实时信令

点对点发送消息

publishRtmPeerMessage ({peerId: string, type: number, messageString: string, messageByte: Uint8Array}): void

指南

参数说明

参数 说明
peerId 房间ID
type 消息类型:1表示文本,2表示二进制
messageString 信息
messageByte 信息

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onPublishRtmPeerMessageCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.publishRtmPeerMessage(this._selfOpenId == "A" ? "B" : "A", 1, "xxxxx");

订阅频道

subscribeRtmChannel (channelId: string, playerProperties: {}): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
playerProperties 用户属性

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onSubscribeRtmChannelCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.subscribeRtmChannel("123", {name: "xxxxx", age: "18"});

取消频道

unSubscribeRtmChannel (channelId: string): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onUnSubscribeRtmChannelCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.unSubscribeRtmChannel("123");

发布频道消息

publishRtmChannelMessage (jsonInfo: {
    channelId: string,
    messageType: number,
    allowCacheMsg: boolean,
    contentIdentify: boolean,
    adsIdentify: boolean,
    messageString: string,
    messageBytes: Uint8Array,
    receivers: string[],
}): void`

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
messageType 消息类型:1表示文本,2表示二进制
allowCacheMsg 是否缓存历史消息: true表示缓存, false表示不缓存
contentIdentify 是否进行内容风控审核: true表示进行风控审核, false表示不进行风控审核
adsIdentify 是否进行广告识别: true表示进行广告识别, false表示不进行广告识别
messageString 信息字符串
messageBytes 二进制
receivers 接受列表

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onPublishRtmChannelMessageCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.publishRtmChannelMessage({
    channelId: "123",
    messageType: 1,
    allowCacheMsg: true,
    contentIdentify: true,
    adsIdentify: true,
    messageString: "xxxxx",
    receivers: ["A", "B"]
});

设置玩家属性

setRtmChannelPlayerProperties (channelId: string, playerProperties: {}): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
playerProperties 玩家属性

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onSetRtmChannelPlayerPropertiesCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.setRtmChannelPlayerProperties("123", {name: "xxxxx", age: "18"});

查询玩家属性

getRtmChannelPlayerProperties (channelId: string, openIds: string[])

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
openIds 玩家id列表

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onGetRtmChannelPlayerPropertiesCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.getRtmChannelPlayerProperties("123", ["A"]);

删除玩家属性

deleteRtmChannelPlayerProperties (channelId: string, keys: string[]): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
keys 属性索引

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onDeleteRtmChannelPlayerPropertiesCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.deleteRtmChannelPlayerProperties("123", ["name", "age"]);

设置频道属性

setRtmChannelPlayerProperties (channelId: string, playerProperties: {}): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
playerProperties map 频道属性

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onSetRtmChannelPropertiesCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.setRtmChannelProperties("123", {name: "xxxxx", age: "18"});

查询频道属性

getRtmChannelProperties (channelId: string): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onGetRtmChannelPropertiesCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.getRtmChannelProperties("123");

删除频道属性

deleteRtmChannelProperties (channelId: string, keys: string[])

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
keys 属性索引

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onDeleteRtmChannelPropertiesCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.deleteRtmChannelProperties("123", ["name", "age"]);

查询频道详情

getRtmChannelInfo (channelId: string, returnMembers: boolean): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
returnMembers 是否包含成员信息

代码示例

 huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onGetRtmChannelInfoCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.getRtmChannelInfo("123", true);

查询已订阅频道列表

getRtmSubscribedChannelInfo ():void

指南

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onGetRtmSubscribedChannelInfoCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.getRtmSubscribedChannelInfo();

查询频道历史消息

getRtmChannelHistoryMessages (channelId: string, startTime: number, count: number): void

指南

参数说明

参数 说明
channelId 频道id 为数字字符串
startTime 开始时间
count 消息个数限制

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onGetRtmChannelHistoryMessagesCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
});
huawei.game.mmsdk.mmsdkService.getRtmChannelHistoryMessages("123", 1700119845015, 10);

语音消息

录制语音

startRecordAudioMsg (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.startRecordAudioMsgCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
})
huawei.game.mmsdk.mmsdkService.startRecordAudioMsg();

停止录制语音

stopRecordAudioMsg (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onRecordAudioMsgCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    this.console.log(result);
})
huawei.game.mmsdk.mmsdkService.stopRecordAudioMsg();

上传音频文件到游戏多媒体服务器

uploadAudioMsgFile (filePath: string, msTimeOut: number): void;

指南

参数说明

参数 说明
filePath 音频文件的待上传路径
msTimeOut 超时时间, 单位:ms, 取值范围[3000, 7000]

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onUploadAudioMsgFileCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.uploadAudioMsgFile("XXX", 5000);

下载音频文件

downloadAudioMsgFile (fileId: string, filePath: string, msTimeOut: number): void;

指南

参数说明

参数 说明
fileId 待下载文件唯一标识,即文件ID。
filePath 文件下载的存储地址。
msTimeOut 超时时间,单位:ms,取值范围[3000, 7000]。

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onDownloadAudioMsgFileCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.downloadAudioMsgFile("XXX", "XXX", 3000);

播放语音消息

playAudioMsg (filePath: string): void;

参数说明

参数 说明
filePath 音频文件信息的文件路径

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onPlayAudioMsgCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.playAudioMsg("XXX");

停止播放语音消息

stopPlayAudioMsg (): void;

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onPlayAudioMsgCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.stopPlayAudioMsg();

获取声音文件信息

getAudioMsgFileInfo (filePath: string): void;

指南

参数说明

参数 说明
filePath 音频文件信息的文件路径

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.getAudioMsgFileInfoCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.getAudioMsgFileInfo(filePath);

效果音播放

开始播放

playLocalAudioClip (soundId: number, volume: number, filePath: string, loop: number): void;

指南

参数说明

参数 说明
soundId 音效ID,大于等于0
volume 音效音量系数,取值范围[0, 100],默认值100
filePath 音效文件路径,本地路径和网络URL均可
loop 循环播放次数,大于等于0,默认值0表示无限循环

代码示例

huawei.game.mmsdk.mmsdkService.playLocalAudioClip(1, 100, "http://music.163.com/song/media/outer/url?id=25906124.mp3", 1);

暂停

pauseLocalAudioClip (soundId: number): void;

指南

参数说明

参数 说明
soundId 音效ID,大于等于0

代码示例

huawei.game.mmsdk.mmsdkService.pauseLocalAudioClip(1);

暂停所有本地音效

pauseAllLocalAudioClips (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.pauseAllLocalAudioClips();

恢复

resumeLocalAudioClip (soundId: number): void;

指南

参数说明

参数 说明
soundId 音效ID,大于等于0

代码示例

huawei.game.mmsdk.mmsdkService.resumeLocalAudioClip(1);

恢复所有本地音效

resumeAllLocalAudioClips (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.resumeAllLocalAudioClips();

停止

stopLocalAudioClip (soundId: number): void;

指南

参数说明

参数 说明
soundId 音效ID,大于等于0

代码示例

huawei.game.mmsdk.mmsdkService.stopLocalAudioClip(1);

停止所有本地音效

stopAllLocalAudioClips (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.stopAllLocalAudioClips();

设置指定音效或所有音效的音量系数

setVolumeOfLocalAudioClip (soundId: number, volume: number): void;

指南

参数说明

参数 说明
soundId 音效ID,大于等于0
volume 音效音量系数,取值范围[0, 100],默认值100

代码示例

    huawei.game.mmsdk.mmsdkService.setVolumeOfLocalAudioClip(1, 50);

设置所有本地音效的音量系数

setVolumeOfLocalAudioClip (volume: number): void;

指南

参数说明

参数 说明
volume 音效音量系数,取值范围[0, 100],默认值100

代码示例

huawei.game.mmsdk.mmsdkService.setLocalAudioClipsVolume(80);

获取指定音效或所有音效的音量系数

getVolumeOfLocalAudioClip (soundId: number): void;

指南

参数说明

参数 说明
soundId 音效ID,大于等于0
volume 音效音量系数,取值范围[0, 100],默认值100

代码示例

    huawei.game.mmsdk.mmsdkService.getVolumeOfLocalAudioClip(1);

获取所有本地音效的音量系数

getLocalAudioClipsVolume (): void;

指南

代码示例

huawei.game.mmsdk.mmsdkService.getLocalAudioClipsVolume();

语音转文本

语音转文本 - 开始录音

startRecordAudioToText (language: string): void;

参数说明

参数 说明
language 语言编码 只支持zh和en_US两种

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.startRecordAudioToTextCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log("正在录音,请说话...")
})
huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onVoiceToTextCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.startRecordAudioToText("zh");

语音转文本 - 结束录音

stopRecordAudioToText (): void;

代码示例

huawei.game.mmsdk.mmsdkService.once(huawei.game.mmsdk.API_EVENT_LIST.onVoiceToTextCallback, (result: huawei.game.mmsdk.ApiCbResult) => {
    console.log(result);
})
huawei.game.mmsdk.mmsdkService.stopRecordAudioToText();

其他

详细的功能说明,请参考 游戏多媒体 - 指南

results matching ""

    No results matching ""