Loading packages/SystemUI/AndroidManifest.xml +10 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,16 @@ </intent-filter> </receiver> <!-- handle dock insertion, launch screensaver instead --> <activity android:name=".DreamsDockLauncher" android:label="@string/dreams_dock_launcher"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DESK_DOCK" /> </intent-filter> </activity> <activity android:name=".usb.UsbStorageActivity" android:excludeFromRecents="true"> </activity> Loading packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -351,4 +351,7 @@ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_clear_all">Clear all notifications.</string> <!-- Description of the desk dock action that invokes the Android Dreams screen saver feature --> <string name="dreams_dock_launcher">Activate screen saver</string> </resources> packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java 0 → 100644 +39 −0 Original line number Diff line number Diff line package com.android.systemui; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.util.Slog; public class DreamsDockLauncher extends Activity { private static final String TAG = "DreamsDockLauncher"; @Override protected void onCreate (Bundle icicle) { super.onCreate(icicle); try { String component = Settings.Secure.getString( getContentResolver(), Settings.Secure.DREAM_COMPONENT); if (component != null) { ComponentName cn = ComponentName.unflattenFromString(component); Intent zzz = new Intent(Intent.ACTION_MAIN) .setComponent(cn) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_NO_USER_ACTION ); startActivity(zzz); } else { Slog.e(TAG, "Couldn't start screen saver: none selected"); } } catch (android.content.ActivityNotFoundException exc) { // no screensaver? give up Slog.e(TAG, "Couldn't start screen saver: none installed"); } finish(); } } services/java/com/android/server/UiModeManagerService.java +39 −6 Original line number Diff line number Diff line Loading @@ -123,6 +123,10 @@ class UiModeManagerService extends IUiModeManager.Stub { @Override public void onReceive(Context context, Intent intent) { if (getResultCode() != Activity.RESULT_OK) { if (LOG) { Slog.v(TAG, "Handling broadcast result for action " + intent.getAction() + ": canceled: " + getResultCode()); } return; } Loading Loading @@ -152,6 +156,12 @@ class UiModeManagerService extends IUiModeManager.Stub { } } if (LOG) { Slog.v(TAG, String.format( "Handling broadcast result for action %s: enable=0x%08x disable=0x%08x category=%s", intent.getAction(), enableFlags, disableFlags, category)); } if (category != null) { // This is the new activity that will serve as home while // we are in care mode. Loading Loading @@ -424,11 +434,22 @@ class UiModeManagerService extends IUiModeManager.Stub { } } final static boolean isDeskDockState(int state) { switch (state) { case Intent.EXTRA_DOCK_STATE_DESK: case Intent.EXTRA_DOCK_STATE_LE_DESK: case Intent.EXTRA_DOCK_STATE_HE_DESK: return true; default: return false; } } final void updateConfigurationLocked(boolean sendIt) { int uiMode = Configuration.UI_MODE_TYPE_NORMAL; if (mCarModeEnabled) { uiMode = Configuration.UI_MODE_TYPE_CAR; } else if (mDockState == Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mDockState)) { uiMode = Configuration.UI_MODE_TYPE_DESK; } if (mCarModeEnabled) { Loading Loading @@ -477,7 +498,7 @@ class UiModeManagerService extends IUiModeManager.Stub { if (mLastBroadcastState == Intent.EXTRA_DOCK_STATE_CAR) { adjustStatusBarCarModeLocked(); oldAction = UiModeManager.ACTION_EXIT_CAR_MODE; } else if (mLastBroadcastState == Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mLastBroadcastState)) { oldAction = UiModeManager.ACTION_EXIT_DESK_MODE; } Loading @@ -491,12 +512,12 @@ class UiModeManagerService extends IUiModeManager.Stub { mLastBroadcastState = Intent.EXTRA_DOCK_STATE_CAR; action = UiModeManager.ACTION_ENTER_CAR_MODE; } } else if (mDockState == Intent.EXTRA_DOCK_STATE_DESK) { if (mLastBroadcastState != Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mDockState)) { if (!isDeskDockState(mLastBroadcastState)) { if (oldAction != null) { mContext.sendBroadcast(new Intent(oldAction)); } mLastBroadcastState = Intent.EXTRA_DOCK_STATE_DESK; mLastBroadcastState = mDockState; action = UiModeManager.ACTION_ENTER_DESK_MODE; } } else { Loading @@ -505,6 +526,12 @@ class UiModeManagerService extends IUiModeManager.Stub { } if (action != null) { if (LOG) { Slog.v(TAG, String.format( "updateLocked: preparing broadcast: action=%s enable=0x%08x disable=0x%08x", action, enableFlags, disableFlags)); } // Send the ordered broadcast; the result receiver will receive after all // broadcasts have been sent. If any broadcast receiver changes the result // code from the initial value of RESULT_OK, then the result receiver will Loading @@ -526,7 +553,7 @@ class UiModeManagerService extends IUiModeManager.Stub { if ((enableFlags&UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) { homeIntent = buildHomeIntent(Intent.CATEGORY_CAR_DOCK); } } else if (mDockState == Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mDockState)) { if ((enableFlags&UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) { homeIntent = buildHomeIntent(Intent.CATEGORY_DESK_DOCK); } Loading @@ -535,6 +562,12 @@ class UiModeManagerService extends IUiModeManager.Stub { homeIntent = buildHomeIntent(Intent.CATEGORY_HOME); } } if (LOG) { Slog.v(TAG, "updateLocked: null action, mDockState=" + mDockState +", firing homeIntent: " + homeIntent); } if (homeIntent != null) { try { mContext.startActivity(homeIntent); Loading Loading
packages/SystemUI/AndroidManifest.xml +10 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,16 @@ </intent-filter> </receiver> <!-- handle dock insertion, launch screensaver instead --> <activity android:name=".DreamsDockLauncher" android:label="@string/dreams_dock_launcher"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DESK_DOCK" /> </intent-filter> </activity> <activity android:name=".usb.UsbStorageActivity" android:excludeFromRecents="true"> </activity> Loading
packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -351,4 +351,7 @@ <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_clear_all">Clear all notifications.</string> <!-- Description of the desk dock action that invokes the Android Dreams screen saver feature --> <string name="dreams_dock_launcher">Activate screen saver</string> </resources>
packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java 0 → 100644 +39 −0 Original line number Diff line number Diff line package com.android.systemui; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.util.Slog; public class DreamsDockLauncher extends Activity { private static final String TAG = "DreamsDockLauncher"; @Override protected void onCreate (Bundle icicle) { super.onCreate(icicle); try { String component = Settings.Secure.getString( getContentResolver(), Settings.Secure.DREAM_COMPONENT); if (component != null) { ComponentName cn = ComponentName.unflattenFromString(component); Intent zzz = new Intent(Intent.ACTION_MAIN) .setComponent(cn) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_NO_USER_ACTION ); startActivity(zzz); } else { Slog.e(TAG, "Couldn't start screen saver: none selected"); } } catch (android.content.ActivityNotFoundException exc) { // no screensaver? give up Slog.e(TAG, "Couldn't start screen saver: none installed"); } finish(); } }
services/java/com/android/server/UiModeManagerService.java +39 −6 Original line number Diff line number Diff line Loading @@ -123,6 +123,10 @@ class UiModeManagerService extends IUiModeManager.Stub { @Override public void onReceive(Context context, Intent intent) { if (getResultCode() != Activity.RESULT_OK) { if (LOG) { Slog.v(TAG, "Handling broadcast result for action " + intent.getAction() + ": canceled: " + getResultCode()); } return; } Loading Loading @@ -152,6 +156,12 @@ class UiModeManagerService extends IUiModeManager.Stub { } } if (LOG) { Slog.v(TAG, String.format( "Handling broadcast result for action %s: enable=0x%08x disable=0x%08x category=%s", intent.getAction(), enableFlags, disableFlags, category)); } if (category != null) { // This is the new activity that will serve as home while // we are in care mode. Loading Loading @@ -424,11 +434,22 @@ class UiModeManagerService extends IUiModeManager.Stub { } } final static boolean isDeskDockState(int state) { switch (state) { case Intent.EXTRA_DOCK_STATE_DESK: case Intent.EXTRA_DOCK_STATE_LE_DESK: case Intent.EXTRA_DOCK_STATE_HE_DESK: return true; default: return false; } } final void updateConfigurationLocked(boolean sendIt) { int uiMode = Configuration.UI_MODE_TYPE_NORMAL; if (mCarModeEnabled) { uiMode = Configuration.UI_MODE_TYPE_CAR; } else if (mDockState == Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mDockState)) { uiMode = Configuration.UI_MODE_TYPE_DESK; } if (mCarModeEnabled) { Loading Loading @@ -477,7 +498,7 @@ class UiModeManagerService extends IUiModeManager.Stub { if (mLastBroadcastState == Intent.EXTRA_DOCK_STATE_CAR) { adjustStatusBarCarModeLocked(); oldAction = UiModeManager.ACTION_EXIT_CAR_MODE; } else if (mLastBroadcastState == Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mLastBroadcastState)) { oldAction = UiModeManager.ACTION_EXIT_DESK_MODE; } Loading @@ -491,12 +512,12 @@ class UiModeManagerService extends IUiModeManager.Stub { mLastBroadcastState = Intent.EXTRA_DOCK_STATE_CAR; action = UiModeManager.ACTION_ENTER_CAR_MODE; } } else if (mDockState == Intent.EXTRA_DOCK_STATE_DESK) { if (mLastBroadcastState != Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mDockState)) { if (!isDeskDockState(mLastBroadcastState)) { if (oldAction != null) { mContext.sendBroadcast(new Intent(oldAction)); } mLastBroadcastState = Intent.EXTRA_DOCK_STATE_DESK; mLastBroadcastState = mDockState; action = UiModeManager.ACTION_ENTER_DESK_MODE; } } else { Loading @@ -505,6 +526,12 @@ class UiModeManagerService extends IUiModeManager.Stub { } if (action != null) { if (LOG) { Slog.v(TAG, String.format( "updateLocked: preparing broadcast: action=%s enable=0x%08x disable=0x%08x", action, enableFlags, disableFlags)); } // Send the ordered broadcast; the result receiver will receive after all // broadcasts have been sent. If any broadcast receiver changes the result // code from the initial value of RESULT_OK, then the result receiver will Loading @@ -526,7 +553,7 @@ class UiModeManagerService extends IUiModeManager.Stub { if ((enableFlags&UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) { homeIntent = buildHomeIntent(Intent.CATEGORY_CAR_DOCK); } } else if (mDockState == Intent.EXTRA_DOCK_STATE_DESK) { } else if (isDeskDockState(mDockState)) { if ((enableFlags&UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME) != 0) { homeIntent = buildHomeIntent(Intent.CATEGORY_DESK_DOCK); } Loading @@ -535,6 +562,12 @@ class UiModeManagerService extends IUiModeManager.Stub { homeIntent = buildHomeIntent(Intent.CATEGORY_HOME); } } if (LOG) { Slog.v(TAG, "updateLocked: null action, mDockState=" + mDockState +", firing homeIntent: " + homeIntent); } if (homeIntent != null) { try { mContext.startActivity(homeIntent); Loading