lh602499774 发表于 2016-3-29 12:50:18

佰锐科技-邵光清 发表于 2016-3-29 11:54
您好,VideoCallControl可以在登录成功之后调用,也可以在进入房间之后调用,前提是先获取到对方的userid ...

这里同时还需要一个.so文件 哪里能下载到呢

lh602499774 发表于 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文件,像我这种情况怎么解决的呢

admin 发表于 2016-3-29 14:00:50

还有个问题就是为什么每次登录成功OnAnyChatLoginMessage(int dwUserId, int dwErrorCode)自己的id为什么会一直变化?
请参考:有关AnyChat平台用户身份验证与第三方平台集成的问题

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

第三个参数填0即可。

lh602499774 发表于 2016-3-29 14:40:41

admin 发表于 2016-3-29 14:00
请参考:有关AnyChat平台用户身份验证与第三方平台集成的问题

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

OK了 恩 回答的就是我想问的 谢谢了

zhkmxx930 发表于 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 这个回调函数没有执行。


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

    private AnyChatCoreSDK anyChatCoreSDK = null;
    private SurfaceView mSurfaceLocal = null;
    private EditText et_remoteId = null;
    private Button btn_remote = null;
    private int userId = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
      InitLayout();
      InitSDK();
      GetLocalVideo();
      ConnectServer();
      btn_remote.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //在输入框中输入的远程用户ID
                userId = Integer.parseInt(et_remoteId.getText().toString());
//                GetRemoteVideo();
                anyChatCoreSDK.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST, userId, 0, 0, 0, "zhkmxx930@door");

            }
      });
    }

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

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

    private void ConnectServer(){
      anyChatCoreSDK.Connect("demo.anychat.cn", 8906);
      anyChatCoreSDK.Login("zhkmxx930@door", "");
      anyChatCoreSDK.EnterRoom(1, "");
      anyChatCoreSDK.UserCameraControl(-1,1);
      anyChatCoreSDK.UserSpeakControl(-1,1);
    }

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

    private void GetLocalVideo(){
      anyChatCoreSDK.mSensorHelper.InitSensor(this);
      AnyChatCoreSDK.mCameraHelper.SetContext(this);
      mSurfaceLocal.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
      mSurfaceLocal.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);
    }

    @Override
    public void OnAnyChatVideoCallEvent(int dwEventType, int dwUserId, int dwErrorCode, int dwFlags, int dwParam, String userStr) {
      System.out.println("===0===");
      switch (dwEventType){
            case AnyChatDefine.BRAC_VIDEOCALL_EVENT_REPLY:
                System.out.println("回复收到");
                switch (dwErrorCode){
                  case AnyChatDefine.BRAC_ERRORCODE_SUCCESS:
                        System.out.println("呼叫成功");
                        Toast.makeText(this,"呼叫成功",Toast.LENGTH_LONG).show();
                        break;
                  case AnyChatDefine.BRAC_ERRORCODE_SESSION_BUSY:
                        System.out.println("目标用户忙");
                        Toast.makeText(this,"目标用户忙",Toast.LENGTH_LONG).show();
                        break;
                  case AnyChatDefine.BRAC_ERRORCODE_SESSION_DISCONNECT:
                        System.out.println("网络断线");
                        Toast.makeText(this,"网络断线",Toast.LENGTH_LONG).show();
                        break;
                  case AnyChatDefine.BRAC_ERRORCODE_SESSION_OFFLINE:
                        System.out.println("目标用户不在线");
                        Toast.makeText(this,"目标用户不在线",Toast.LENGTH_LONG).show();
                        break;
                  case AnyChatDefine.BRAC_ERRORCODE_SESSION_REFUSE:
                        System.out.println("目标用户拒绝会话");
                        Toast.makeText(this,"目标用户拒绝会话",Toast.LENGTH_LONG).show();
                        break;
                  case AnyChatDefine.BRAC_ERRORCODE_SESSION_TIMEOUT:
                        System.out.println("会话请求超时");
                        Toast.makeText(this,"会话请求超时",Toast.LENGTH_LONG).show();
                        break;
                  case AnyChatDefine.BRAC_ERRORCODE_SESSION_QUIT:
                        System.out.println("源用户主动放弃会话");
                        Toast.makeText(this,"源用户主动放弃会话",Toast.LENGTH_LONG).show();
                        break;


                }
                break;
            case AnyChatDefine.BRAC_VIDEOCALL_EVENT_START:
                System.out.println("开始通信");
                Toast.makeText(this,"开始通信",Toast.LENGTH_LONG).show();
                break;
            case AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST:
                System.out.println("收到请求");
      }
    }
}

admin 发表于 2016-5-2 14:08:25

OnVideoCallEvent(EventType:2, UserId:-5244, ErrorCode:100103, dwFlags:0x0, dwParam:0)
您好,ErrorCode:100103表示目标用户忙,对方还在通话中?

baoxp 发表于 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;
               
        }





        }


       
}


佰锐科技-刘洋 发表于 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

baoxp 发表于 2016-12-28 11:33:40

佰锐科技-刘洋 发表于 2016-12-28 11:12
你好 请发一下日志信息 日志在插件安装目录下 插件默认安装在C盘 C:\Program Files (x86)\AnyChatWeb 下 ...

我是安卓开发的

佰锐科技-刘洋 发表于 2016-12-28 11:37:38

baoxp 发表于 2016-12-28 11:33
我是安卓开发的

安卓日志信息在cdcard里面BRAnyChatCore.log
页: 1 2 3 4 5 6 7 8 9 [10] 11
查看完整版本: AnyChat视频呼叫业务逻辑详解