Loading packages/SystemUI/src/com/android/systemui/quicksettings/WiFiDisplayTile.java +70 −13 Original line number Diff line number Diff line Loading @@ -3,7 +3,8 @@ package com.android.systemui.quicksettings; import android.content.Context; import android.content.Intent; import android.hardware.display.DisplayManager; import android.hardware.display.WifiDisplayStatus; import android.media.MediaRouter; import android.media.MediaRouter.RouteInfo; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; Loading @@ -11,11 +12,15 @@ import android.view.View.OnClickListener; import com.android.systemui.R; import com.android.systemui.statusbar.phone.QuickSettingsController; import com.android.systemui.statusbar.phone.QuickSettingsContainerView; import com.android.systemui.statusbar.phone.QuickSettingsTileView; public class WiFiDisplayTile extends QuickSettingsTile{ private boolean enabled = false; private boolean connected = false; private boolean connecting; private final MediaRouter mMediaRouter; private final RemoteDisplayRouteCallback mRemoteDisplayRouteCallback; private MediaRouter.RouteInfo connectedRoute; public WiFiDisplayTile(Context context, QuickSettingsController qsc) { Loading @@ -28,20 +33,71 @@ public class WiFiDisplayTile extends QuickSettingsTile{ startSettingsActivity(android.provider.Settings.ACTION_WIFI_DISPLAY_SETTINGS); } }; qsc.registerAction(DisplayManager.ACTION_WIFI_DISPLAY_STATUS_CHANGED, this); mMediaRouter = (MediaRouter)context.getSystemService(Context.MEDIA_ROUTER_SERVICE); mRemoteDisplayRouteCallback = new RemoteDisplayRouteCallback(); } /** Callback for changes to remote display routes. */ private class RemoteDisplayRouteCallback extends MediaRouter.SimpleCallback { @Override public void onRouteAdded(MediaRouter router, RouteInfo route) { updateRemoteDisplays(); } @Override public void onRouteChanged(MediaRouter router, RouteInfo route) { updateRemoteDisplays(); } @Override public void onRouteRemoved(MediaRouter router, RouteInfo route) { updateRemoteDisplays(); } @Override public void onRouteSelected(MediaRouter router, int type, RouteInfo route) { updateRemoteDisplays(); } @Override public void onReceive(Context context, Intent intent) { WifiDisplayStatus status = (WifiDisplayStatus)intent.getParcelableExtra(DisplayManager.EXTRA_WIFI_DISPLAY_STATUS); enabled = status.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON; connected = status.getActiveDisplay() != null; public void onRouteUnselected(MediaRouter router, int type, RouteInfo route) { updateRemoteDisplays(); } } private void updateRemoteDisplays() { connectedRoute = mMediaRouter.getSelectedRoute( MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY); enabled = connectedRoute != null && (connectedRoute.getSupportedTypes() & MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY) != 0; if (enabled) { connecting = connectedRoute.isConnecting(); } else { connectedRoute = null; connecting = false; enabled = mMediaRouter.isRouteAvailable(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY, MediaRouter.AVAILABILITY_FLAG_IGNORE_DEFAULT_ROUTE); } updateResources(); } @Override void onPostCreate() { updateTile(); mTile.setOnPrepareListener(new QuickSettingsTileView.OnPrepareListener() { @Override public void onPrepare() { mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY, mRemoteDisplayRouteCallback, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); updateRemoteDisplays(); } @Override public void onUnprepare() { mMediaRouter.removeCallback(mRemoteDisplayRouteCallback); } }); updateRemoteDisplays(); super.onPostCreate(); } Loading @@ -52,11 +108,12 @@ public class WiFiDisplayTile extends QuickSettingsTile{ } private synchronized void updateTile() { if(enabled && connected) { mLabel = mContext.getString(R.string.quick_settings_wifi_display_label); mDrawable = R.drawable.ic_qs_cast_connected; if(enabled && (connectedRoute != null)) { mLabel = connectedRoute.getName().toString(); mDrawable = connecting ? R.drawable.ic_qs_cast_connecting : R.drawable.ic_qs_cast_connected; }else{ mLabel = mContext.getString(R.string.quick_settings_wifi_display_no_connection_label); mLabel = mContext.getString(R.string.quick_settings_remote_display_no_connection_label); mDrawable = R.drawable.ic_qs_cast_available; } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java +3 −3 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ import com.android.systemui.quicksettings.TorchTile; import com.android.systemui.quicksettings.UsbTetherTile; import com.android.systemui.quicksettings.UserTile; import com.android.systemui.quicksettings.VolumeTile; //import com.android.systemui.quicksettings.WiFiDisplayTile; import com.android.systemui.quicksettings.WiFiDisplayTile; import com.android.systemui.quicksettings.WiFiTile; import com.android.systemui.quicksettings.WifiAPTile; Loading Loading @@ -311,12 +311,12 @@ public class QuickSettingsController { if (!dockBatteryLoaded) { loadDockBatteryTile(resolver, inflater); } /*if (Settings.System.getIntForUser(resolver, if (Settings.System.getIntForUser(resolver, Settings.System.QS_DYNAMIC_WIFI, 1, UserHandle.USER_CURRENT) == 1) { QuickSettingsTile qs = new WiFiDisplayTile(mContext, this); qs.setupQuickSettingsTile(inflater, mContainerView); mQuickSettingsTiles.add(qs); }*/ } if (QSUtils.deviceSupportsImeSwitcher(mContext) && Settings.System.getIntForUser(resolver, Settings.System.QS_DYNAMIC_IME, 1, UserHandle.USER_CURRENT) == 1) { mIMETile = new InputMethodTile(mContext, this); Loading Loading
packages/SystemUI/src/com/android/systemui/quicksettings/WiFiDisplayTile.java +70 −13 Original line number Diff line number Diff line Loading @@ -3,7 +3,8 @@ package com.android.systemui.quicksettings; import android.content.Context; import android.content.Intent; import android.hardware.display.DisplayManager; import android.hardware.display.WifiDisplayStatus; import android.media.MediaRouter; import android.media.MediaRouter.RouteInfo; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; Loading @@ -11,11 +12,15 @@ import android.view.View.OnClickListener; import com.android.systemui.R; import com.android.systemui.statusbar.phone.QuickSettingsController; import com.android.systemui.statusbar.phone.QuickSettingsContainerView; import com.android.systemui.statusbar.phone.QuickSettingsTileView; public class WiFiDisplayTile extends QuickSettingsTile{ private boolean enabled = false; private boolean connected = false; private boolean connecting; private final MediaRouter mMediaRouter; private final RemoteDisplayRouteCallback mRemoteDisplayRouteCallback; private MediaRouter.RouteInfo connectedRoute; public WiFiDisplayTile(Context context, QuickSettingsController qsc) { Loading @@ -28,20 +33,71 @@ public class WiFiDisplayTile extends QuickSettingsTile{ startSettingsActivity(android.provider.Settings.ACTION_WIFI_DISPLAY_SETTINGS); } }; qsc.registerAction(DisplayManager.ACTION_WIFI_DISPLAY_STATUS_CHANGED, this); mMediaRouter = (MediaRouter)context.getSystemService(Context.MEDIA_ROUTER_SERVICE); mRemoteDisplayRouteCallback = new RemoteDisplayRouteCallback(); } /** Callback for changes to remote display routes. */ private class RemoteDisplayRouteCallback extends MediaRouter.SimpleCallback { @Override public void onRouteAdded(MediaRouter router, RouteInfo route) { updateRemoteDisplays(); } @Override public void onRouteChanged(MediaRouter router, RouteInfo route) { updateRemoteDisplays(); } @Override public void onRouteRemoved(MediaRouter router, RouteInfo route) { updateRemoteDisplays(); } @Override public void onRouteSelected(MediaRouter router, int type, RouteInfo route) { updateRemoteDisplays(); } @Override public void onReceive(Context context, Intent intent) { WifiDisplayStatus status = (WifiDisplayStatus)intent.getParcelableExtra(DisplayManager.EXTRA_WIFI_DISPLAY_STATUS); enabled = status.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON; connected = status.getActiveDisplay() != null; public void onRouteUnselected(MediaRouter router, int type, RouteInfo route) { updateRemoteDisplays(); } } private void updateRemoteDisplays() { connectedRoute = mMediaRouter.getSelectedRoute( MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY); enabled = connectedRoute != null && (connectedRoute.getSupportedTypes() & MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY) != 0; if (enabled) { connecting = connectedRoute.isConnecting(); } else { connectedRoute = null; connecting = false; enabled = mMediaRouter.isRouteAvailable(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY, MediaRouter.AVAILABILITY_FLAG_IGNORE_DEFAULT_ROUTE); } updateResources(); } @Override void onPostCreate() { updateTile(); mTile.setOnPrepareListener(new QuickSettingsTileView.OnPrepareListener() { @Override public void onPrepare() { mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY, mRemoteDisplayRouteCallback, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); updateRemoteDisplays(); } @Override public void onUnprepare() { mMediaRouter.removeCallback(mRemoteDisplayRouteCallback); } }); updateRemoteDisplays(); super.onPostCreate(); } Loading @@ -52,11 +108,12 @@ public class WiFiDisplayTile extends QuickSettingsTile{ } private synchronized void updateTile() { if(enabled && connected) { mLabel = mContext.getString(R.string.quick_settings_wifi_display_label); mDrawable = R.drawable.ic_qs_cast_connected; if(enabled && (connectedRoute != null)) { mLabel = connectedRoute.getName().toString(); mDrawable = connecting ? R.drawable.ic_qs_cast_connecting : R.drawable.ic_qs_cast_connected; }else{ mLabel = mContext.getString(R.string.quick_settings_wifi_display_no_connection_label); mLabel = mContext.getString(R.string.quick_settings_remote_display_no_connection_label); mDrawable = R.drawable.ic_qs_cast_available; } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsController.java +3 −3 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ import com.android.systemui.quicksettings.TorchTile; import com.android.systemui.quicksettings.UsbTetherTile; import com.android.systemui.quicksettings.UserTile; import com.android.systemui.quicksettings.VolumeTile; //import com.android.systemui.quicksettings.WiFiDisplayTile; import com.android.systemui.quicksettings.WiFiDisplayTile; import com.android.systemui.quicksettings.WiFiTile; import com.android.systemui.quicksettings.WifiAPTile; Loading Loading @@ -311,12 +311,12 @@ public class QuickSettingsController { if (!dockBatteryLoaded) { loadDockBatteryTile(resolver, inflater); } /*if (Settings.System.getIntForUser(resolver, if (Settings.System.getIntForUser(resolver, Settings.System.QS_DYNAMIC_WIFI, 1, UserHandle.USER_CURRENT) == 1) { QuickSettingsTile qs = new WiFiDisplayTile(mContext, this); qs.setupQuickSettingsTile(inflater, mContainerView); mQuickSettingsTiles.add(qs); }*/ } if (QSUtils.deviceSupportsImeSwitcher(mContext) && Settings.System.getIntForUser(resolver, Settings.System.QS_DYNAMIC_IME, 1, UserHandle.USER_CURRENT) == 1) { mIMETile = new InputMethodTile(mContext, this); Loading