package xmpp.client.service.jingle;
import java.util.ArrayList;
import java.util.List;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smackx.jingle.JingleManager;
import org.jivesoftware.smackx.jingle.JingleSession;
import org.jivesoftware.smackx.jingle.JingleSessionRequest;
import org.jivesoftware.smackx.jingle.listeners.JingleListener;
import org.jivesoftware.smackx.jingle.listeners.JingleSessionRequestListener;
import org.jivesoftware.smackx.jingle.media.JingleMediaManager;
import org.jivesoftware.smackx.jingle.nat.BasicTransportManager;
import xmpp.client.service.ConnectionProvider;
import android.util.Log;
public class JingleService implements JingleSessionRequestListener,
JingleListener {
JingleManager mJingleManager;
private static final String TAG = "JingleService";
public JingleService(ConnectionProvider cp) {
final List<JingleMediaManager> jingleMediaManagers = new ArrayList<JingleMediaManager>();
jingleMediaManagers.add(new AndroidJingleMediaManager(
new BasicTransportManager()));
mJingleManager = new JingleManager(cp.getConnection(),
jingleMediaManagers);
mJingleManager.addJingleSessionRequestListener(this);
startCall("echo@bot.talk.google.com/bot");
}
@Override
public void sessionRequested(JingleSessionRequest request) {
Log.d(TAG, "sessionRequested" + request);
try {
final JingleSession session = request.accept();
session.addListener(this);
session.startIncoming();
} catch (final XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void startCall(String jid) {
Log.d(TAG, "startCall" + jid);
try {
final JingleSession session = mJingleManager
.createOutgoingJingleSession(jid);
session.addListener(this);
session.startOutgoing();
} catch (final XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}