Luyh 发表于 2016-11-11 10:06:12

anychat 只进行语言聊天的 问题

现在我想要做一个音频聊天的功能,两端接通后,有时听到的语音有时听不到语音。这什么情况呢?下面是语音聊天的界面代码。


package com.bairuitech.callcenter;

import com.bairuitech.anychat.AnyChatBaseEvent;
import com.bairuitech.anychat.AnyChatCoreSDK;
import com.bairuitech.anychat.AnyChatDefine;
import com.bairuitech.anychat.AnyChatVideoCallEvent;
import com.yunmai.entcc.R;
import com.yunmai.imdemo.controller.voicechat.VoiceChatController;
import com.yunmai.imdemo.controller.voicechat.VoiceChatListener;
import com.yunmai.imdemo.controller.webrtc.RingtoneController;
import com.yunmai.imdemo.ui.ChatActivity;
import com.yunmai.imdemo.util.HandlerUnit;

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

/**
* 单人语音聊天
* @author Administrator
*
*/
public class SingleVoiceChatActivity extends Activity implements OnClickListener, AnyChatBaseEvent, AnyChatVideoCallEvent,VoiceChatListener{
        private TextView voiceChatInfo;
        private Button handUp;
        public AnyChatCoreSDK anychat;
        int userID;// 对方视频id
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_single_voice_chat);
                VoiceChatController.listener = this;
                initView();
                setListener();
                Intent intent = getIntent();
                userID = intent.getIntExtra("UserID", -1);
                InitialSDK();
                RingtoneController.stopRingTone();
        }

        private void InitialSDK() {
                anychat = new AnyChatCoreSDK();
                anychat.SetBaseEvent(this);
                // 启动AnyChat传感器监听
                anychat.mSensorHelper.InitSensor(this);
                // 初始化Camera上下文句柄
                AnyChatCoreSDK.mCameraHelper.SetContext(this);
                anychat.SetVideoCallEvent(this);
        }

        private void initView() {
                voiceChatInfo = (TextView) findViewById(R.id.voice_chat_info);
                handUp = (Button) findViewById(R.id.btn_handup);
                voiceChatInfo.setText("与 "+VoiceChatController.instance.getUserName()
                                + "("
                                + VoiceChatController.instance.getUser().substring(0,
                                                VoiceChatController.instance.getUser().indexOf("#"))
                                + ")"+" 语音中");
        }
       
        private void setListener() {
                handUp.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
                switch (v.getId()) {
                case R.id.btn_handup:
                        anychat.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_FINISH,userID, 0, 0, 0,"");
                        if (HandlerUnit.getMessageHandler() != null) {
                                HandlerUnit
                                                .getMessageHandler()
                                                .obtainMessage(
                                                                ChatActivity.HANDLER_REFRESH_IMMSGLIST)
                                                .sendToTarget();
                        }
                        onVoiceChatRefuse();
                        break;
                }
        }
       
        @Override
        protected void onResume() {
                super.onResume();
                reflashVoice();
        }
       
        @Override
        protected void onPause() {
                super.onPause();
                anychat.UserSpeakControl(-1, 0);
                anychat.UserSpeakControl(userID, 0);
        }
       
        @Override
        protected void onRestart() {
                super.onRestart();
                reflashVoice();
        }

        private void reflashVoice() {
                anychat.UserSpeakControl(userID, 1);
                anychat.UserSpeakControl(-1, 1);
        }

        private void finishActivits() {
                if(VoiceChatConnectingActivity.voiceChatConnectingActivity != null){
                        VoiceChatConnectingActivity.voiceChatConnectingActivity.finish();
                }
                this.finish();
        }

        @Override
        public void OnAnyChatConnectMessage(boolean bSuccess) {
               
        }

        @Override
        public void OnAnyChatLoginMessage(int dwUserId, int dwErrorCode) {
               
        }

        @Override
        public void OnAnyChatEnterRoomMessage(int dwRoomId, int dwErrorCode) {
               
        }

        @Override
        public void OnAnyChatOnlineUserMessage(int dwUserNum, int dwRoomId) {
               
        }

        @Override
        public void OnAnyChatUserAtRoomMessage(int dwUserId, boolean bEnter) {
               
        }

        @Override
        public void OnAnyChatLinkCloseMessage(int dwErrorCode) {
                anychat.UserSpeakControl(userID, 0);
                anychat.UserSpeakControl(-1, 0);
                Toast.makeText(SingleVoiceChatActivity.this, "视频连接中断,请确定网络是否正常。", 1).show();
        }

        @Override
        public void onVoiceChatAsk() {
               
        }

        @Override
        public void onVoiceChatAgree() {
               
        }

        @Override
        public void onVoiceChatRefuse() {
                if (HandlerUnit.getMessageHandler() != null) {
                        HandlerUnit.getMessageHandler()
                                        .obtainMessage(ChatActivity.HANDLER_REFRESH_IMMSGLIST)
                                        .sendToTarget();
                }
                finishActivits();
        }

        @Override
        public void onTimeOut() {
               
        }

        @Override
        public void onVersionLow() {
                // TODO Auto-generated method stub
               
        }
       
        @Override
        public void OnAnyChatVideoCallEvent(int dwEventType, int dwUserId,
                        int dwErrorCode, int dwFlags, int dwParam, String userStr) {
                Log.w("VideoActivity", dwEventType + "");
                switch (dwEventType) {
                case AnyChatDefine.BRAC_VIDEOCALL_EVENT_FINISH:
                        Log.e("BRAC_VIDEOCALL_EVENT_FINISH", dwEventType + "");
                        onVoiceChatRefuse();
                        anychat.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_FINISH,dwUserId, 0, 0, 0,"");
                        break;
                }
        }
       
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
                if(keyCode == KeyEvent.KEYCODE_BACK){
                        onVoiceChatRefuse();
                        anychat.VideoCallControl(AnyChatDefine.BRAC_VIDEOCALL_EVENT_FINISH,userID, 0, 0, 0,"");
                }
                return super.onKeyDown(keyCode, event);
        }
       
        @Override
        protected void onDestroy() {
                super.onDestroy();
                if(anychat != null){
                        anychat.Logout();
                        anychat.Release();
                        anychat.mSensorHelper.DestroySensor();
                }
        }

}


