diff options
author | Danesh M <daneshm90@gmail.com> | 2016-03-31 20:33:18 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2016-04-01 11:17:16 -0700 |
commit | d549053b2df52f27e43c43c2dca939b5428c322e (patch) | |
tree | 33d9d044dda16e5284bed31b2f1a69a219e9d3ef /src/java | |
parent | 42a1a85427b49dddcff69ceb5bdf213cde510312 (diff) | |
download | vendor_cmsdk-d549053b2df52f27e43c43c2dca939b5428c322e.zip vendor_cmsdk-d549053b2df52f27e43c43c2dca939b5428c322e.tar.gz vendor_cmsdk-d549053b2df52f27e43c43c2dca939b5428c322e.tar.bz2 |
CmSdk : Swipe offsets and show lockscreen
Allows live lockscreen to listen to keyguard offsets
and show lockscreen.
Change-Id: I1a06c78b95e4e6940e063c6e0ba0e4db44a3c380
Diffstat (limited to 'src/java')
4 files changed, 68 insertions, 0 deletions
diff --git a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl index 3e0ed9f..c9d75e2 100644 --- a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl +++ b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl @@ -26,4 +26,5 @@ interface IKeyguardExternalViewCallbacks { oneway void setInteractivity(boolean isInteractive); oneway void onAttachedToWindow(); oneway void onDetachedFromWindow(); + oneway void slideLockscreenIn(); } diff --git a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl index 7405763..a708984 100644 --- a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl +++ b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl @@ -38,4 +38,5 @@ interface IKeyguardExternalViewProvider void alterWindow(in int x, in int y, in int width, in int height, in boolean visible, in Rect clipRect); + oneway void onLockscreenSlideOffsetChanged(float swipeProgress); } diff --git a/src/java/cyanogenmod/externalviews/KeyguardExternalView.java b/src/java/cyanogenmod/externalviews/KeyguardExternalView.java index 0c464d3..9f4059a 100644 --- a/src/java/cyanogenmod/externalviews/KeyguardExternalView.java +++ b/src/java/cyanogenmod/externalviews/KeyguardExternalView.java @@ -198,6 +198,13 @@ public class KeyguardExternalView extends View implements ViewTreeObserver.OnPre mWindowAttachmentListener.onDetachedFromWindow(); } } + + @Override + public void slideLockscreenIn() { + if (mCallback != null) { + mCallback.slideLockscreenIn(); + } + } }; private void executeQueue() { @@ -377,6 +384,24 @@ public class KeyguardExternalView extends View implements ViewTreeObserver.OnPre } /** + * Called from the host when the user is swiping the lockscreen + * to transition into the live lock screen + * + * @param swipeProgress [0-1] represents the progress of the swipe + */ + public void onLockscreenSlideOffsetChanged(final float swipeProgress) { + performAction(new Runnable() { + @Override + public void run() { + try { + mExternalViewProvider.onLockscreenSlideOffsetChanged(swipeProgress); + } catch (RemoteException e) { + } + } + }); + } + + /** * External views provided by a * {@link cyanogenmod.externalviews.KeyguardExternalViewProviderService} can be either * interactive or non-interactive. @@ -453,6 +478,7 @@ public class KeyguardExternalView extends View implements ViewTreeObserver.OnPre boolean requestDismissAndStartActivity(Intent intent); void collapseNotificationPanel(); void providerDied(); + void slideLockscreenIn(); } /** diff --git a/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java b/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java index 540e58d..4c69a0a 100644 --- a/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java +++ b/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java @@ -228,6 +228,17 @@ public abstract class KeyguardExternalViewProviderService extends Service { } @Override + public void onLockscreenSlideOffsetChanged(final float swipeProgress) + throws RemoteException { + mHandler.post(new Runnable() { + @Override + public void run() { + Provider.this.onLockscreenSlideOffsetChanged(swipeProgress); + } + }); + } + + @Override public void alterWindow(final int x, final int y, final int width, final int height, final boolean visible, final Rect clipRect) { mHandler.post(new Runnable() { @@ -324,6 +335,18 @@ public abstract class KeyguardExternalViewProviderService extends Service { mCallbacks.finishBroadcast(); } + public void slideLockscreenIn() { + int N = mCallbacks.beginBroadcast(); + for(int i=0; i < N; i++) { + IKeyguardExternalViewCallbacks callback = mCallbacks.getBroadcastItem(0); + try { + callback.slideLockscreenIn(); + } catch(RemoteException e) { + } + } + mCallbacks.finishBroadcast(); + } + // region Window callbacks @Override public boolean dispatchKeyEvent(KeyEvent event) { @@ -522,6 +545,14 @@ public abstract class KeyguardExternalViewProviderService extends Service { */ protected abstract void onScreenTurnedOff(); + /** + * Called from the host when the user is swiping the lockscreen + * to transition into the live lock screen + * + * @param swipeProgress [0-1] represents the progress of the swipe + */ + protected void onLockscreenSlideOffsetChanged(float swipeProgress) {} + // callbacks from provider to host /** @@ -581,6 +612,15 @@ public abstract class KeyguardExternalViewProviderService extends Service { mImpl.setInteractivity(isInteractive); } + /** + * Call this method when you like to slide in the lockscreen on top of + * your live lockscreen. Only relevant if you use + * {@link KeyguardExternalViewProviderService.Provider#setInteractivity(boolean)} + */ + protected final void slideLockscreenIn() { + mImpl.slideLockscreenIn(); + } + /*package*/ final int getWindowType() { return WindowManager.LayoutParams.TYPE_KEYGUARD_PANEL; } |