Beispiel #1
0
        /// <summary>
        /// 设置配置信息
        /// </summary>
        /// <param name="appKey">游密官方分配的APP唯一标识,在www.youme.im注册后可以自助获取</param>
        /// <param name="secretKey">游密官方分配的接入密钥,和appkey配对使用,在www.youme.im注册后可以自助获取</param>
        /// <param name="config">SDK配置对象,可以通过该对象的参数设置SDK的可选参数,比如服务器区域、日志级别</param> <summary>
        /// <param name="initCallBack">初始化结果回调</param>
        ///
        public void Initialize(string appKey, string secretKey, TalkConfig config, Action <InitEvent> initCallBack)
        {
            YouMeErrorCode errorCode;

            _config = config;
            talkManager.initCallBack = initCallBack;
            if (config != null)
            {
                if (!string.IsNullOrEmpty(config.ExtServerZone))
                {
                    errorCode = YouMeVoiceAPI.GetInstance().Init(appKey, secretKey, YOUME_RTC_SERVER_REGION.RTC_EXT_SERVER, config
                                                                 .ExtServerZone);
                }
                else
                {
                    errorCode = YouMeVoiceAPI.GetInstance().Init(appKey, secretKey, config.ServerZone, "");
                }
            }
            else
            {
                errorCode = YouMeVoiceAPI.GetInstance().Init(appKey, secretKey, YOUME_RTC_SERVER_REGION.RTC_DEFAULT_SERVER, "");
            }
            if (errorCode != YouMeErrorCode.YOUME_SUCCESS && initCallBack != null)
            {
                talkManager.initCallBack = null;
                initCallBack(new InitEvent(errorCode));
            }
        }
Beispiel #2
0
        public void JoinChannel(Channel channel, Action <ChannelEvent> callback, YouMeUserRole role = YouMeUserRole.YOUME_USER_TALKER_FREE)
        {
            if (string.IsNullOrEmpty(GetUserID()))
            {
                Log.e("Need SetUserID(string userid).");
                if (callback != null)
                {
                    callback(new ChannelEvent(StatusCode.USER_ID_IS_EMPTY, ChannelEventType.JOIN_FAIL, channel.ChannelID));
                }
                return;
            }
            talkManager.AddJoinChannelCallback(channel.ChannelID, callback);
            YouMeErrorCode errorCode;

            if (_config.AllowMultiChannel)
            {
                errorCode = YouMeVoiceAPI.GetInstance().JoinChannelMultiMode(GetUserID(), channel.ChannelID);
            }
            else
            {
                errorCode = YouMeVoiceAPI.GetInstance().JoinChannelSingleMode(GetUserID(), channel.ChannelID, (int)role);
            }

            if (errorCode != YouMeErrorCode.YOUME_SUCCESS && callback != null)
            {
                talkManager.RemoveJoinChannelCallback(channel.ChannelID);
                callback(new ChannelEvent(Conv.ErrorCodeConvert(errorCode), ChannelEventType.JOIN_FAIL, channel.ChannelID));
            }
        }
Beispiel #3
0
 //单实例对象
 public static YouMeVoiceAPI GetInstance()
 {
     if (mInstance == null)
     {
         mInstance = new YouMeVoiceAPI();
     }
     return(mInstance);
 }
Beispiel #4
0
        /// <summary>
        /// 多频道模式下,指定当前要讲话的频道
        /// </summary>
        ///
        /// <param name="strChannelID"> 全局唯一的频道标识,全局指在当前应用程序的范围内 </param>
        /// <param name="callback">设置当前讲话频道是否成功</param>
        /// </returns>
        ///
        public void SpeakToChannel(string strChannelID, Action <SpeakToChannelEvent> callback)
        {
            talkManager.speakToChannelCallback = callback;
            var code = YouMeVoiceAPI.GetInstance().SpeakToChannel(strChannelID);

            if (code != YouMeErrorCode.YOUME_SUCCESS)
            {
                //接口调用时机错误,不会收到回调结果
                callback(new SpeakToChannelEvent(code, strChannelID));
                talkManager.speakToChannelCallback = null;
            }
        }
