diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
index fa65afe..6a47dc4 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
@@ -23,8 +23,6 @@
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.Handler;
-import android.os.PowerManager;
-import android.os.SystemClock;
 
 import com.android.settings.ChooseLockSettingsHelper;
 
@@ -36,7 +34,6 @@
     private int mEnrollmentSteps = -1;
     private int mEnrollmentRemaining = 0;
     private Listener mListener;
-    private PowerManager mPowerManager;
     private boolean mEnrolling;
     private CancellationSignal mEnrollmentCancel;
     private Handler mHandler = new Handler();
@@ -52,7 +49,6 @@
     @Override
     public void onAttach(Activity activity) {
         super.onAttach(activity);
-        mPowerManager = activity.getSystemService(PowerManager.class);
         mToken = activity.getIntent().getByteArrayExtra(
                 ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
     }
@@ -120,11 +116,6 @@
             if (mListener != null) {
                 mListener.onEnrollmentProgressChange(mEnrollmentSteps, remaining);
             }
-
-            // Treat fingerprint like a touch event
-            mPowerManager.userActivity(SystemClock.uptimeMillis(),
-                    PowerManager.USER_ACTIVITY_EVENT_OTHER,
-                    PowerManager.USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS);
         }
 
         @Override
