简单bu小小 发表于 2015-11-13 11:51:26

为什么我自己照着anychat开发流程指南写的demo得不到对方的视频呢?

本帖最后由 简单bu小小 于 2015-11-13 11:56 编辑

我是按照开发流程指南上一步一步写的啊,不知道哪里的问题:'(对方能看到我,我看不到对方我的代码:
MainActivity的代码:
package com.dcl.myanychatdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.bairuitech.anychat.AnyChatBaseEvent;
import com.bairuitech.anychat.AnyChatCoreSDK;
import com.bairuitech.anychat.AnyChatObjectEvent;

public class MainActivity extends Activity implements AnyChatBaseEvent,AnyChatObjectEvent{
      
      private AnyChatCoreSDK anychat=null;
      private Button loginBtn,chatBtn;
      private String serverIp="demo.anychat.cn";
      private int port=8906;
      
      
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                initSDK();
                initView();
      }

      private void initView() {
                loginBtn=(Button) findViewById(R.id.login);
                chatBtn=(Button) findViewById(R.id.chat);
                loginBtn.setOnClickListener(new OnClickListener() {
                        
                        @Override
                        public void onClick(View arg0) {
                              //连接服务器,第一个参数为需要连接的视频服务器地址,部署的视频服务器地址为多少就传入多少
                              anychat.Connect(serverIp, port);
                              //用户登录
                              anychat.Login("Adeng", "");
                        }
                });
                chatBtn.setOnClickListener(new OnClickListener() {
                        
                        @Override
                        public void onClick(View arg0) {
                              //进入房间
                              Intent intent=new Intent();
                              intent.setClass(MainActivity.this, ChatActivity.class);
                              startActivity(intent);
                        }
                });
      }

      private void initSDK() {
                //新建核心类对象
                //方法一:
                anychat=new AnyChatCoreSDK();
                //方法二:
//                anychat=AnyChatCoreSDK.getInstance(getApplicationContext());
               
                //设置基本回调事件接收
                anychat.SetBaseEvent(this);
                //设置业务对象回调事件接收
                anychat.SetObjectEvent(this);
               
                //初始化SDK,第一个参数传入的是Android的系统版本号
                anychat.InitSDK(Build.VERSION.SDK_INT, 0);
               
      }

      //连接服务器触发(connet),bSuccess==true连接服务器成功,反之连接服务器失败
      @Override
      public void OnAnyChatConnectMessage(boolean bSuccess) {
                // TODO Auto-generated method stub
                if(bSuccess){
                        Log.i("msg", "连接服务器成功");
                }else{
                        Log.i("msg", "连接服务器失败");
                }
      }

      //用户登录触发(login),dwUserId是服务器为客户端分配的唯一标识userid,dwErrorCode==0表示登录成功,其他值为登录服务器失败的错误代码
      @Override
      public void OnAnyChatLoginMessage(int dwUserId, int dwErrorCode) {
                // TODO Auto-generated method stub
                if(dwErrorCode==0){
                        Log.i("msg", "登录成功,userid="+dwUserId);
                        anychat.EnterRoom(1, "");
                }else{
                        Log.i("msg", "登录失败,错误代码为:"+dwErrorCode);
                }
      }

      //进入房间触发,dwRoomId为房间号,dwErrorCode==0表示进入房间成功,其他值为进入房间失败的错误代码
      @Override
      public void OnAnyChatEnterRoomMessage(int dwRoomId, int dwErrorCode) {
                // TODO Auto-generated method stub
                if(dwErrorCode==0){
                        Log.i("msg", "进入房间成功");
                }else{
                        Log.i("msg", "进入房间失败,错误代码为:"+dwErrorCode);
                }
      }

      @Override
      public void OnAnyChatOnlineUserMessage(int dwUserNum, int dwRoomId) {
                // TODO Auto-generated method stub
                Log.i("msg", dwRoomId+"号房间在线人数有"+dwUserNum);
      }

      //当前房间用户离开或者进入房间触发这个回调,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
                Toast.makeText(this, "网络异常,与服务器断开,请检查网络", Toast.LENGTH_SHORT).show();
      }

      //业务对象回调事件,调用AnyChatCoreSDK.ObjectControl方法触发这个回调
      @Override
      public void OnAnyChatObjectEvent(int dwObjectType, int dwObjectId,
                        int dwEventType, int dwParam1, int dwParam2, int dwParam3,
                        int dwParam4, String strParam) {
                // TODO Auto-generated method stub
               
      }

}



