Integrate remote display routes into screen cast settings UI.

Merged remote display route selection into the existing wifi
display preference UI.  Moved the on/off toggle over to a menu item.

The preference page is now mainly implemented in terms of the
media router.  It only interacts with the display manager for the purpose
of pairing with new devices or making wifi display certification
controls available.

This means that the observed state is now completely consistent across
the system ui, settings, and applications that use the media router.

Bug: 11257292
Change-Id: I3705570812384fef4bfffeccaaccf7895d370d12
This commit is contained in:
Jeff Brown
2013-11-10 21:02:20 -08:00
parent a27816dc2d
commit 4e54c2a177
5 changed files with 268 additions and 289 deletions

View File

@@ -21,16 +21,10 @@ import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import android.app.ActivityManagerNative;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.hardware.display.DisplayManager;
import android.hardware.display.WifiDisplay;
import android.hardware.display.WifiDisplayStatus;
import android.os.Bundle;
import android.os.RemoteException;
import android.preference.CheckBoxPreference;
@@ -40,7 +34,6 @@ import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.AttributeSet;
import android.util.Log;
import com.android.internal.view.RotationPolicy;
@@ -60,12 +53,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private static final String KEY_FONT_SIZE = "font_size";
private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
private static final String KEY_SCREEN_SAVER = "screensaver";
private static final String KEY_WIFI_DISPLAY = "wifi_display";
private static final int DLG_GLOBAL_CHANGE_WARNING = 1;
private DisplayManager mDisplayManager;
private CheckBoxPreference mAccelerometer;
private WarnedListPreference mFontSizePref;
private CheckBoxPreference mNotificationPulse;
@@ -75,9 +65,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private ListPreference mScreenTimeoutPreference;
private Preference mScreenSaverPreference;
private WifiDisplayStatus mWifiDisplayStatus;
private Preference mWifiDisplayPreference;
private final RotationPolicy.RotationPolicyListener mRotationPolicyListener =
new RotationPolicy.RotationPolicyListener() {
@Override
@@ -135,16 +122,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
Log.e(TAG, Settings.System.NOTIFICATION_LIGHT_PULSE + " not found");
}
}
mDisplayManager = (DisplayManager)getActivity().getSystemService(
Context.DISPLAY_SERVICE);
mWifiDisplayStatus = mDisplayManager.getWifiDisplayStatus();
mWifiDisplayPreference = (Preference)findPreference(KEY_WIFI_DISPLAY);
if (mWifiDisplayStatus.getFeatureState()
== WifiDisplayStatus.FEATURE_STATE_UNAVAILABLE) {
getPreferenceScreen().removePreference(mWifiDisplayPreference);
mWifiDisplayPreference = null;
}
}
private void updateTimeoutPreferenceDescription(long currentTimeout) {
@@ -252,12 +229,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
RotationPolicy.registerRotationPolicyListener(getActivity(),
mRotationPolicyListener);
if (mWifiDisplayPreference != null) {
getActivity().registerReceiver(mReceiver, new IntentFilter(
DisplayManager.ACTION_WIFI_DISPLAY_STATUS_CHANGED));
mWifiDisplayStatus = mDisplayManager.getWifiDisplayStatus();
}
updateState();
}
@@ -267,10 +238,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
RotationPolicy.unregisterRotationPolicyListener(getActivity(),
mRotationPolicyListener);
if (mWifiDisplayPreference != null) {
getActivity().unregisterReceiver(mReceiver);
}
}
@Override
@@ -291,7 +258,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
updateAccelerometerRotationCheckbox();
readFontSizePreference(mFontSizePref);
updateScreenSaverSummary();
updateWifiDisplaySummary();
}
private void updateScreenSaverSummary() {
@@ -301,23 +267,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
}
}
private void updateWifiDisplaySummary() {
if (mWifiDisplayPreference != null) {
switch (mWifiDisplayStatus.getFeatureState()) {
case WifiDisplayStatus.FEATURE_STATE_OFF:
mWifiDisplayPreference.setSummary(R.string.wifi_display_summary_off);
break;
case WifiDisplayStatus.FEATURE_STATE_ON:
mWifiDisplayPreference.setSummary(R.string.wifi_display_summary_on);
break;
case WifiDisplayStatus.FEATURE_STATE_DISABLED:
default:
mWifiDisplayPreference.setSummary(R.string.wifi_display_summary_disabled);
break;
}
}
}
private void updateAccelerometerRotationCheckbox() {
if (getActivity() == null) return;
@@ -347,6 +296,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
final String key = preference.getKey();
if (KEY_SCREEN_TIMEOUT.equals(key)) {
@@ -365,17 +315,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
return true;
}
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(DisplayManager.ACTION_WIFI_DISPLAY_STATUS_CHANGED)) {
mWifiDisplayStatus = (WifiDisplayStatus)intent.getParcelableExtra(
DisplayManager.EXTRA_WIFI_DISPLAY_STATUS);
updateWifiDisplaySummary();
}
}
};
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference == mFontSizePref) {