Как мне получить дочерние элементы конференц-связи Android?

#android

#Android

Вопрос:

Я создаю пользовательский интерфейс вызова Android, и мне нужно получить дочерние объекты вызова конференц-связи для управления объединенными вызовами.

Вот код, который обрабатывает новый вызов. Я предположил, что если добавленный новый вызов представляет собой конференц-вызов, то я должен иметь возможность получать доступ к этим дочерним элементам и отбрасывать отдельные вызовы, разделять отдельные вызовы, регистрировать обратные вызовы для каждого дочернего вызова и т.д.

 public void onCallAdded(Call call) {
    Log.i("MyCallService", "Call state: "   call.getState());

    if(call.getDetails().hasProperty(Call.Details.PROPERTY_CONFERENCE)) {
            Log.i("MyCallService", "Conference call entered with "   call.getChildren().size()
                      " participants.");
               return;
        }
    //...
}
  

По какой-то причине, независимо от того, сколько вызовов было объединено, call.getChildren().size() всегда zero . Это проблема с Android или мне нужно каким-то другим способом получить доступ к дочерним элементам конференц-связи? Буду признателен за любую помощь!

Ответ №1:

Только что ответил на мой собственный вопрос. Если кто-нибудь снова столкнется с этой невероятно неясной проблемой, проблема в том, что Android требуется секунда, чтобы фактически добавить вызовы в качестве дочерних элементов, даже если новый конференц-вызов регистрируется немедленно. Если вы создаете обратный вызов с

 public void onChildrenChanged(Call call, List<Call> children) {
    super.onChildrenChanged(call, children);
}
  

вы увидите, что эти новые дочерние элементы добавляются, и затем сможете запустить .getChildren() этот объект конференц-вызова.