显示聊天的界面ChatActivity的代码:
package com.dcl.myanychatdemo;

import com.bairuitech.anychat.AnyChatCoreSDK;
import com.bairuitech.anychat.AnyChatDefine;

import android.app.Activity;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class ChatActivity extends Activity{
      
      private SurfaceView surfaceviewLocal,surfaceviewRemote;
      private AnyChatCoreSDK anychatSDK;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.chat);
                anychatSDK=new AnyChatCoreSDK();
                //初始化用于显示视频的控件surfaceview
                surfaceviewLocal=(SurfaceView) findViewById(R.id.surfaceview_local);
                surfaceviewRemote=(SurfaceView) findViewById(R.id.surfaceview_remote);
                //设置本地视频采集随着设备而旋转处理
                AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION, 1);
               
                //初始化硬件Camera设备必须在oncreate方法中
                //启动anychat传感器监听
                anychatSDK.mSensorHelper.InitSensor(this);
                //初始化camera上下文句柄
                AnyChatCoreSDK.mCameraHelper.SetContext(this);
                //设置SURFACE_TYPE_PUSH_BUFFERS模式
                surfaceviewLocal.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
                //打开本地视频预览,开始采集本地视频数据
                surfaceviewLocal.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);
               
                //打开本地视频,第一个参数用-1表示本地,也可以用本地的真是userID
                anychatSDK.UserCameraControl(-1, 1);
                //打开本地音频
                anychatSDK.UserSpeakControl(-1, 1);
               
                //-35626为通话目标对象的userID
                int index=anychatSDK.mVideoHelper.bindVideo(surfaceviewRemote.getHolder());
                anychatSDK.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_REQUEST, -35882, 0, 0, 0, null);
                anychatSDK.mVideoHelper.SetVideoUser(index, -35882);
                anychatSDK.UserCameraControl(-35882, 1);
                anychatSDK.UserSpeakControl(-35882, 1);
      }
}



求助大神啊~




陈文仲 发表于 2015-11-13 14:08:20

您好,提供一下双方的日志文件,Android客户端的日志在SD卡根目录下(BRAnyChatCore.log)。另外开发时可以参考SDK包下的HelloAnyChatdemo进行开发。

简单bu小小 发表于 2015-11-13 15:00:48

