设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz

AnyChat视频呼叫业务逻辑详解

[复制链接]

5

主题

21

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2016-3-29 12:50:18 | 显示全部楼层
佰锐科技-邵光清 发表于 2016-3-29 11:54
您好,VideoCallControl可以在登录成功之后调用,也可以在进入房间之后调用,前提是先获取到对方的userid ...

这里同时还需要一个.so文件 哪里能下载到呢
回复 支持 反对

使用道具 举报

5

主题

21

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2016-3-29 13:52:43 | 显示全部楼层
anychat.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST, useridB, 0, 0,0, "usernameA"),这个useridB我想在双方都不进入房间,只是登录成功后获得,还有个问题就是为什么每次登录成功OnAnyChatLoginMessage(int dwUserId, int dwErrorCode)自己的id为什么会一直变化?如果这样我怎样获得对方id呢?

那么String QueryInfoFromServer(int dwInfoName, String strInParam, int dwFlags);这三个参数分别要填什么呢?我想通过昵称查询AnyChatDefine.ANYCHAT_SERVERQUERY_USERIDBYNAME,一个是昵称 那另外的一个应该填写什么呢?还有就是调用这个方法缺少一个so文件,像我这种情况怎么解决的呢
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9070
发表于 2016-3-29 14:00:50 | 显示全部楼层
还有个问题就是为什么每次登录成功OnAnyChatLoginMessage(int dwUserId, int dwErrorCode)自己的id为什么会一直变化?

请参考:有关AnyChat平台用户身份验证与第三方平台集成的问题

使用API:QueryInfoFromServer,请更新网上最新版本的SDK包:http://sdk.anychat.cn/html/download.html

第三个参数填0即可。
回复 支持 反对

使用道具 举报

5

主题

21

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2016-3-29 14:40:41 | 显示全部楼层
admin 发表于 2016-3-29 14:00
请参考:有关AnyChat平台用户身份验证与第三方平台集成的问题

使用API:QueryInfoFromServer,请更新 ...

