am 45a0b90a: Merge "Enable remote submix for wifi display." into jb-mr1-dev

* commit '45a0b90a7ed7ebd8219a7a6d7b9e64c55183523a':
  Enable remote submix for wifi display.
This commit is contained in:
Jeff Brown
2012-09-13 15:34:22 -07:00
committed by Android Git Automerger

View File

@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.hardware.display.WifiDisplay; import android.hardware.display.WifiDisplay;
import android.media.AudioManager;
import android.media.RemoteDisplay; import android.media.RemoteDisplay;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.wifi.p2p.WifiP2pConfig; import android.net.wifi.p2p.WifiP2pConfig;
@@ -74,12 +75,20 @@ final class WifiDisplayController implements DumpUtils.Dump {
private static final int CONNECT_MAX_RETRIES = 3; private static final int CONNECT_MAX_RETRIES = 3;
private static final int CONNECT_RETRY_DELAY_MILLIS = 500; private static final int CONNECT_RETRY_DELAY_MILLIS = 500;
// A unique token to identify the remote submix that is managed by Wifi display.
// It must match what the media server uses when it starts recording the submix
// for transmission. We use 0 although the actual value is currently ignored.
private static final int REMOTE_SUBMIX_ADDRESS = 0;
private final Context mContext; private final Context mContext;
private final Handler mHandler; private final Handler mHandler;
private final Listener mListener; private final Listener mListener;
private final WifiP2pManager mWifiP2pManager; private final WifiP2pManager mWifiP2pManager;
private final Channel mWifiP2pChannel; private final Channel mWifiP2pChannel;
private final AudioManager mAudioManager;
private boolean mWifiP2pEnabled; private boolean mWifiP2pEnabled;
private boolean mWfdEnabled; private boolean mWfdEnabled;
private boolean mWfdEnabling; private boolean mWfdEnabling;
@@ -128,6 +137,8 @@ final class WifiDisplayController implements DumpUtils.Dump {
mWifiP2pManager = (WifiP2pManager)context.getSystemService(Context.WIFI_P2P_SERVICE); mWifiP2pManager = (WifiP2pManager)context.getSystemService(Context.WIFI_P2P_SERVICE);
mWifiP2pChannel = mWifiP2pManager.initialize(context, handler.getLooper(), null); mWifiP2pChannel = mWifiP2pManager.initialize(context, handler.getLooper(), null);
mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
IntentFilter intentFilter = new IntentFilter(); IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION); intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION); intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
@@ -379,6 +390,10 @@ final class WifiDisplayController implements DumpUtils.Dump {
Slog.i(TAG, "Stopped listening for RTSP connection on " + mRemoteDisplayInterface Slog.i(TAG, "Stopped listening for RTSP connection on " + mRemoteDisplayInterface
+ " from Wifi display: " + mConnectedDevice.deviceName); + " from Wifi display: " + mConnectedDevice.deviceName);
if (mRemoteDisplayConnected) {
mAudioManager.setRemoteSubmixOn(false, REMOTE_SUBMIX_ADDRESS);
}
mRemoteDisplay.dispose(); mRemoteDisplay.dispose();
mRemoteDisplay = null; mRemoteDisplay = null;
mRemoteDisplayInterface = null; mRemoteDisplayInterface = null;
@@ -530,6 +545,8 @@ final class WifiDisplayController implements DumpUtils.Dump {
mRemoteDisplayConnected = true; mRemoteDisplayConnected = true;
mHandler.removeCallbacks(mRtspTimeout); mHandler.removeCallbacks(mRtspTimeout);
mAudioManager.setRemoteSubmixOn(true, REMOTE_SUBMIX_ADDRESS);
final WifiDisplay display = createWifiDisplay(mConnectedDevice); final WifiDisplay display = createWifiDisplay(mConnectedDevice);
mHandler.post(new Runnable() { mHandler.post(new Runnable() {
@Override @Override