Beispiel #5
0
        public void LeaveAllChannel(Action <ChannelEvent> callback)
        {
            YouMeErrorCode errorCode = YouMeVoiceAPI.GetInstance().LeaveChannelAll();

            if (errorCode != YouMeErrorCode.YOUME_SUCCESS && callback != null)
            {
                callback(new ChannelEvent(Conv.ErrorCodeConvert(errorCode), ChannelEventType.LEAVE_FAIL, ""));
            }
            else
            {
                talkManager.leaveAllChannelCallback = callback;
            }
        }
Beispiel #6
0
            void YoumeCallback()
            {
                System.IntPtr pMsg = YouMeVoiceAPI.youme_getCbMessage();
                if (pMsg == System.IntPtr.Zero)
                {
                    return;
                }
                string strMessage = Marshal.PtrToStringAuto(pMsg);

                //Debug.Log("recv message:" + strMessage);
                if (null != strMessage)
                {
                    try {
                        YouMeVoiceAPI.GetInstance().ParseJsonCallbackMessage(strMessage);
                    } catch (System.Exception e) {
                        Debug.LogError(e.StackTrace);
                    }
                }

                YouMeVoiceAPI.youme_freeCbMessage(pMsg);
                pMsg = System.IntPtr.Zero;
            }
Beispiel #7
0
 public void LeaveChannel(Channel channel, Action <ChannelEvent> callback)
 {
     if (channel.ChannelID == null)
     {
         Log.e("channel ID can't be null.");
         return;
     }
     if (_config.AllowMultiChannel)
     {
         YouMeErrorCode errorCode = YouMeVoiceAPI.GetInstance().LeaveChannelMultiMode(channel.ChannelID);
         if (errorCode != YouMeErrorCode.YOUME_SUCCESS && callback != null)
         {
             callback(new ChannelEvent(Conv.ErrorCodeConvert(errorCode), ChannelEventType.LEAVE_FAIL, channel.ChannelID));
         }
         else
         {
             talkManager.AddLeaveChannelCallback(channel.ChannelID, callback);
         }
     }
     else
     {
         LeaveAllChannel(callback);
     }
 }
Beispiel #8
0
 /**
  *  功能描述:Rest API , 向服务器请求额外数据
  *  @param strCommand: 请求的命令字符串
  *  @param strQueryBody: 请求需要的数据,json格式,内容参考restAPI
  *  @param requestID: 回传id,回调的时候传回,标识消息。
  *  @return YOUME_SUCCESS - 成功
  *          其他 - 具体错误码
  */
 public void RequestRestApi(string command, string queryBody)
 {
     int requestID = 0;
     var code      = YouMeVoiceAPI.GetInstance().RequestRestApi(command, queryBody, ref requestID);
 }
Beispiel #9
0
 /// <summary>
 /// 恢复通话,调用PauseChannel暂停通话后,可调用这个接口恢复通话
 /// 这是一个异步调用接口,函数返回YouMeErrorCode.YOUME_SUCCESS后,还需要等待如下事件回调
 /// YouMeEvent.YOUME_EVENT_RESUMED - 成功恢复语音
 /// YouMeEvent.YOUME_EVENT_RESUME_FAILED - 恢复语音失败
 /// </summary>
 ///
 /// <returns>
 /// YouMeErrorCode.YOUME_SUCCESS 表明恢复通话正在进行当中
 /// 返回其他值时请看 YouMeErrorCode 的定义
 /// </returns>
 ///
 public StatusCode ResumeChannel()
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().ResumeChannel()));
 }
Beispiel #10
0
 /// <summary>
 /// 设置当前声音播放的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,游戏画面的播放需要和声音播放进行时间对齐。
 /// 这个接口设置的就是当前游戏画面播放已经进行到哪个时间点了。
 /// </summary>
 ///
 /// <param name="timeMs"> 当前游戏画面播放对应的时间点,单位为毫秒 </param>
 /// <returns> void </returns>
 ///
 public void SetPlayingTimeMs(uint timeMs)
 {
     YouMeVoiceAPI.GetInstance().SetPlayingTimeMs(timeMs);
 }
