am 9e4e75a4: Merge "Implement face unlock running indicator on Keyguard." into lmp-dev

* commit '9e4e75a4d05ce60b423c52889d6f6f19119a0847':
  Implement face unlock running indicator on Keyguard.
This commit is contained in:
Jorim Jaggi
2014-08-06 14:55:09 +00:00
committed by Android Git Automerger
3 changed files with 45 additions and 7 deletions

View File

@@ -83,6 +83,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private static final int FAILED_BIOMETRIC_UNLOCK_ATTEMPTS_BEFORE_BACKUP = 3;
private static final int LOW_BATTERY_THRESHOLD = 20;
private static final String ACTION_FACE_UNLOCK_STARTED
= "com.android.facelock.FACE_UNLOCK_STARTED";
private static final String ACTION_FACE_UNLOCK_STOPPED
= "com.android.facelock.FACE_UNLOCK_STOPPED";
// Callback messages
private static final int MSG_TIME_UPDATE = 301;
private static final int MSG_BATTERY_UPDATE = 302;
@@ -107,6 +112,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private static final int MSG_KEYGUARD_BOUNCER_CHANGED = 322;
private static final int MSG_FINGERPRINT_PROCESSED = 323;
private static final int MSG_FINGERPRINT_ACQUIRED = 324;
private static final int MSG_FACE_UNLOCK_STATE_CHANGED = 325;
private static KeyguardUpdateMonitor sInstance;
@@ -211,6 +217,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
case MSG_FINGERPRINT_PROCESSED:
handleFingerprintProcessed(msg.arg1);
break;
case MSG_FACE_UNLOCK_STATE_CHANGED:
handleFaceUnlockStateChanged(msg.arg1 != 0);
break;
}
}
};
@@ -285,6 +294,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
}
private void handleFaceUnlockStateChanged(boolean running) {
for (int i = 0; i < mCallbacks.size(); i++) {
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
if (cb != null) {
cb.onFaceUnlockStateChanged(running);
}
}
}
private boolean isTrustDisabled(int userId) {
final DevicePolicyManager dpm =
(DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
@@ -376,6 +394,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0), 0));
} else if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
dispatchBootCompleted();
} else if (ACTION_FACE_UNLOCK_STARTED.equals(action)) {
mHandler.sendMessage(mHandler.obtainMessage(MSG_FACE_UNLOCK_STATE_CHANGED, 1, 0));
} else if (ACTION_FACE_UNLOCK_STOPPED.equals(action)) {
mHandler.sendMessage(mHandler.obtainMessage(MSG_FACE_UNLOCK_STATE_CHANGED, 0, 0));
}
}
};
@@ -588,6 +610,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
filter.addAction(Intent.ACTION_USER_REMOVED);
filter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED);
filter.addAction(ACTION_FACE_UNLOCK_STARTED);
filter.addAction(ACTION_FACE_UNLOCK_STOPPED);
context.registerReceiver(mBroadcastReceiver, filter);
final IntentFilter bootCompleteFilter = new IntentFilter();

View File

@@ -188,4 +188,9 @@ public class KeyguardUpdateMonitorCallback {
* Called when fingerprint is acquired but not yet recognized
*/
public void onFingerprintAcquired(int info) { }
/**
* Called when the state of face unlock changed.
*/
public void onFaceUnlockStateChanged(boolean running) { }
}

View File

@@ -72,6 +72,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
private LockPatternUtils mLockPatternUtils;
private FlashlightController mFlashlightController;
private PreviewInflater mPreviewInflater;
private boolean mFaceUnlockRunning;
public KeyguardBottomAreaView(Context context) {
super(context);
@@ -105,7 +106,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
updatePhoneVisibility();
mUnlockMethodCache = UnlockMethodCache.getInstance(getContext());
mUnlockMethodCache.addListener(this);
updateTrust();
updateLockIcon();
setClipChildren(false);
setClipToPadding(false);
mPreviewInflater = new PreviewInflater(mContext, new LockPatternUtils(mContext));
@@ -226,21 +227,23 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
protected void onVisibilityChanged(View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
if (changedView == this && visibility == VISIBLE) {
updateTrust();
updateLockIcon();
updateCameraVisibility();
}
}
private void updateTrust() {
private void updateLockIcon() {
if (getVisibility() != VISIBLE) {
return;
}
int iconRes = mUnlockMethodCache.isMethodInsecure()
? R.drawable.ic_lock_open_24dp
// TODO: Real icon for facelock.
int iconRes = mFaceUnlockRunning ? R.drawable.ic_account_circle
: mUnlockMethodCache.isMethodInsecure() ? R.drawable.ic_lock_open_24dp
: R.drawable.ic_lock_24dp;
mLockIcon.setImageResource(iconRes);
boolean trustManaged = mUnlockMethodCache.isTrustManaged();
mLockIcon.setBackgroundResource(trustManaged ? R.drawable.trust_circle : 0);
mLockIcon.setBackgroundResource(trustManaged && !mFaceUnlockRunning
? R.drawable.trust_circle : 0);
}
public KeyguardAffordanceView getPhoneView() {
@@ -274,7 +277,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
@Override
public void onMethodSecureChanged(boolean methodSecure) {
updateTrust();
updateLockIcon();
updateCameraVisibility();
}
@@ -308,5 +311,11 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
public void onUserSwitchComplete(int userId) {
updateCameraVisibility();
}
@Override
public void onFaceUnlockStateChanged(boolean running) {
mFaceUnlockRunning = running;
updateLockIcon();
}
};
}