summaryrefslogtreecommitdiffstats
path: root/voip/java/android
diff options
context:
space:
mode:
authorWink Saville <wink@google.com>2013-01-22 16:01:58 -0800
committerWink Saville <wink@google.com>2013-01-22 16:01:58 -0800
commit91e8659abaa389d939eebe3e78b05b955ae48042 (patch)
tree5cb4fdddf44416ff9fc34e4bf7cc8fd92d325c89 /voip/java/android
parent0d7ddce1784f106077484fee60f0565bc5b979f0 (diff)
downloadframeworks_base-91e8659abaa389d939eebe3e78b05b955ae48042.zip
frameworks_base-91e8659abaa389d939eebe3e78b05b955ae48042.tar.gz
frameworks_base-91e8659abaa389d939eebe3e78b05b955ae48042.tar.bz2
Add debug and some cleanup
Change-Id: I866676a1ec4a338dcfe089cbf0483e5e546ded85
Diffstat (limited to 'voip/java/android')
-rw-r--r--voip/java/android/net/sip/SipAudioCall.java95
-rw-r--r--voip/java/android/net/sip/SipManager.java5
-rw-r--r--voip/java/android/net/sip/SipSession.java45
3 files changed, 89 insertions, 56 deletions
diff --git a/voip/java/android/net/sip/SipAudioCall.java b/voip/java/android/net/sip/SipAudioCall.java
index 1d67055..ea943e9 100644
--- a/voip/java/android/net/sip/SipAudioCall.java
+++ b/voip/java/android/net/sip/SipAudioCall.java
@@ -25,17 +25,11 @@ import android.net.rtp.RtpStream;
import android.net.sip.SimpleSessionDescription.Media;
import android.net.wifi.WifiManager;
import android.os.Message;
-import android.os.RemoteException;
+import android.telephony.Rlog;
import android.text.TextUtils;
-import android.util.Log;
-
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
/**
* Handles an Internet audio call over SIP. You can instantiate this class with {@link SipManager},
@@ -60,7 +54,8 @@ import java.util.Map;
* </div>
*/
public class SipAudioCall {
- private static final String TAG = SipAudioCall.class.getSimpleName();
+ private static final String LOG_TAG = SipAudioCall.class.getSimpleName();
+ private static final boolean DBG = true;
private static final boolean RELEASE_SOCKET = true;
private static final boolean DONT_RELEASE_SOCKET = false;
private static final int SESSION_TIMEOUT = 5; // in seconds
@@ -191,7 +186,6 @@ public class SipAudioCall {
private boolean mMuted = false;
private boolean mHold = false;
- private SipProfile mPendingCallRequest;
private WifiManager mWm;
private WifiManager.WifiLock mWifiHighPerfLock;
@@ -261,7 +255,7 @@ public class SipAudioCall {
}
}
} catch (Throwable t) {
- Log.e(TAG, "setListener()", t);
+ loge("setListener()", t);
}
}
@@ -371,7 +365,7 @@ public class SipAudioCall {
mAudioStream = new AudioStream(InetAddress.getByName(
getLocalIp()));
} catch (Throwable t) {
- Log.i(TAG, "transferToNewSession(): " + t);
+ loge("transferToNewSession():", t);
}
}
if (origin != null) origin.endCall();
@@ -382,26 +376,26 @@ public class SipAudioCall {
return new SipSession.Listener() {
@Override
public void onCalling(SipSession session) {
- Log.d(TAG, "calling... " + session);
+ if (DBG) log("onCalling: session=" + session);
Listener listener = mListener;
if (listener != null) {
try {
listener.onCalling(SipAudioCall.this);
} catch (Throwable t) {
- Log.i(TAG, "onCalling(): " + t);
+ loge("onCalling():", t);
}
}
}
@Override
public void onRingingBack(SipSession session) {
- Log.d(TAG, "sip call ringing back: " + session);
+ if (DBG) log("onRingingBackk: " + session);
Listener listener = mListener;
if (listener != null) {
try {
listener.onRingingBack(SipAudioCall.this);
} catch (Throwable t) {
- Log.i(TAG, "onRingingBack(): " + t);
+ loge("onRingingBack():", t);
}
}
}
@@ -424,7 +418,7 @@ public class SipAudioCall {
String answer = createAnswer(sessionDescription).encode();
mSipSession.answerCall(answer, SESSION_TIMEOUT);
} catch (Throwable e) {
- Log.e(TAG, "onRinging()", e);
+ loge("onRinging():", e);
session.endCall();
}
}
@@ -434,7 +428,7 @@ public class SipAudioCall {
public void onCallEstablished(SipSession session,
String sessionDescription) {
mPeerSd = sessionDescription;
- Log.v(TAG, "onCallEstablished()" + mPeerSd);
+ if (DBG) log("onCallEstablished(): " + mPeerSd);
// TODO: how to notify the UI that the remote party is changed
if ((mTransferringSession != null)
@@ -452,14 +446,14 @@ public class SipAudioCall {
listener.onCallEstablished(SipAudioCall.this);
}
} catch (Throwable t) {
- Log.i(TAG, "onCallEstablished(): " + t);
+ loge("onCallEstablished(): ", t);
}
}
}
@Override
public void onCallEnded(SipSession session) {
- Log.d(TAG, "sip call ended: " + session + " mSipSession:" + mSipSession);
+ if (DBG) log("onCallEnded: " + session + " mSipSession:" + mSipSession);
// reset the trasnferring session if it is the one.
if (session == mTransferringSession) {
mTransferringSession = null;
@@ -475,7 +469,7 @@ public class SipAudioCall {
try {
listener.onCallEnded(SipAudioCall.this);
} catch (Throwable t) {
- Log.i(TAG, "onCallEnded(): " + t);
+ loge("onCallEnded(): ", t);
}
}
close();
@@ -483,13 +477,13 @@ public class SipAudioCall {
@Override
public void onCallBusy(SipSession session) {
- Log.d(TAG, "sip call busy: " + session);
+ if (DBG) log("onCallBusy: " + session);
Listener listener = mListener;
if (listener != null) {
try {
listener.onCallBusy(SipAudioCall.this);
} catch (Throwable t) {
- Log.i(TAG, "onCallBusy(): " + t);
+ loge("onCallBusy(): ", t);
}
}
close(false);
@@ -498,7 +492,7 @@ public class SipAudioCall {
@Override
public void onCallChangeFailed(SipSession session, int errorCode,
String message) {
- Log.d(TAG, "sip call change failed: " + message);
+ if (DBG) log("onCallChangedFailed: " + message);
mErrorCode = errorCode;
mErrorMessage = message;
Listener listener = mListener;
@@ -507,7 +501,7 @@ public class SipAudioCall {
listener.onError(SipAudioCall.this, mErrorCode,
message);
} catch (Throwable t) {
- Log.i(TAG, "onCallBusy(): " + t);
+ loge("onCallBusy():", t);
}
}
}
@@ -542,8 +536,8 @@ public class SipAudioCall {
@Override
public void onCallTransferring(SipSession newSession,
String sessionDescription) {
- Log.v(TAG, "onCallTransferring mSipSession:"
- + mSipSession + " newSession:" + newSession);
+ if (DBG) log("onCallTransferring: mSipSession="
+ + mSipSession + " newSession=" + newSession);
mTransferringSession = newSession;
try {
if (sessionDescription == null) {
@@ -554,7 +548,7 @@ public class SipAudioCall {
newSession.answerCall(answer, SESSION_TIMEOUT);
}
} catch (Throwable e) {
- Log.e(TAG, "onCallTransferring()", e);
+ loge("onCallTransferring()", e);
newSession.endCall();
}
}
@@ -562,7 +556,7 @@ public class SipAudioCall {
}
private void onError(int errorCode, String message) {
- Log.d(TAG, "sip session error: "
+ if (DBG) log("onError: "
+ SipErrorCode.toString(errorCode) + ": " + message);
mErrorCode = errorCode;
mErrorMessage = message;
@@ -571,7 +565,7 @@ public class SipAudioCall {
try {
listener.onError(this, errorCode, message);
} catch (Throwable t) {
- Log.i(TAG, "onError(): " + t);
+ loge("onError():", t);
}
}
synchronized (this) {
@@ -600,11 +594,11 @@ public class SipAudioCall {
synchronized (this) {
mSipSession = session;
mPeerSd = sessionDescription;
- Log.v(TAG, "attachCall()" + mPeerSd);
+ if (DBG) log("attachCall(): " + mPeerSd);
try {
session.setListener(createListener());
} catch (Throwable e) {
- Log.e(TAG, "attachCall()", e);
+ loge("attachCall()", e);
throwSipException(e);
}
}
@@ -627,6 +621,7 @@ public class SipAudioCall {
*/
public void makeCall(SipProfile peerProfile, SipSession sipSession,
int timeout) throws SipException {
+ if (DBG) log("makeCall: " + peerProfile + " session=" + sipSession + " timeout=" + timeout);
if (!SipManager.isVoipSupported(mContext)) {
throw new SipException("VOIP API is not supported");
}
@@ -640,6 +635,7 @@ public class SipAudioCall {
sipSession.makeCall(peerProfile, createOffer().encode(),
timeout);
} catch (IOException e) {
+ loge("makeCall:", e);
throw new SipException("makeCall()", e);
}
}
@@ -650,6 +646,7 @@ public class SipAudioCall {
* @throws SipException if the SIP service fails to end the call
*/
public void endCall() throws SipException {
+ if (DBG) log("endCall: mSipSession" + mSipSession);
synchronized (this) {
stopCall(RELEASE_SOCKET);
mInCall = false;
@@ -672,9 +669,11 @@ public class SipAudioCall {
* @throws SipException if the SIP service fails to hold the call
*/
public void holdCall(int timeout) throws SipException {
+ if (DBG) log("holdCall: mSipSession" + mSipSession + " timeout=" + timeout);
synchronized (this) {
if (mHold) return;
if (mSipSession == null) {
+ loge("holdCall:");
throw new SipException("Not in a call to hold call");
}
mSipSession.changeCall(createHoldOffer().encode(), timeout);
@@ -695,6 +694,7 @@ public class SipAudioCall {
* @throws SipException if the SIP service fails to answer the call
*/
public void answerCall(int timeout) throws SipException {
+ if (DBG) log("answerCall: mSipSession" + mSipSession + " timeout=" + timeout);
synchronized (this) {
if (mSipSession == null) {
throw new SipException("No call to answer");
@@ -704,6 +704,7 @@ public class SipAudioCall {
getLocalIp()));
mSipSession.answerCall(createAnswer(mPeerSd).encode(), timeout);
} catch (IOException e) {
+ loge("answerCall:", e);
throw new SipException("answerCall()", e);
}
}
@@ -722,6 +723,7 @@ public class SipAudioCall {
* @throws SipException if the SIP service fails to unhold the call
*/
public void continueCall(int timeout) throws SipException {
+ if (DBG) log("continueCall: mSipSession" + mSipSession + " timeout=" + timeout);
synchronized (this) {
if (!mHold) return;
mSipSession.changeCall(createContinueOffer().encode(), timeout);
@@ -740,6 +742,7 @@ public class SipAudioCall {
media.setRtpPayload(codec.type, codec.rtpmap, codec.fmtp);
}
media.setRtpPayload(127, "telephone-event/8000", "0-15");
+ if (DBG) log("createOffer: offer=" + offer);
return offer;
}
@@ -798,18 +801,22 @@ public class SipAudioCall {
}
}
if (codec == null) {
+ loge("createAnswer: no suitable codes");
throw new IllegalStateException("Reject SDP: no suitable codecs");
}
+ if (DBG) log("createAnswer: answer=" + answer);
return answer;
}
private SimpleSessionDescription createHoldOffer() {
SimpleSessionDescription offer = createContinueOffer();
offer.setAttribute("sendonly", "");
+ if (DBG) log("createHoldOffer: offer=" + offer);
return offer;
}
private SimpleSessionDescription createContinueOffer() {
+ if (DBG) log("createContinueOffer");
SimpleSessionDescription offer =
new SimpleSessionDescription(mSessionId, getLocalIp());
Media media = offer.newMedia(
@@ -825,17 +832,17 @@ public class SipAudioCall {
private void grabWifiHighPerfLock() {
if (mWifiHighPerfLock == null) {
- Log.v(TAG, "acquire wifi high perf lock");
+ if (DBG) log("grabWifiHighPerfLock:");
mWifiHighPerfLock = ((WifiManager)
mContext.getSystemService(Context.WIFI_SERVICE))
- .createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, TAG);
+ .createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, LOG_TAG);
mWifiHighPerfLock.acquire();
}
}
private void releaseWifiHighPerfLock() {
if (mWifiHighPerfLock != null) {
- Log.v(TAG, "release wifi high perf lock");
+ if (DBG) log("releaseWifiHighPerfLock:");
mWifiHighPerfLock.release();
mWifiHighPerfLock = null;
}
@@ -912,7 +919,7 @@ public class SipAudioCall {
AudioGroup audioGroup = getAudioGroup();
if ((audioGroup != null) && (mSipSession != null)
&& (SipSession.State.IN_CALL == getState())) {
- Log.v(TAG, "send DTMF: " + code);
+ if (DBG) log("sendDtmf: code=" + code + " result=" + result);
audioGroup.sendDtmf(code);
}
if (result != null) result.sendToTarget();
@@ -971,6 +978,7 @@ public class SipAudioCall {
*/
public void setAudioGroup(AudioGroup group) {
synchronized (this) {
+ if (DBG) log("setAudioGroup: group=" + group);
if ((mAudioStream != null) && (mAudioStream.getGroup() != null)) {
mAudioStream.join(group);
}
@@ -997,8 +1005,8 @@ public class SipAudioCall {
}
private synchronized void startAudioInternal() throws UnknownHostException {
+ if (DBG) loge("startAudioInternal: mPeerSd=" + mPeerSd);
if (mPeerSd == null) {
- Log.v(TAG, "startAudioInternal() mPeerSd = null");
throw new IllegalStateException("mPeerSd = null");
}
@@ -1082,6 +1090,7 @@ public class SipAudioCall {
// set audio group mode based on current audio configuration
private void setAudioGroupMode() {
AudioGroup audioGroup = getAudioGroup();
+ if (DBG) log("setAudioGroupMode: audioGroup=" + audioGroup);
if (audioGroup != null) {
if (mHold) {
audioGroup.setMode(AudioGroup.MODE_ON_HOLD);
@@ -1096,7 +1105,7 @@ public class SipAudioCall {
}
private void stopCall(boolean releaseSocket) {
- Log.d(TAG, "stop audiocall");
+ if (DBG) log("stopCall: releaseSocket=" + releaseSocket);
releaseWifiHighPerfLock();
if (mAudioStream != null) {
mAudioStream.join(null);
@@ -1120,7 +1129,15 @@ public class SipAudioCall {
}
}
- private SipProfile getPeerProfile(SipSession session) {
- return session.getPeerProfile();
+ private void log(String s) {
+ Rlog.d(LOG_TAG, s);
+ }
+
+ private void loge(String s) {
+ Rlog.e(LOG_TAG, s);
+ }
+
+ private void loge(String s, Throwable t) {
+ Rlog.e(LOG_TAG, s, t);
}
}
diff --git a/voip/java/android/net/sip/SipManager.java b/voip/java/android/net/sip/SipManager.java
index 74c3672..a94232a 100644
--- a/voip/java/android/net/sip/SipManager.java
+++ b/voip/java/android/net/sip/SipManager.java
@@ -21,10 +21,9 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.IBinder;
-import android.os.Looper;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.util.Log;
+import android.telephony.Rlog;
import java.text.ParseException;
@@ -591,7 +590,7 @@ public class SipManager {
: session.getLocalProfile().getUriString());
} catch (Throwable e) {
// SipService died? SIP stack died?
- Log.w(TAG, "getUri(): " + e);
+ Rlog.e(TAG, "getUri(): ", e);
return null;
}
}
diff --git a/voip/java/android/net/sip/SipSession.java b/voip/java/android/net/sip/SipSession.java
index e03cf9f..edbc66f 100644
--- a/voip/java/android/net/sip/SipSession.java
+++ b/voip/java/android/net/sip/SipSession.java
@@ -17,7 +17,7 @@
package android.net.sip;
import android.os.RemoteException;
-import android.util.Log;
+import android.telephony.Rlog;
/**
* Represents a SIP session that is associated with a SIP dialog or a standalone
@@ -242,7 +242,7 @@ public final class SipSession {
try {
realSession.setListener(createListener());
} catch (RemoteException e) {
- Log.e(TAG, "SipSession.setListener(): " + e);
+ loge("SipSession.setListener:", e);
}
}
}
@@ -261,7 +261,7 @@ public final class SipSession {
try {
return mSession.getLocalIp();
} catch (RemoteException e) {
- Log.e(TAG, "getLocalIp(): " + e);
+ loge("getLocalIp:", e);
return "127.0.0.1";
}
}
@@ -275,7 +275,7 @@ public final class SipSession {
try {
return mSession.getLocalProfile();
} catch (RemoteException e) {
- Log.e(TAG, "getLocalProfile(): " + e);
+ loge("getLocalProfile:", e);
return null;
}
}
@@ -290,7 +290,7 @@ public final class SipSession {
try {
return mSession.getPeerProfile();
} catch (RemoteException e) {
- Log.e(TAG, "getPeerProfile(): " + e);
+ loge("getPeerProfile:", e);
return null;
}
}
@@ -305,7 +305,7 @@ public final class SipSession {
try {
return mSession.getState();
} catch (RemoteException e) {
- Log.e(TAG, "getState(): " + e);
+ loge("getState:", e);
return State.NOT_DEFINED;
}
}
@@ -319,7 +319,7 @@ public final class SipSession {
try {
return mSession.isInCall();
} catch (RemoteException e) {
- Log.e(TAG, "isInCall(): " + e);
+ loge("isInCall:", e);
return false;
}
}
@@ -333,7 +333,7 @@ public final class SipSession {
try {
return mSession.getCallId();
} catch (RemoteException e) {
- Log.e(TAG, "getCallId(): " + e);
+ loge("getCallId:", e);
return null;
}
}
@@ -364,7 +364,7 @@ public final class SipSession {
try {
mSession.register(duration);
} catch (RemoteException e) {
- Log.e(TAG, "register(): " + e);
+ loge("register:", e);
}
}
@@ -381,7 +381,7 @@ public final class SipSession {
try {
mSession.unregister();
} catch (RemoteException e) {
- Log.e(TAG, "unregister(): " + e);
+ loge("unregister:", e);
}
}
@@ -402,7 +402,7 @@ public final class SipSession {
try {
mSession.makeCall(callee, sessionDescription, timeout);
} catch (RemoteException e) {
- Log.e(TAG, "makeCall(): " + e);
+ loge("makeCall:", e);
}
}
@@ -420,7 +420,7 @@ public final class SipSession {
try {
mSession.answerCall(sessionDescription, timeout);
} catch (RemoteException e) {
- Log.e(TAG, "answerCall(): " + e);
+ loge("answerCall:", e);
}
}
@@ -436,7 +436,7 @@ public final class SipSession {
try {
mSession.endCall();
} catch (RemoteException e) {
- Log.e(TAG, "endCall(): " + e);
+ loge("endCall:", e);
}
}
@@ -453,7 +453,7 @@ public final class SipSession {
try {
mSession.changeCall(sessionDescription, timeout);
} catch (RemoteException e) {
- Log.e(TAG, "changeCall(): " + e);
+ loge("changeCall:", e);
}
}
@@ -463,12 +463,14 @@ public final class SipSession {
private ISipSessionListener createListener() {
return new ISipSessionListener.Stub() {
+ @Override
public void onCalling(ISipSession session) {
if (mListener != null) {
mListener.onCalling(SipSession.this);
}
}
+ @Override
public void onRinging(ISipSession session, SipProfile caller,
String sessionDescription) {
if (mListener != null) {
@@ -477,12 +479,14 @@ public final class SipSession {
}
}
+ @Override
public void onRingingBack(ISipSession session) {
if (mListener != null) {
mListener.onRingingBack(SipSession.this);
}
}
+ @Override
public void onCallEstablished(ISipSession session,
String sessionDescription) {
if (mListener != null) {
@@ -491,18 +495,21 @@ public final class SipSession {
}
}
+ @Override
public void onCallEnded(ISipSession session) {
if (mListener != null) {
mListener.onCallEnded(SipSession.this);
}
}
+ @Override
public void onCallBusy(ISipSession session) {
if (mListener != null) {
mListener.onCallBusy(SipSession.this);
}
}
+ @Override
public void onCallTransferring(ISipSession session,
String sessionDescription) {
if (mListener != null) {
@@ -513,6 +520,7 @@ public final class SipSession {
}
}
+ @Override
public void onCallChangeFailed(ISipSession session, int errorCode,
String message) {
if (mListener != null) {
@@ -521,24 +529,28 @@ public final class SipSession {
}
}
+ @Override
public void onError(ISipSession session, int errorCode, String message) {
if (mListener != null) {
mListener.onError(SipSession.this, errorCode, message);
}
}
+ @Override
public void onRegistering(ISipSession session) {
if (mListener != null) {
mListener.onRegistering(SipSession.this);
}
}
+ @Override
public void onRegistrationDone(ISipSession session, int duration) {
if (mListener != null) {
mListener.onRegistrationDone(SipSession.this, duration);
}
}
+ @Override
public void onRegistrationFailed(ISipSession session, int errorCode,
String message) {
if (mListener != null) {
@@ -547,6 +559,7 @@ public final class SipSession {
}
}
+ @Override
public void onRegistrationTimeout(ISipSession session) {
if (mListener != null) {
mListener.onRegistrationTimeout(SipSession.this);
@@ -554,4 +567,8 @@ public final class SipSession {
}
};
}
+
+ private void loge(String s, Throwable t) {
+ Rlog.e(TAG, s, t);
+ }
}