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();
}
}
}
你好,请将两端的日志发过来分析,在sd卡根目录下:BRAnyChatCore.log,谢谢 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
你好,第二个日志显示音频并没有初始化,没有输出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是否声音正常? 两端接通后,有时听到语音有时听不到语音
请问听不到语音,是发生在什么情况下? 跳转到如下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
}
}
对了我问下,我那个语音聊天的activity界面代码逻辑有问题吗? 本帖最后由 佰锐科技-邵光清 于 2016-11-11 15:03 编辑
Luyh 发表于 2016-11-11 14:42
对了我问下,我那个语音聊天的activity界面代码逻辑有问题吗?
原来两端的程序是不同的。打开本地音频和请求对方的音频,都需要在进入房间之后,即OnAnyChatEnterRoomMessage语音聊天界面应该进入房间了,你试试在initView中,在oncreat中也可以;anychat.UserSpeakControl(userID, 1);
anychat.UserSpeakControl(-1, 1); 您对比一下发上来的两份代码,其中一个是OK的,就按照这个来改改。 我现在测试了一下,就是在进行语音聊天的时候,语音建立连接时时间比较长。这个该怎么办?