Beispiel #11
0
 /// <summary>
 /// 设置麦克风音量回调参数
 /// 你可以在初始化成功后随时调用这个接口。在整个APP生命周期只需要调用一次,除非你想修改参数。
 /// 设置成功后,当用户讲话时,你将收到回调事件 MY_MIC_LEVEL, 回调参数 iStatus 表示当前讲话的音量级别。
 /// </summary>
 ///
 /// <param name="maxMicLevel">
 /// 设为 0 表示关闭麦克风音量回调
 /// 设为 大于0的值表示音量最大时对应的值,这个可以根据你们的UI设计来设定。
 /// 比如你用10级的音量条来表示音量变化,则传10。这样当底层回传音量是10时,则表示当前mic音量达到最大值。
 /// </param>
 ///
 /// <returns>
 /// YouMeErrorCode.YOUME_SUCCESS 表示设置成功
 /// 返回其他值时请看 YouMeErrorCode 的定义
 /// </returns>
 ///
 public StatusCode SetMicLevelCallback(int maxMicLevel)
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().SetMicLevelCallback(maxMicLevel)));
 }
Beispiel #12
0
 public void OpenSpeaker()
 {
     YouMeVoiceAPI.GetInstance().SetSpeakerMute(false);
 }
Beispiel #13
0
 public void UnInitialize()
 {
     YouMeVoiceAPI.GetInstance().UnInit();
 }
Beispiel #14
0
 public bool IsMicrophoneOpen()
 {
     return(!YouMeVoiceAPI.GetInstance().GetSpeakerMute());
 }
Beispiel #15
0
 /// <summary>
 /// 停止播放当前正在播放的背景音乐。
 /// 这是一个同步调用接口,函数返回时,音乐播放也就停止了。
 /// </summary>
 ///
 /// <returns>
 /// YouMeErrorCode.YOUME_SUCCESS 表明成功停止了音乐播放流程
 /// 返回其他值时请看 YouMeErrorCode 的定义
 /// </returns>
 ///
 public StatusCode StopBackgroundMusic()
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().StopBackgroundMusic()));
 }
Beispiel #16
0
 /// <summary>
 /// 设定背景音乐的音量。这个接口用于调整背景音乐和语音之间的相对音量,使得背景音乐和语音混合听起来协调。
 /// 这是一个同步调用接口
 /// </summary>
 ///
 /// <param name="volume"> 背景音乐的音量,范围 [0-100], 100为最大音量 </param>
 ///
 /// <returns>
 /// YouMeErrorCode.YOUME_SUCCESS 表明成功设置了背景音乐的音量
 /// 返回其他值时请看 YouMeErrorCode 的定义
 /// </returns>
 ///
 public StatusCode SetBackgroundMusicVolume(int volume)
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().SetBackgroundMusicVolume(volume)));
 }
Beispiel #17
0
 /// <summary>
 /// 设置不接收指定用户的语音
 /// </summary>
 ///
 /// <param name="userID">要屏蔽的用户的ID</param>
 /// <param name="isOn">true为打开,false为关闭</param>
 ///
 /// <returns>返回接口调用是否成功的状态码,YouMeErrorCode.YOUME_SUCCESS表示成功</returns>
 ///
 public StatusCode AvoidOtherVoiceStatus(string userID, bool isOn)
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().AvoidOtherVoiceStatus(userID, isOn)));
 }
Beispiel #18
0
 public void CloseSpeaker()
 {
     YouMeVoiceAPI.GetInstance().SetSpeakerMute(true);
 }
Beispiel #19
0
 public void OpenMicrophone()
 {
     YouMeVoiceAPI.GetInstance().SetMicrophoneMute(false);
 }
Beispiel #20
0
 /// <summary>
 /// 获取音量大小,此音量值为程序内部的音量,与系统音量相乘得到程序使用的实际音量
 /// 这是一个同步调用接口,函数返回时表明操作已经完成
 /// </summary>
 ///
 /// <returns>当前音量值,范围 [0-100]</returns>
 ///
 public int GetVolume()
 {
     return(YouMeVoiceAPI.GetInstance().GetVolume());
 }
