aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/cm_current.txt2
-rw-r--r--samples/externalviews/keyguardviewprovider/src/org/cyanogenmod/samples/keyguardextview/SampleKeyguardProviderService.java5
-rw-r--r--src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl1
-rw-r--r--src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl1
-rw-r--r--src/java/cyanogenmod/externalviews/KeyguardExternalView.java26
-rw-r--r--src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java40
-rw-r--r--system-api/cm_system-current.txt2
7 files changed, 77 insertions, 0 deletions
diff --git a/api/cm_current.txt b/api/cm_current.txt
index 9ca1fcf..810935a 100644
--- a/api/cm_current.txt
+++ b/api/cm_current.txt
@@ -435,11 +435,13 @@ package cyanogenmod.externalviews {
method protected void onDetach();
method protected abstract void onKeyguardDismissed();
method protected abstract void onKeyguardShowing(boolean);
+ method protected void onLockscreenSlideOffsetChanged(float);
method protected abstract void onScreenTurnedOff();
method protected abstract void onScreenTurnedOn();
method protected final boolean requestDismiss();
method protected final boolean requestDismissAndStartActivity(android.content.Intent);
method protected final void setInteractivity(boolean);
+ method protected final void slideLockscreenIn();
}
}
diff --git a/samples/externalviews/keyguardviewprovider/src/org/cyanogenmod/samples/keyguardextview/SampleKeyguardProviderService.java b/samples/externalviews/keyguardviewprovider/src/org/cyanogenmod/samples/keyguardextview/SampleKeyguardProviderService.java
index dc742d1..194173a 100644
--- a/samples/externalviews/keyguardviewprovider/src/org/cyanogenmod/samples/keyguardextview/SampleKeyguardProviderService.java
+++ b/samples/externalviews/keyguardviewprovider/src/org/cyanogenmod/samples/keyguardextview/SampleKeyguardProviderService.java
@@ -94,6 +94,11 @@ public class SampleKeyguardProviderService extends KeyguardExternalViewProviderS
mImageView.clearAnimation();
}
+ @Override
+ protected void onLockscreenSlideOffsetChanged(float slideProgress) {
+
+ }
+
/**
* Called when the view has been attached to a window
*/
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;
}
diff --git a/system-api/cm_system-current.txt b/system-api/cm_system-current.txt
index 9ca1fcf..810935a 100644
--- a/system-api/cm_system-current.txt
+++ b/system-api/cm_system-current.txt
@@ -435,11 +435,13 @@ package cyanogenmod.externalviews {
method protected void onDetach();
method protected abstract void onKeyguardDismissed();
method protected abstract void onKeyguardShowing(boolean);
+ method protected void onLockscreenSlideOffsetChanged(float);
method protected abstract void onScreenTurnedOff();
method protected abstract void onScreenTurnedOn();
method protected final boolean requestDismiss();
method protected final boolean requestDismissAndStartActivity(android.content.Intent);
method protected final void setInteractivity(boolean);
+ method protected final void slideLockscreenIn();
}
}