Autore Topic: Comprensione Tutorial per utilizzo SIP  (Letto 806 volte)

Offline lordwhiskey

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT-S5830
  • Sistema operativo:
    Ubuntu 11.10, OsX 10.6
Comprensione Tutorial per utilizzo SIP
« il: 01 Novembre 2011, 21:04:05 CET »
0
Ciao a tutti,

vi scrivo per chiedervi informazioni riguardo una cosa che non capisco in merito ad un tutorial messo a disposizione dello stesso sito di developer.android.com

Il codice d'esempio in questione è quello del demo "SipDemo - SIP Demo" il quale dovrebbe mostrare per l'appunto come poter comunicare via SIP con un sw tipo walkietalkie.

Tra le varie componenti, il progetto è composto da un broadcast receiver che gestisce la ricezione delle chiamate.

Questo è il codice del broadcast receiver

Codice (Java): [Seleziona]
public class IncomingCallReceiver extends BroadcastReceiver {
    /**
     * Processes the incoming call, answers it, and hands it over to the
     * WalkieTalkieActivity.
     * @param context The context under which the receiver is running.
     * @param intent The intent being received.
     */

    @Override
    public void onReceive(Context context, Intent intent) {
        SipAudioCall incomingCall = null;
        try {

            SipAudioCall.Listener listener = new SipAudioCall.Listener() {
                @Override
                public void onRinging(SipAudioCall call, SipProfile caller) {
                    try {
                        call.answerCall(30);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            };

            WalkieTalkieActivity wtActivity = (WalkieTalkieActivity) context;

            incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
            incomingCall.answerCall(30);
            incomingCall.startAudio();
            incomingCall.setSpeakerMode(true);
            if(incomingCall.isMuted()) {
                incomingCall.toggleMute();
            }

            wtActivity.call = incomingCall;

            wtActivity.updateStatus(incomingCall);

        } catch (Exception e) {
            if (incomingCall != null) {
                incomingCall.close();
            }
        }
    }

}

Quello che non capisco è perché viene definita e a cosa serve un oggetto tipo SipAudioCall.Listener listener in cui si implementa il metodo onRinging().

Sul sito developer.android.com dice la cosa seguente in merito al metodo TakeAudioCall

Citazione
Before the call is returned, the listener will receive a onRinging(SipAudioCall, SipProfile) callback.

Il fatto è che, nel codice sorgente, a seguito della definizione del listener vengono effettuate le seguenti istruzioni

Codice (Java): [Seleziona]
incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
            incomingCall.answerCall(30);

Ovvero chiama un'altra volta il metodo answerCall(), però non del listener ma quello associato all'oggetto incomingCall.

Quindi non riesco a capire a cosa serva la funzione di callback.

Spero di aver messo il topic nel posto giusto  :-)
Spero anche di essere stato chiaro ...
Grazie mille

Offline paul78

  • Utente normale
  • ***
  • Post: 359
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:Comprensione Tutorial per utilizzo SIP
« Risposta #1 il: 29 Agosto 2014, 12:31:07 CEST »
0
stesso problema anch'io..se hai risolto mi potresti dare un aiuto?
tutti possiamo programmare...basta volerlo!!!