2017-02-17 90 views
0

我正在尝试整合QuickBlox进行音频和视频通话。 我遵循教程,但它不起作用。 为了使接收传入的WebRTC呼叫的需要增加信令管理,但方法Android QuickBlox通话

public void signalingCreated(QBSignaling qbSignaling, boolean createdLocally) 

不调用的能力。哪里不对? jniLibs和权限添加 编译:添加依赖

compile 'com.quickblox:quickblox-android-sdk-videochat-webrtc:3.3.0' 

下面的代码:

private EditText mUsername; 
private EditText mPassword; 
private Button mSignUp; 
private Button mSignIn; 
private Button mCall; 
private QBUser mUser; 


QBRTCClient client; 
QBSessionManager sessionManager; 
QBChatService chatService; 
QBRTCSession qbrtcSession; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    QBSettings.getInstance().init(getApplicationContext(), APP_ID, AUTH_KEY, AUTH_SECRET); 
    QBSettings.getInstance().setAccountKey(ACCOUNT_KEY); 

    mUsername = (EditText) findViewById(R.id.username); 
    mPassword = (EditText) findViewById(R.id.password); 
    mSignIn = (Button) findViewById(R.id.sign_in); 
    mSignUp = (Button) findViewById(R.id.sign_up); 
    mCall = (Button) findViewById(R.id.button_call); 
    client = QBRTCClient.getInstance(MainActivity.this); 

    QBChatService.setDebugEnabled(true); 
    QBChatService.setDefaultAutoSendPresenceInterval(60); 
    chatService = QBChatService.getInstance(); 

    mSignIn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      mUser = new QBUser(mUsername.getText().toString(), mPassword.getText().toString()); 
      // QBUsers.signIn(mUser).performAsync(new QBEntityCallback<QBUser>() { 
      QBAuth.createSession(mUser).performAsync(new QBEntityCallback<QBSession>() { 
       @Override 
       public void onSuccess(QBSession qbUser, Bundle bundle) { 
        Log.d(TAG, "My user: " + mUser); 
        Log.d(TAG, "received user: " + qbUser); 
        Log.d(TAG, "user logged in"); 
        mUser.setId(qbUser.getUserId()); 

        chatService.login(mUser, new QBEntityCallback<QBUser>() { 
         @Override 
         public void onSuccess(QBUser qbUser, Bundle bundle) { 
          Log.d(TAG, "user logged in to the chat"); 
          client.prepareToProcessCalls(); 
          chatService.getVideoChatWebRTCSignalingManager().addSignalingManagerListener(new QBVideoChatSignalingManagerListener() { 
           @Override 
           public void signalingCreated(QBSignaling qbSignaling, boolean createdLocally) { 
            Log.d(TAG, "created locally: " + createdLocally); 
            if (!createdLocally) { 
             client.addSignaling((QBWebRTCSignaling) qbSignaling); 
            } 
           } 
          }); 

这行永远不会调用:

Log.d(TAG, "created locally: " + createdLocally); 

回答

1

方法signalingCreated()被调用时,你犯了一个打电话或当你接到电话。你可以看看video sample它可以正常工作。顺便说一句,你不需要手动管理会话,也不需要调用createSession方法。只需使用QBUsers.signIn()。 Documentation

+0

我已经找到解决方案,但无论如何感谢。关于QBUser你甚至不应该登录,足以用ID和密码创建新的QBUser –