佰锐科技-邵光清 发表于 2016-11-11 12:53:06

你好,请将两端的日志发过来分析,在sd卡根目录下:BRAnyChatCore.log,谢谢

Luyh 发表于 2016-11-11 13:33:46

BRAnyChatCore1.log

        ---------------------------AnyChat Platform Core SDK Client Log---------------------------
        Load libanychatcore.so success!(V6.0 Build Time:Feb 15 2016 13:16:39)
        Android OS SDK Version:17, Support ARMv7:2, Support Neon:4
        Load libmediautil_v7.so success!(V6.0 Build Time:Feb 15 2016 13:18:25)
        Load libmediashow.so success!(V6.0 Build Time:Feb 15 2016 13:18:10)
        Load libmediacore.so success!(V6.0 Build Time:Feb 15 2016 13:18:13)
        cpu:SMDK4x12(b0f2707d4d004c43) 1592.52 mips
        SM-C101(samsung) exynos4 smdk4x12 4.2.2
        Apply video parameter:320x240, bitrate:150kbps, quality:0, 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(121.40.44.164,8906)=0
        Invoke        Login(username:ZAndroid2)=0
        Create anychatdnsserver connect:121.40.44.164(8906)
        On pre-connection result, errorcode:0, anychatcoreserver, 121.40.44.164(8906, tcp:1)
        CheckClientSocketLink       Connect(ip=121.40.44.164,port=8906)
        Server version: V6.1(Build Time:2016-08-02 13:52:22, Server OS:Windows)
        Message        OnConnect(bSuccess:1, errorcode=0)
        Message        OnLoginSystem(userid=-2966,errorcode=0,username=ZAndroid2), msg deliver worked(0)
        Server running time: 30 days, 15 hours, 48 minutes, license mode:0
        Invoke        EnterRoom(roomid=834276)
        Connection to streaming media server successfully!(udp delay:47ms)
        Message        OnEnterRoom(roomid=834276,errorcode=0,siteindex=1)
        Audio Playback Device Init(0, 1, 16000, 16), Default Playback Driver
        Message        OnReceiveOnlineUser(count=2,roomid=834276)
        Invoke        VideoCallControl(EventType:1, UserId:-2967, ErrorCode:0, dwFlags:0, dwParam:0, UserStr:)=0
        Message        OnVideoCallEvent(EventType:2, UserId:-2967, ErrorCode:0, dwFlags:0x0, dwParam:0
        Message        OnVideoCallEvent(EventType:3, UserId:-2967, ErrorCode:0, dwFlags:0x0, dwParam:1
        Invoke        UserSpeakControl(userid=-1,bOpen=1)
        Invoke        UserSpeakControl(userid=-2967,bOpen=1)
        Invoke        UserSpeakControl(userid=-2967,bOpen=1)
        Invoke        UserSpeakControl(userid=-1,bOpen=1)
        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
        On Remote UserSpeakControl(dwUserId:-2967, bOpen:1)
        Audio FX Status: VAD:1, NS:1, AGC:1, AEC:1
        userid(-2967) audio decode, codec:11, 1 channel, 16000Hz
        Invoke        VideoCallControl(EventType:4, UserId:-2967, ErrorCode:0, dwFlags:0, dwParam:0, UserStr:)=0
        Message        OnVideoCallEvent(EventType:4, UserId:-2967, ErrorCode:0, dwFlags:0x0, dwParam:0
        Invoke        LeaveRoom(roomid=-1)        Elapse:107 ms
        Invoke        LogoutServer(userid=-2966)        Elapse:170 ms
        Invoke        BRAC_Release        Elapse:41 ms


BRAnyChatCore2.log
        ---------------------------AnyChat Platform Core SDK Client Log---------------------------
        Load libanychatcore.so success!(V6.0 Build Time:Feb 15 2016 13:16:39)
        Android OS SDK Version:19, Support ARMv7:2, Support Neon:4
        Load libmediautil_v7.so success!(V6.0 Build Time:Feb 15 2016 13:18:25)
        Load libmediashow.so success!(V6.0 Build Time:Feb 15 2016 13:18:10)
        Load libmediacore.so success!(V6.0 Build Time:Feb 15 2016 13:18:13)
        HONOR H30-L01M(HUAWEI) hi6620oem4.4.2
        Apply video parameter:320x240, bitrate:150kbps, quality:0, 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(121.40.44.164,8906)=0
        Invoke        Login(username:卢允辉)=0
        Create anychatdnsserver connect:121.40.44.164(8906)
        On pre-connection result, errorcode:0, anychatcoreserver, 121.40.44.164(8906, tcp:1)
        CheckClientSocketLink       Connect(ip=121.40.44.164,port=8906)
        Server version: V6.1(Build Time:2016-08-02 13:52:22, Server OS:Windows)
        Message        OnConnect(bSuccess:1, errorcode=0)
        Message        OnLoginSystem(userid=-2970,errorcode=0,username=卢允辉), msg deliver worked(0)
        Server running time: 30 days, 15 hours, 53 minutes, license mode:0
        Invoke        EnterRoom(roomid=626466)
        Connection to streaming media server successfully!(udp delay:40ms)
        Message        OnEnterRoom(roomid=626466,errorcode=0,siteindex=0)
        Audio Playback Device Init(0, 1, 16000, 16), Default Playback Driver
        Message        OnReceiveOnlineUser(count=1,roomid=626466)
        Audio FX Status: VAD:1, NS:1, AGC:1, AEC:1
        Message        OnUserEnterRoom(userid=-2971,nickname=ZAndroid2,siteindex=1)
        Invoke        VideoCallControl(EventType:1, UserId:-2971, ErrorCode:0, dwFlags:0, dwParam:0, UserStr:)=0
        Message        OnVideoCallEvent(EventType:2, UserId:-2971, ErrorCode:0, dwFlags:0x0, dwParam:0
        Message        OnVideoCallEvent(EventType:3, UserId:-2971, ErrorCode:0, dwFlags:0x0, dwParam:1
        Invoke        UserSpeakControl(userid=-1,bOpen=1)
        Invoke        UserSpeakControl(userid=-2971,bOpen=1)
        Invoke        UserSpeakControl(userid=-2971,bOpen=1)
        Invoke        UserSpeakControl(userid=-1,bOpen=1)
        On Remote UserSpeakControl(dwUserId:-2971, bOpen:1)
        Invoke        VideoCallControl(EventType:4, UserId:-2971, ErrorCode:0, dwFlags:0, dwParam:0, UserStr:)=0
        Invoke        LeaveRoom(roomid=-1)        Elapse:116 ms
        Invoke        LogoutServer(userid=-2970)        Elapse:140 ms
        Invoke        BRAC_Release        Elapse:74 ms


佰锐科技-邵光清 发表于 2016-11-11 14:11:31

你好,第二个日志显示音频并没有初始化,没有输出Audio Init, error:0, device:-1, 1, 16000, 16, capmode:0
Audio codec init, handle:1, 11, 1, 16000, 16, 15850同一个程序么? HONOR H30-L01M(HUAWEI) hi6620oem4.4.2这个手机跑我们demo是否声音正常?

佰锐科技-邵光清 发表于 2016-11-11 14:23:58

两端接通后,有时听到语音有时听不到语音

请问听不到语音,是发生在什么情况下?

Luyh 发表于 2016-11-11 14:37:45

跳转到如下acitivity时就进行语言通话(然而在这个activity中进行语音通话的时候会偶尔出现上面出现的问题)

package com.bairuitech.callcenter;

import com.bairuitech.anychat.AnyChatBaseEvent;
import com.bairuitech.anychat.AnyChatCoreSDK;
import com.bairuitech.anychat.AnyChatVideoCallEvent;
import com.yunmai.entcc.R;
import com.yunmai.imdemo.controller.voicechat.VoiceChatController;
import com.yunmai.imdemo.controller.voicechat.VoiceChatListener;
import com.yunmai.imdemo.controller.webrtc.RingtoneController;
import com.yunmai.imdemo.view.RoundAngleImageView;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

/**
* 单人语音聊天
* @author Administrator
*
*/
public class SingleVoiceChatActivity extends Activity implements OnClickListener, AnyChatBaseEvent, AnyChatVideoCallEvent,VoiceChatListener{
        private TextView voiceChatInfo;
        private Button handUp;
        public AnyChatCoreSDK anychat;
        int userID;// 对方视频id
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_single_voice_chat);
                VoiceChatController.listener = this;
                initView();
                setListener();
                Intent intent = getIntent();
                userID = intent.getIntExtra("UserID", -1);
                InitialSDK();
                RingtoneController.stopRingTone();
               
                anychat.UserSpeakControl(userID, 1);
                anychat.UserSpeakControl(-1, 1);
        }

        private void InitialSDK() {
                anychat = new AnyChatCoreSDK();
                anychat.SetBaseEvent(this);
                // 启动AnyChat传感器监听
                anychat.mSensorHelper.InitSensor(this);
                // 初始化Camera上下文句柄
                AnyChatCoreSDK.mCameraHelper.SetContext(this);
                anychat.SetVideoCallEvent(this);
        }

        private void initView() {
                voiceChatInfo = (TextView) findViewById(R.id.voice_chat_info);
                handUp = (Button) findViewById(R.id.btn_handup);
                voiceChatInfo.setText("与 "+VoiceChatController.instance.getUserName()
                                + "("
                                + VoiceChatController.instance.getUser().substring(0,
                                                VoiceChatController.instance.getUser().indexOf("#"))
                                + ")"+" 语音中");
        }
       
        private void setListener() {
                handUp.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
                // TODO Auto-generated method stub
                switch (v.getId()) {
                case R.id.btn_handup:
                        VoiceChatController.instance.endVideoChat();
                        finishActivits();
                        break;

                default:
                        break;
                }
        }

        private void finishActivits() {
                if(VoiceChatConnectingActivity.voiceChatConnectingActivity != null){
                        VoiceChatConnectingActivity.voiceChatConnectingActivity.finish();
                }
                this.finish();
        }

        @Override
        public void OnAnyChatVideoCallEvent(int dwEventType, int dwUserId,
                        int dwErrorCode, int dwFlags, int dwParam, String userStr) {
                // TODO Auto-generated method stub
               
        }

        @Override
        public void OnAnyChatConnectMessage(boolean bSuccess) {
                // TODO Auto-generated method stub
               
        }

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

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

        @Override
        public void OnAnyChatOnlineUserMessage(int dwUserNum, int dwRoomId) {
                // TODO Auto-generated method stub
               
        }

        @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 onVoiceChatAsk() {
                // TODO Auto-generated method stub
               
        }

        @Override
        public void onVoiceChatAgree() {
                // TODO Auto-generated method stub
               
        }

        @Override
        public void onVoiceChatRefuse() {
                finishActivits();
        }

        @Override
        public void onTimeOut() {
                // TODO Auto-generated method stub
               
        }

        @Override
        public void onVersionLow() {
                // TODO Auto-generated method stub
               
        }


}

Luyh 发表于 2016-11-11 14:42:37

对了我问下,我那个语音聊天的activity界面代码逻辑有问题吗?

佰锐科技-邵光清 发表于 2016-11-11 14:53:27

本帖最后由 佰锐科技-邵光清 于 2016-11-11 15:03 编辑

Luyh 发表于 2016-11-11 14:42
对了我问下,我那个语音聊天的activity界面代码逻辑有问题吗?
原来两端的程序是不同的。打开本地音频和请求对方的音频,都需要在进入房间之后,即OnAnyChatEnterRoomMessage语音聊天界面应该进入房间了,你试试在initView中,在oncreat中也可以;anychat.UserSpeakControl(userID, 1);
anychat.UserSpeakControl(-1, 1);

佰锐科技-邵光清 发表于 2016-11-11 15:05:39

您对比一下发上来的两份代码,其中一个是OK的,就按照这个来改改。

Luyh 发表于 2016-11-11 15:18:07

我现在测试了一下,就是在进行语音聊天的时候,语音建立连接时时间比较长。这个该怎么办?
页: [1] 2 3 4
查看完整版本: anychat 只进行语言聊天的 问题