Exemplo n.º 1
0
        // 打开远程用户的音频、视频
        public void OpenRemoteUserVideo()
        {
            if (g_otherUserId != -1)
            {
                return;
            }
            // 获取当前房间用户列表
            int usercount = 0;

            AnyChatCoreSDK.GetOnlineUser(null, ref usercount);
            if (usercount > 0)
            {
                int[] useridarray = new int[usercount];
                AnyChatCoreSDK.GetOnlineUser(useridarray, ref usercount);
                for (int i = 0; i < usercount; i++)
                {
                    // 判断该用户的视频是否已打开
                    int usercamerastatus = 0;
                    if (AnyChatCoreSDK.QueryUserState(useridarray[i], AnyChatCoreSDK.BRAC_USERSTATE_CAMERA, ref usercamerastatus, sizeof(int)) != 0)
                    {
                        continue;
                    }
                    if (usercamerastatus == 2)
                    {
                        AnyChatCoreSDK.UserSpeakControl(useridarray[i], true);
                        AnyChatCoreSDK.UserCameraControl(useridarray[i], true);
                        g_otherUserId = useridarray[i];
                        break;
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取在线用户数量(不包括自己)
        /// </summary>
        /// <returns>在线用户数量</returns>
        private int GetUserCount()
        {
            int userCount = 0;

            //int[] ids = new int[] { };
            AnyChatCoreSDK.GetOnlineUser(null, ref userCount);
            return(userCount);
        }
Exemplo n.º 3
0
        public void OpenRemoteUserSpeak(bool bFlag)
        {
            int usercount = 0;

            AnyChatCoreSDK.GetOnlineUser(null, ref usercount);

            if (usercount > 0)
            {
                int[] useridarray = new int[usercount];
                AnyChatCoreSDK.GetOnlineUser(useridarray, ref usercount);
                for (int i = 0; i < usercount; i++)
                {
                    AnyChatCoreSDK.UserSpeakControl(useridarray[i], bFlag);
                    g_otherUserId = useridarray[i];
                    break;
                }
            }
        }
Exemplo n.º 4
0
        // 打开远程用户的音频、视频
        public void OpenRemoteUserVideo()
        {
            if (g_otherUserId != -1)
            {
                return;
            }
            // 获取当前房间用户列表
            int usercount = 0;

            AnyChatCoreSDK.GetOnlineUser(null, ref usercount);
            if (usercount > 0)
            {
                int[] useridarray = new int[usercount];
                AnyChatCoreSDK.GetOnlineUser(useridarray, ref usercount);
                for (int i = 0; i < usercount; i++)
                {
                    // 判断该用户的视频是否已打开
                    int usercamerastatus = 0;
                    if (AnyChatCoreSDK.QueryUserState(useridarray[i], AnyChatCoreSDK.BRAC_USERSTATE_CAMERA, ref usercamerastatus, sizeof(int)) != 0)
                    {
                        continue;
                    }
                    if (usercamerastatus == 2)
                    {
                        g_otherUserId = useridarray[i];
                        //获取控件的句柄
                        IntPtr mHandle = ((HwndSource)PresentationSource.FromVisual(this.remoteVideoImage)).Handle;
                        //获取控件的位置
                        Window window = Window.GetWindow(this.remoteVideoImage);
                        Point  point  = this.remoteVideoImage.TransformToAncestor(window).Transform(new Point(0, 0));
                        //显示视频
                        AnyChatCoreSDK.SetVideoPos(g_otherUserId, mHandle, (int)point.X, (int)point.Y, (int)(this.remoteVideoImage.Width + point.X), (int)(this.remoteVideoImage.Height + point.Y));
                        AnyChatCoreSDK.UserSpeakControl(g_otherUserId, true);
                        AnyChatCoreSDK.UserCameraControl(g_otherUserId, true);
                        break;
                    }
                }
            }
        }
Exemplo n.º 5
0
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == AnyChatCoreSDK.WM_GV_CONNECT)
            {
                ///连接
                int succed = m.WParam.ToInt32();
                if (succed == 1)
                {
                    Print("连接成功!");
                }
                else
                {
                    Print("连接失败,错误号:" + m.LParam.ToInt32());
                }
            }
            else if (m.Msg == AnyChatCoreSDK.WM_GV_LOGINSYSTEM)
            {
                ///登录系统
                int userid = m.WParam.ToInt32();
                if (m.LParam.ToInt32() == 0)
                {
                    //Print("登录服务器成功,自己的用户编号为:" + userid.ToString());
                    Print("登录服务器成功,自己的用户账号为:" + frmLogin.m_UserName);
                    m_myUserID = userid;
                    StringBuilder userName = new StringBuilder(30);

                    int ret = AnyChatCoreSDK.GetUserName(userid, userName, 30);

                    AnyChatCoreSDK.EnterRoom(m_RoomID, "", 0);
                }
                else
                {
                    Print("登录服务器失败,代码出错为:" + m.LParam.ToInt32());
                }
            }
            else if (m.Msg == AnyChatCoreSDK.WM_GV_ENTERROOM)
            {
                ///进入房间
                if (m.LParam.ToInt32() == 0)
                {
                    int roomid = m.WParam.ToInt32();
                    Print("进入房间成功,房间编号为:" + roomid.ToString());
                    m_RoomID = roomid;
                    int ret = AnyChatCoreSDK.SetVideoPos(-1, pnl_local.Handle, 0, 0, pnl_local.Width, pnl_local.Height);
                    ret = AnyChatCoreSDK.UserCameraControl(-1, true);
                    ret = AnyChatCoreSDK.UserSpeakControl(-1, true);
                }
                else
                {
                    Print("申请进入房间失败,出错代码为:" + m.LParam.ToInt32());
                }
            }
            else if (m.Msg == AnyChatCoreSDK.WM_GV_ONLINEUSER)
            {
                ///目前在房间的用户列表
                int usrcnt = m.WParam.ToInt32();
                Print("在编号为:" + m.LParam.ToInt32() + " 的房间共有" + usrcnt + "位在线用户");
                Print("当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));

                int cnt = 0;                                    //在线用户数量
                AnyChatCoreSDK.GetOnlineUser(null, ref cnt);    //获取在线用户数量
                int[] userArr = new int[cnt];                   //在线用户ID
                AnyChatCoreSDK.GetOnlineUser(userArr, ref cnt); //获取在线用户ID数组

                if (userArr.Length >= 1)
                {
                    for (int i = 0; i < userArr.Length; i++)
                    {
                        m_others.Add(userArr[i]);      //存入在线用户列表中(开发包带的用户在线ID数组)
                        UpdateUserList(userArr[i], i); //添加到在线用户列表(自定义,带用户属性结构)
                    }
                    UpdateOnlineUser();
                }
                else
                {
                    dgv_onlineuser.Rows.Clear();
                    DataGridViewRow dgvr = new DataGridViewRow();
                    dgv_onlineuser.Rows.Add(dgvr);
                    dgvr = dgv_onlineuser.Rows[dgv_onlineuser.Rows.Count - 1];
                    dgvr.Cells["gvc_username"].Value  = "大家";
                    dgvr.Cells["gvc_audio"].Value     = AnyChatCSharpDemo.Properties.Resources.深灰背景;
                    dgvr.Cells["gvc_video"].Value     = AnyChatCSharpDemo.Properties.Resources.深灰背景;
                    dgvr.Cells["gvc_character"].Value = AnyChatCSharpDemo.Properties.Resources.深灰背景;
                    dgvr = new DataGridViewRow();
                    dgv_onlineuser.Rows.Add(dgvr);
                    dgvr = dgv_onlineuser.Rows[dgv_onlineuser.Rows.Count - 1];
                    dgvr.Cells["gvc_username"].Value  = frmLogin.m_UserName;;
                    dgvr.Cells["gvc_character"].Value = AnyChatCSharpDemo.Properties.Resources.主持人_浅灰;
                    dgvr.Cells["gvc_audio"].Value     = AnyChatCSharpDemo.Properties.Resources.麦克;
                    dgvr.Cells["gvc_video"].Value     = AnyChatCSharpDemo.Properties.Resources.摄像头;
                }
            }
            else if (m.Msg == AnyChatCoreSDK.WM_GV_USERATROOM)
            {
                ///新用户加入或退出房间
                int userID    = m.WParam.ToInt32();
                int boEntered = m.LParam.ToInt32();

                if (boEntered == 1)
                {
                    m_others.Add(userID);
                    UpdateUserList(userID, m_others.Count - 1);
                    Print("用户:" + GetUserNameByID(userID) + " 进入房间");
                }
                else
                {
                    m_others.Remove(userID);
                    for (int i = 0; i < m_MemberItem.Count; i++)
                    {
                        if (m_MemberItem[i].m_UserID == userID)
                        {
                            m_MemberItem.RemoveAt(i);
                            break;
                        }
                    }
                    Print("用户:" + GetUserNameByID(userID) + " 离开房间");
                }
                UpdateOnlineUser(); //更新用户列表
                this.Invalidate();  //重绘界面,防止界面假死
            }
            base.WndProc(ref m);
        }