Killing Facelock when a phonecall comes in

This needs to actively listen for phonecall callbacks,
or calls that come in while Facelock is active will drop.

Change-Id: I818433e5de9085f0357f61d6a04b395e58871396
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index 899a761..f3068b1 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -76,7 +76,8 @@
  * {@link com.android.internal.policy.impl.KeyguardViewManager}
  * via its {@link com.android.internal.policy.impl.KeyguardViewCallback}, as appropriate.
  */
-public class LockPatternKeyguardView extends KeyguardViewBase implements Handler.Callback {
+public class LockPatternKeyguardView extends KeyguardViewBase implements Handler.Callback,
+        KeyguardUpdateMonitor.InfoCallback {
 
     private static final int TRANSPORT_USERACTIVITY_TIMEOUT = 10000;
 
@@ -266,6 +267,8 @@
         mLockPatternUtils = lockPatternUtils;
         mWindowController = controller;
 
+        mUpdateMonitor.registerInfoCallback(this);
+
         mKeyguardScreenCallback = new KeyguardScreenCallback() {
 
             public void goToLockScreen() {
@@ -588,6 +591,25 @@
         post(mRecreateRunnable);
     }
 
+    //Ignore these events; they are implemented only because they come from the same interface
+    @Override
+    public void onRefreshBatteryInfo(boolean showBatteryInfo, boolean pluggedIn, int batteryLevel)
+    {}
+    @Override
+    public void onTimeChanged() {}
+    @Override
+    public void onRefreshCarrierInfo(CharSequence plmn, CharSequence spn) {}
+    @Override
+    public void onRingerModeChanged(int state) {}
+    @Override
+    public void onClockVisibilityChanged() {}
+
+    //We need to stop faceunlock when a phonecall comes in
+    @Override
+    public void onPhoneStateChanged(int phoneState) {
+        if(phoneState == TelephonyManager.CALL_STATE_RINGING) stopAndUnbindFromFaceLock();
+    }
+
     @Override
     protected boolean dispatchHoverEvent(MotionEvent event) {
         // Do not let the screen to get locked while the user is disabled and touch