3939import android .os .Handler ;
4040import android .os .Message ;
4141import android .os .RemoteException ;
42+ import android .os .ServiceManager ;
4243import android .os .SystemClock ;
4344import android .os .SystemProperties ;
4445import android .os .UserHandle ;
4546import android .os .UserManager ;
4647import android .os .Vibrator ;
4748import android .provider .Settings ;
49+ import android .service .dreams .DreamService ;
50+ import android .service .dreams .IDreamManager ;
4851import android .telephony .PhoneStateListener ;
4952import android .telephony .ServiceState ;
5053import android .telephony .TelephonyManager ;
@@ -83,6 +86,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
8386 private final Context mContext ;
8487 private final WindowManagerFuncs mWindowManagerFuncs ;
8588 private final AudioManager mAudioManager ;
89+ private final IDreamManager mDreamManager ;
8690
8791 private ArrayList <Action > mItems ;
8892 private GlobalActionsDialog mDialog ;
@@ -106,6 +110,8 @@ public GlobalActions(Context context, WindowManagerFuncs windowManagerFuncs) {
106110 mContext = context ;
107111 mWindowManagerFuncs = windowManagerFuncs ;
108112 mAudioManager = (AudioManager ) mContext .getSystemService (Context .AUDIO_SERVICE );
113+ mDreamManager = IDreamManager .Stub .asInterface (
114+ ServiceManager .getService (DreamService .DREAM_SERVICE ));
109115
110116 // receive broadcasts
111117 IntentFilter filter = new IntentFilter ();
@@ -145,7 +151,20 @@ public void showDialog(boolean keyguardShowing, boolean isDeviceProvisioned) {
145151 }
146152 }
147153
154+ private void awakenIfNecessary () {
155+ if (mDreamManager != null ) {
156+ try {
157+ if (mDreamManager .isDreaming ()) {
158+ mDreamManager .awaken ();
159+ }
160+ } catch (RemoteException e ) {
161+ // we tried
162+ }
163+ }
164+ }
165+
148166 private void handleShow () {
167+ awakenIfNecessary ();
149168 mDialog = createDialog ();
150169 prepareDialog ();
151170
0 commit comments