陈文仲 发表于 2015-11-13 14:08
您好,提供一下双方的日志文件,Android客户端的日志在SD卡根目录下(BRAnyChatCore.log)。另外开发时可以 ...

        ---------------------------AnyChat Platform Core SDK Client Log---------------------------
        Load libanychatcore.so success!(V5.3 Build Time:Aug 10 2015 05:31:49)
        Android OS SDK Version:18, Support ARMv7:2, Support Neon:4
        Load libmediautil_v7.so success!(V5.3 Build Time:Aug 10 2015 05:32:58)
        Load libmediashow.so success!(V5.3 Build Time:Aug 10 2015 05:32:42)
        Load libmediacore.so success!(V5.3 Build Time:Aug 10 2015 05:32:44)
        cpu:Qualcomm MSM 8226 (Flattened Device Tree)(lattened Device Tree)) ) mips
        SM-G7108(samsung) msm8226 MSM8626 4.3
        Apply video parameter:320x240, bitrate:150kbps, quality:3, gop:40, fps:10, preset:3, codec:0
        Invoke        SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC=1)
        Invoke        SetSDKOption(BRAC_SO_AUDIO_ECHOCTRL,1)
        Invoke        SetSDKOption(BRAC_SO_CORESDK_USEHWCODEC=0)
        Invoke        Connect(demo.anychat.cn,8906)=0
        Invoke        LoginServer(username=name)
        CheckClientSocketLink       Connect(ip=121.199.51.198,port=8906)
        Server version: V5.3(Build Time:2015-09-29 22:14:08, Server OS:Windows)
        Message        OnConnect(bSuccess:1, errorcode=0)
        Message        OnLoginSystem(userid=-36324,errorcode=0,username=name), msg deliver worked(0)
        Server running time: 20 days, 22 hours, 55 minutes, license mode:1
        Invoke        EnterRoom(roomid=1)
        Connection to streaming media server successfully!(udp delay:434ms)
        Message        OnEnterRoom(roomid=1,errorcode=0,siteindex=7)
        Audio Playback Device Init(0, 1, 16000, 16), Default Playback Driver
        Message        OnReceiveOnlineUser(count=7,roomid=1)
        Message        OnP2PConnectState(userid=9719, state=2)
        Message        OnP2PConnectState(userid=-36318, state=2)
        Message        OnP2PConnectState(userid=9646, state=2)
        Invoke        VideoCallControl(EventType:1, UserId:-36318, ErrorCode:0, dwFlags:0, dwParam:0, UserStr:)=0
        Invoke        UserCameraControl(userid=-36318, bOpen=1, stream=0)
        Invoke        UserSpeakControl(userid=-36318,bOpen=1)
        Invoke        UserCameraControl(userid=-1, bOpen=1, stream=0)
        Invoke        UserSpeakControl(userid=-1,bOpen=1)
        Invoke        SetSDKOption(BRAC_SO_CORESDK_EXTVIDEOINPUT=0)
        Invoke        SetInputAudioFormat(1, 16000, 16, flags:0)
        Audio Init, error:0, device:-1, 1, 16000, 16, capmode:0
        Audio codec init, handle:1, 11, 1, 16000, 16, 15850
        Audio FX Status: VAD:1, NS:1, AGC:1, AEC:1
        APPLOG        Camera Preview size: 720 x 720
        APPLOG        Camera Preview size: 1280 x 720
        APPLOG        Camera Preview size: 1056 x 864
        APPLOG        Camera Preview size: 960 x 720
        APPLOG        Camera Preview size: 720 x 480
        APPLOG        Camera Preview size: 640 x 480
        APPLOG        Camera Preview size: 352 x 288
        APPLOG        Camera Preview size: 320 x 240
        APPLOG        Camera FrameRate: 7000 , 30500
        Message        OnVideoCallEvent(EventType:2, UserId:-36318, ErrorCode:0, dwFlags:0x0, dwParam:0
        Invoke        SetSDKOption(BRAC_SO_CORESDK_EXTVIDEOINPUT=1)
        Invoke        SetInputVideoFormat(pixfmt:8, 320x240, 30fps, flags:0)
        video init finish:320x240, NV21, fps:30, codecid:1
        video codec init:codec:1, 10fps, 320x240, bitrate:150kbps, quality:3, preset:3, gop:40, handle:2
        userid(-36318) audio decode, codec:11, 1 channel, 16000Hz
        userid(-36318) video decode, codec:1, 320x240, delay:7ms



这个是我的demo的日志,另外一个设备运行的是helloanychat的demo

简单bu小小 发表于 2015-11-13 16:18:59

陈文仲 发表于 2015-11-13 14:08
您好,提供一下双方的日志文件,Android客户端的日志在SD卡根目录下(BRAnyChatCore.log)。另外开发时可以 ...

我知道怎么回事了,我在chatActivity里的anychatsdk没有设置基本回调事件,就是这句:
anychatSDK.SetBaseEvent(this);
页: [1]
查看完整版本: 为什么我自己照着anychat开发流程指南写的demo得不到对方的视频呢?