2017-02-17 4 views
0

Я пытаюсь интегрировать QuickBlox для аудио и видеозвонков. Я следил за учебником, но он не работает. Чтобы включить возможность приема входящих вызовов WebRTC нужно добавить сигнализации менеджер, но методAndroid QuickBlox call

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, все работает нормально. BTW, вам не нужно управлять сеансом вручную, и нет необходимости вызывать методы createSession. Просто используйте QBUsers.signIn(). Documentation.

+0

Я уже нашел решение, но спасибо в любом случае. О QBUser вы не должны даже подписываться, достаточно создать новый QBUser с идентификатором и паролем –