am 0858806f: Add Wifi High Perf. mode during a call.

Merge commit '0858806ffcb9ff34725abb79106aa1de27d1bf60' into gingerbread-plus-aosp

* commit '0858806ffcb9ff34725abb79106aa1de27d1bf60':
  Add Wifi High Perf. mode during a call.
This commit is contained in:
Chung-yih Wang
2010-08-26 00:24:17 -07:00
committed by Android Git Automerger

View File

@@ -36,6 +36,7 @@ import android.net.sip.SipManager;
import android.net.sip.SipProfile; import android.net.sip.SipProfile;
import android.net.sip.SipSessionAdapter; import android.net.sip.SipSessionAdapter;
import android.net.sip.SipSessionState; import android.net.sip.SipSessionState;
import android.net.wifi.WifiManager;
import android.os.Message; import android.os.Message;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.Vibrator; import android.os.Vibrator;
@@ -84,10 +85,13 @@ public class SipAudioCallImpl extends SipSessionAdapter
private ToneGenerator mRingbackTone; private ToneGenerator mRingbackTone;
private SipProfile mPendingCallRequest; private SipProfile mPendingCallRequest;
private WifiManager mWm;
private WifiManager.WifiLock mWifiHighPerfLock;
public SipAudioCallImpl(Context context, SipProfile localProfile) { public SipAudioCallImpl(Context context, SipProfile localProfile) {
mContext = context; mContext = context;
mLocalProfile = localProfile; mLocalProfile = localProfile;
mWm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
} }
public void setListener(SipAudioCall.Listener listener) { public void setListener(SipAudioCall.Listener listener) {
@@ -422,6 +426,28 @@ public class SipAudioCallImpl extends SipSessionAdapter
} }
} }
private void grabWifiHighPerfLock() {
if (mWifiHighPerfLock == null) {
Log.v(TAG, "acquire wifi high perf lock");
mWifiHighPerfLock = ((WifiManager)
mContext.getSystemService(Context.WIFI_SERVICE))
.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, TAG);
mWifiHighPerfLock.acquire();
}
}
private void releaseWifiHighPerfLock() {
if (mWifiHighPerfLock != null) {
Log.v(TAG, "release wifi high perf lock");
mWifiHighPerfLock.release();
mWifiHighPerfLock = null;
}
}
private boolean isWifiOn() {
return (mWm.getConnectionInfo().getBSSID() == null) ? false : true;
}
private SessionDescription createContinueSessionDescription() { private SessionDescription createContinueSessionDescription() {
return createSdpBuilder(true, mCodec).build(); return createSdpBuilder(true, mCodec).build();
} }
@@ -556,7 +582,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
private void startCall(SdpSessionDescription peerSd) { private void startCall(SdpSessionDescription peerSd) {
stopCall(DONT_RELEASE_SOCKET); stopCall(DONT_RELEASE_SOCKET);
if (isWifiOn()) grabWifiHighPerfLock();
mPeerSd = peerSd; mPeerSd = peerSd;
String peerMediaAddress = peerSd.getPeerMediaAddress(AUDIO); String peerMediaAddress = peerSd.getPeerMediaAddress(AUDIO);
// TODO: handle multiple media fields // TODO: handle multiple media fields
@@ -623,6 +649,7 @@ public class SipAudioCallImpl extends SipSessionAdapter
private void stopCall(boolean releaseSocket) { private void stopCall(boolean releaseSocket) {
Log.d(TAG, "stop audiocall"); Log.d(TAG, "stop audiocall");
releaseWifiHighPerfLock();
if (mAudioStream != null) { if (mAudioStream != null) {
mAudioStream.join(null); mAudioStream.join(null);