Beispiel #21
0
 /// <summary>
 /// 设置通话音量
 /// 这是一个同步调用接口,函数返回时表明操作已经完成
 /// </summary>
 ///
 /// <param name="uiVolume"> 取值范围是[0-100] 100表示最大音量, 默认音量是100</param>
 ///
 public void SetVolume(int uiVolume)
 {
     uiVolume = Mathf.Clamp(uiVolume, 0, 100);
     YouMeVoiceAPI.GetInstance().SetVolume((uint)uiVolume);
 }
Beispiel #22
0
 /**
  *  功能描述:设置身份验证的token
  *  @param strToken: 身份验证用token,设置为NULL或者空字符串,清空token值,则不验证。
  *  @return 无
  */
 public void SetToken(string strToken)
 {
     YouMeVoiceAPI.GetInstance().SetToken(strToken);
 }
Beispiel #23
0
 /// <summary>
 /// 设置插耳机的情况下开启或关闭语音监听(即通过耳机听到自己说话的内容)
 /// 这是一个同步调用接口
 /// </summary>
 ///
 /// <param name="enabled"> true 开启监听,false 关闭监听 </param>
 ///
 /// <returns>
 /// YouMeErrorCode.YOUME_SUCCESS 表明成功设置了语音监听
 /// 返回其他值时请看 YouMeErrorCode 的定义
 /// </returns>
 ///
 public StatusCode SetHeadsetMonitorOn(bool enabled)
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().SetHeadsetMonitorOn(enabled)));
 }
Beispiel #24
0
 public void SetServerRegion(string[] regionNames)
 {
     YouMeVoiceAPI.GetInstance().SetServerRegion(regionNames);
 }
Beispiel #25
0
 /// <summary>
 /// 设置是否开启语音检测回调
 /// 这是一个同步调用接口
 /// </summary>
 ///
 /// <param name="enabled"> true 开启语音检测,false 关闭语音检测 </param>
 ///
 /// <returns>
 /// YouMeErrorCode.YOUME_SUCCESS 表明成功设置了语音检测回调
 /// 返回其他值时请看 YouMeErrorCode 的定义
 /// </returns>
 ///
 public StatusCode SetVadCallbackEnabled(bool enabled)
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().SetVadCallbackEnabled(enabled)));
 }
Beispiel #26
0
 /// <summary>
 /// 播放指定的音乐文件。播放的音乐将会通过扬声器输出,并和语音混合后发送给接收方。这个功能适合于主播/指挥等使用。
 /// 如果当前已经有一个音乐文件在播放,正在播放的音乐会被停止,然后播放新的文件。
 /// 这是一个异步调用接口,函数返回YouMeErrorCode.YOUME_SUCCESS后,将通过如下回调事件通知音乐播放的状态:
 /// YouMeEvent.YOUME_EVENT_BGM_STOPPED - 音乐播放结束了
 /// YouMeEvent.YOUME_EVENT_BGM_FAILED - 音乐文件无法播放(比如文件损坏,格式不支持等)
 /// </summary>
 ///
 /// <param name="strFilePath"> 音乐文件的路径 </param>
 /// <param name="bRepeat"> true 重复播放这个文件, false 只播放一次就停止播放 </param>
 ///
 /// <returns>
 /// YouMeErrorCode.YOUME_SUCCESS 表明成功启动了音乐播放流程
 /// 返回其他值时请看 YouMeErrorCode 的定义
 /// </returns>
 ///
 public StatusCode PlayBackgroundMusic(string strFilePath, bool bRepeat)
 {
     return(Conv.ErrorCodeConvert(YouMeVoiceAPI.GetInstance().PlayBackgroundMusic(strFilePath, bRepeat)));
 }
Beispiel #27
0
 public void CloseMicrophone()
 {
     YouMeVoiceAPI.GetInstance().SetMicrophoneMute(true);
 }