OK了 恩 回答的就是我想问的 谢谢了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2016-5-1 11:07:13 | 显示全部楼层
您好,为什么我在由A向B发送请求之后,日志返回的是
Invoke        VideoCallControl(EventType:1, UserId:-5244, ErrorCode:0, dwFlags:0, dwParam:0, UserStr:zhkmxx930@door)=0
Message        OnVideoCallEvent(EventType:2, UserId:-5244, ErrorCode:100103, dwFlags:0x0, dwParam:0
然后接收方那边日志是
Message        OnVideoCallEvent(EventType:1, UserId:-5245, ErrorCode:0, dwFlags:0x0, dwParam:0

然后我的 OnAnyChatVideoCallEvent 这个回调函数没有执行。


这里我将我的请求端的代码贴一下,您看下谢谢:
  1. public class MainActivity extends AppCompatActivity implements AnyChatVideoCallEvent {

  2.     private AnyChatCoreSDK anyChatCoreSDK = null;
  3.     private SurfaceView mSurfaceLocal = null;
  4.     private EditText et_remoteId = null;
  5.     private Button btn_remote = null;
  6.     private int userId = 0;
  7.     @Override
  8.     protected void onCreate(Bundle savedInstanceState) {
  9.         super.onCreate(savedInstanceState);
  10.         setContentView(R.layout.activity_main);
  11.         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  12.         setSupportActionBar(toolbar);
  13.         InitLayout();
  14.         InitSDK();
  15.         GetLocalVideo();
  16.         ConnectServer();
  17.         btn_remote.setOnClickListener(new View.OnClickListener() {
  18.             @Override
  19.             public void onClick(View v) {
  20.             //在输入框中输入的远程用户ID
  21.                 userId = Integer.parseInt(et_remoteId.getText().toString());
  22. //                GetRemoteVideo();
  23.                 anyChatCoreSDK.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST, userId, 0, 0, 0, "zhkmxx930@door");

  24.             }
  25.         });
  26.     }

  27.     private void InitLayout(){
  28.         mSurfaceLocal = (SurfaceView) findViewById(R.id.surfaceView_local);
  29.         et_remoteId = (EditText) findViewById(R.id.et_remoteId);
  30.         btn_remote = (Button) findViewById(R.id.btn_remote);
  31.     }

  32.     private void InitSDK(){
  33.         anyChatCoreSDK = new AnyChatCoreSDK();
  34.         anyChatCoreSDK.InitSDK(Build.VERSION.SDK_INT, 0);
  35.         anyChatCoreSDK.SetVideoCallEvent(this);
  36.     }

  37.     private void ConnectServer(){
  38.         anyChatCoreSDK.Connect("demo.anychat.cn", 8906);
  39.         anyChatCoreSDK.Login("zhkmxx930@door", "");
  40.         anyChatCoreSDK.EnterRoom(1, "");
  41.         anyChatCoreSDK.UserCameraControl(-1,1);
  42.         anyChatCoreSDK.UserSpeakControl(-1,1);
  43.     }

  44. //    private void GetRemoteVideo(){
  45. //        int index = anyChatCoreSDK.mVideoHelper.bindVideo(mSurfaceLocal.getHolder());
  46. //        anyChatCoreSDK.mVideoHelper.SetVideoUser(index,userId);
  47. //        anyChatCoreSDK.UserCameraControl(userId, 1);
  48. //        anyChatCoreSDK.UserSpeakControl(userId, 1);
  49. //    }

  50.     private void GetLocalVideo(){
  51.         anyChatCoreSDK.mSensorHelper.InitSensor(this);
  52.         AnyChatCoreSDK.mCameraHelper.SetContext(this);
  53.         mSurfaceLocal.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  54.         mSurfaceLocal.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);
  55.     }

  56.     @Override
  57.     public void OnAnyChatVideoCallEvent(int dwEventType, int dwUserId, int dwErrorCode, int dwFlags, int dwParam, String userStr) {
  58.         System.out.println("===0===");
  59.         switch (dwEventType){
  60.             case AnyChatDefine.BRAC_VIDEOCALL_EVENT_REPLY:
  61.                 System.out.println("回复收到");
  62.                 switch (dwErrorCode){
  63.                     case AnyChatDefine.BRAC_ERRORCODE_SUCCESS:
  64.                         System.out.println("呼叫成功");
  65.                         Toast.makeText(this,"呼叫成功",Toast.LENGTH_LONG).show();
  66.                         break;
  67.                     case AnyChatDefine.BRAC_ERRORCODE_SESSION_BUSY:
  68.                         System.out.println("目标用户忙");
  69.                         Toast.makeText(this,"目标用户忙",Toast.LENGTH_LONG).show();
  70.                         break;
  71.                     case AnyChatDefine.BRAC_ERRORCODE_SESSION_DISCONNECT:
  72.                         System.out.println("网络断线");
  73.                         Toast.makeText(this,"网络断线",Toast.LENGTH_LONG).show();
  74.                         break;
  75.                     case AnyChatDefine.BRAC_ERRORCODE_SESSION_OFFLINE:
  76.                         System.out.println("目标用户不在线");
  77.                         Toast.makeText(this,"目标用户不在线",Toast.LENGTH_LONG).show();
  78.                         break;
  79.                     case AnyChatDefine.BRAC_ERRORCODE_SESSION_REFUSE:
  80.                         System.out.println("目标用户拒绝会话");
  81.                         Toast.makeText(this,"目标用户拒绝会话",Toast.LENGTH_LONG).show();
  82.                         break;
  83.                     case AnyChatDefine.BRAC_ERRORCODE_SESSION_TIMEOUT:
  84.                         System.out.println("会话请求超时");
  85.                         Toast.makeText(this,"会话请求超时",Toast.LENGTH_LONG).show();
  86.                         break;
  87.                     case AnyChatDefine.BRAC_ERRORCODE_SESSION_QUIT:
  88.                         System.out.println("源用户主动放弃会话");
  89.                         Toast.makeText(this,"源用户主动放弃会话",Toast.LENGTH_LONG).show();
  90.                         break;


  91.                 }
  92.                 break;
  93.             case AnyChatDefine.BRAC_VIDEOCALL_EVENT_START:
  94.                 System.out.println("开始通信");
  95.                 Toast.makeText(this,"开始通信",Toast.LENGTH_LONG).show();
  96.                 break;
  97.             case AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST:
  98.                 System.out.println("收到请求");
  99.         }
  100.     }
  101. }
复制代码
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9070
发表于 2016-5-2 14:08:25 | 显示全部楼层
OnVideoCallEvent(EventType:2, UserId:-5244, ErrorCode:100103, dwFlags:0x0, dwParam:0)

您好,ErrorCode:100103表示目标用户忙,对方还在通话中?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2016-12-28 10:55:23 | 显示全部楼层
下面是我的代码  我的问题是对方不显示我这边的画面和声音
public class CallActivity extends Activity implements AnyChatBaseEvent,AnyChatVideoCallEvent{
       
        private SurfaceView mSurfaceLocal;
        private SurfaceView mSurfaceRemote;
        int userid=18757;
        // 新建核心类对象
        AnyChatCoreSDK anychat = new AnyChatCoreSDK();
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_ideo);
                mSurfaceLocal=(SurfaceView) findViewById(R.id.surfaceview_local);
                mSurfaceRemote=(SurfaceView) findViewById(R.id.surfaceview_remote);
                anychat.SetBaseEvent(this);
                anychat.SetVideoCallEvent(this);
                anychat.InitSDK(android.os.Build.VERSION.SDK_INT, 0);
                initVideo();
                //startVideo();
        }
       
       



        // 置必要的音视频参数
        private void initVideo() {
                 // 连接服务器

                 anychat.Connect("demo.anychat.cn", 8906);

                 //登录服务器

                 anychat.Login("电梯一", "123");
                // 设置本地视频采集随着设备而旋转而处理
                  AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION, 1);
                //摄像头硬件初始化 启动anychat传感器监听
                anychat.mSensorHelper.InitSensor(this);
                //初始化camera
                AnyChatCoreSDK.mCameraHelper.SetContext(this);
                 //打开本地视频, 第一个参数用-1表示本地,也可以用本地的真实 userid
                    anychat.UserCameraControl(-1, 1);
                    //打开本地音频
                    anychat.UserSpeakControl(-1, 1);
                    //设置surface_tyoe_push_buffers
                  mSurfaceLocal.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
                         
                  mSurfaceLocal.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);
                         
        }
        //开始远程音视频
        private void startVideo() {
               
        }





        @Override
        public void OnAnyChatConnectMessage(boolean bSuccess) {
                // TODO Auto-generated method stub
                Log.e("videocall","连接服务器");
               
        }





        @Override
        public void OnAnyChatLoginMessage(int dwUserId, int dwErrorCode) {
                // TODO Auto-generated method stub
                Log.e("videocall","登陆成功");
                //发起请求
                anychat.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST, userid, 0, 0,0, "电梯一");
        }




        //进入房间触发,dwRoomId为房间号,dwErrorCode==0表示进入房间成功,其他值为进入 房  间 失败的错误代码
        @Override
        public void OnAnyChatEnterRoomMessage(int dwRoomId, int dwErrorCode) {
                // TODO Auto-generated method stub
                Log.e("videocall","进入房间"+dwRoomId+dwErrorCode);
               
               
                 // mRemoteUserid为通话目标对象的userId;

                  int index = anychat.mVideoHelper.bindVideo(mSurfaceRemote.getHolder());

                  anychat.mVideoHelper.SetVideoUser(index, userid);

                  anychat.UserCameraControl(userid, 1);

                  anychat.UserSpeakControl(userid, 1);
        }




         // 当前房间在线用户消息,进入房间成功后调用一次。dwUserNum当前房间总人数(包含自  己)
        @Override
        public void OnAnyChatOnlineUserMessage(int dwUserNum, int dwRoomId) {
                // TODO Auto-generated method stub
               
        }




         // 当前房间用户离开或者进入房间触发这个回调,dwUserId用户 id," bEnter==true"表示进入 房间,反之表示离开房间
        @Override
        public void OnAnyChatUserAtRoomMessage(int dwUserId, boolean bEnter) {
                // TODO Auto-generated method stub
               
        }





        @Override
        public void OnAnyChatLinkCloseMessage(int dwErrorCode) {
                // TODO Auto-generated method stub
               
        }



        @Override
        public void OnAnyChatVideoCallEvent(int dwEventType, int dwUserId,
                        int dwErrorCode, int dwFlags, int dwParam, String userStr) {
                // TODO Auto-generated method stub
                Log.e("videocall","callevent"+dwEventType+dwParam);
                Log.e("videocall","callevent"+dwParam);
                switch(dwEventType)
        {
        case AnyChatDefine.BRAC_VIDEOCALL_EVENT_START:
                Log.e("videocall","开始");
               
                 anychat.EnterRoom(dwParam,"");
                break;
               
        }





        }


       
}


回复 支持 反对

使用道具 举报

2

主题

336

帖子

1243

积分

金牌会员

Rank: 6Rank: 6

积分
1243
发表于 2016-12-28 11:12:45 | 显示全部楼层
baoxp 发表于 2016-12-28 10:55
下面是我的代码  我的问题是对方不显示我这边的画面和声音
public class CallActivity extends Activity  ...

你好 请发一下日志信息 日志在插件安装目录下 插件默认安装在C盘 C:\Program Files (x86)\AnyChatWeb 下的BRAnyChatCore.log
回复 支持 反对

使用道具 举报

0

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2016-12-28 11:33:40 | 显示全部楼层
佰锐科技-刘洋 发表于 2016-12-28 11:12
你好 请发一下日志信息 日志在插件安装目录下 插件默认安装在C盘 C:\Program Files (x86)\AnyChatWeb 下 ...

我是安卓开发的
回复 支持 反对

使用道具 举报

2

主题

336

帖子

1243

积分

金牌会员

Rank: 6Rank: 6

积分
1243
发表于 2016-12-28 11:37:38 | 显示全部楼层
baoxp 发表于 2016-12-28 11:33
我是安卓开发的

安卓日志信息在cdcard里面BRAnyChatCore.log
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-3-20 03:50 , Processed in 0.142888 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表