diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e3b6ef8..ca591be 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,10 +23,6 @@
 			android:theme="@style/Theme.FaceDetect.NoActionBar"
 			android:exported="false"/>
 		<activity
-			android:name=".ServiceActivity"
-			android:theme="@style/Theme.FaceDetect.NoActionBar"
-			android:exported="false" />
-		<activity
 			android:name=".SettingsActivity"
 			android:exported="false"/>
 		<activity
diff --git a/app/src/main/java/com/libremobileos/facedetect/ServiceActivity.java b/app/src/main/java/com/libremobileos/facedetect/ServiceActivity.java
deleted file mode 100644
index 0e1d5d2..0000000
--- a/app/src/main/java/com/libremobileos/facedetect/ServiceActivity.java
+++ /dev/null
@@ -1,386 +0,0 @@
-package com.libremobileos.facedetect;
-
-import static android.os.Process.THREAD_PRIORITY_FOREGROUND;
-import static com.libremobileos.facedetect.BuildConfig.DEBUG;
-
-import androidx.annotation.OptIn;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.camera.core.CameraSelector;
-import androidx.camera.core.ExperimentalGetImage;
-import androidx.camera.core.ImageAnalysis;
-import androidx.camera.lifecycle.ProcessCameraProvider;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.graphics.Matrix;
-import android.graphics.RectF;
-import android.hardware.biometrics.face.V1_0.FaceAcquiredInfo;
-import android.hardware.biometrics.face.V1_0.Feature;
-import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback;
-import android.hardware.biometrics.face.V1_0.OptionalBool;
-import android.hardware.biometrics.face.V1_0.OptionalUint64;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.HwBinder;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.util.Log;
-import android.util.Pair;
-import android.util.Size;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.TextView;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import com.libremobileos.yifan.face.FaceDataEncoder;
-import com.libremobileos.yifan.face.FaceRecognizer;
-import com.libremobileos.yifan.face.FaceStorageBackend;
-import com.libremobileos.yifan.face.SharedPreferencesFaceStorageBackend;
-
-import android.hardware.biometrics.face.V1_0.IBiometricsFace;
-import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback;
-import android.hardware.biometrics.face.V1_0.Status;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-
-public class ServiceActivity extends AppCompatActivity {
-	private String TAG = "FaceUnlockService";
-	private long kDeviceId = 123; // Arbitrary value.
-	private long kAuthenticatorId = 987; // Arbitrary value.
-
-	private static final int MSG_CHALLENGE_TIMEOUT = 100;
-
-	private IBiometricsFaceClientCallback mCallback;
-	private FaceRecognizer faceRecognizer;
-	private FaceHandler mWorkHandler;
-	private Context mContext;
-	private long mChallenge = 0;
-	private int mChallengeCount = 0;
-	private ListenableFuture<ProcessCameraProvider> cameraProviderFuture;
-	protected final Size desiredInputSize = new Size(640, 480);
-	protected int width, height;
-
-
-	private class BiometricsFace extends IBiometricsFace.Stub {
-		@Override
-		public OptionalUint64 setCallback(IBiometricsFaceClientCallback clientCallback) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "setCallback");
-
-			mCallback = clientCallback;
-			OptionalUint64 ret = new OptionalUint64();
-			ret.value = kDeviceId;
-			ret.status = Status.OK;
-			return ret;
-		}
-
-		@Override
-		public int setActiveUser(int userId, String storePath) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "setActiveUser " + userId + " " + storePath);
-
-			return Status.OK;
-		}
-
-		@Override
-		public OptionalUint64 generateChallenge(int challengeTimeoutSec) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "generateChallenge + " + challengeTimeoutSec);
-
-			if (mChallengeCount <= 0 || mChallenge == 0) {
-				mChallenge = new Random().nextLong();
-			}
-			mChallengeCount += 1;
-			mWorkHandler.removeMessages(MSG_CHALLENGE_TIMEOUT);
-			mWorkHandler.sendEmptyMessageDelayed(MSG_CHALLENGE_TIMEOUT, challengeTimeoutSec * 1000);
-
-			OptionalUint64 ret = new OptionalUint64();
-			ret.value = mChallenge;
-			ret.status = Status.OK;
-
-			return ret;
-		}
-
-		@Override
-		public int enroll(ArrayList<Byte> hat, int timeoutSec, ArrayList<Integer> disabledFeatures) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "enroll");
-
-			return Status.NOT_ENROLLED;
-		}
-
-		@Override
-		public int revokeChallenge() throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "revokeChallenge");
-
-			mChallengeCount -= 1;
-			if (mChallengeCount <= 0 && mChallenge != 0) {
-				mChallenge = 0;
-				mChallengeCount = 0;
-				mWorkHandler.removeMessages(MSG_CHALLENGE_TIMEOUT);
-			}
-			return Status.OK;
-		}
-
-		@Override
-		public int setFeature(int feature, boolean enabled, ArrayList<Byte> hat, int faceId) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "setFeature " + feature + " " + enabled + " " + faceId);
-
-			// We don't do that here;
-
-			return Status.OK;
-		}
-
-		@Override
-		public OptionalBool getFeature(int feature, int faceId) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "getFeature " + feature + " " + faceId);
-
-			OptionalBool ret = new OptionalBool();
-			switch (feature) {
-				case Feature.REQUIRE_ATTENTION:
-					ret.value = false;
-					ret.status = Status.OK;
-					break;
-				case Feature.REQUIRE_DIVERSITY:
-					ret.value = true;
-					ret.status = Status.OK;
-					break;
-				default:
-					ret.value = false;
-					ret.status = Status.ILLEGAL_ARGUMENT;
-					break;
-			}
-			return ret;
-		}
-
-		@Override
-		public OptionalUint64 getAuthenticatorId() throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "getAuthenticatorId");
-
-			OptionalUint64 ret = new OptionalUint64();
-			ret.value = kAuthenticatorId;
-			ret.status = Status.OK;
-			return ret;
-		}
-
-		@Override
-		public int cancel() throws RemoteException {
-			// Not sure what to do here.
-			return 0;
-		}
-
-		@Override
-		public int enumerate() throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "enumerate");
-
-			mWorkHandler.post(() -> {
-				try {
-					ArrayList<Integer> faceIds = new ArrayList<>();
-					RemoteFaceServiceClient.connect(mContext, faced -> {
-						if (faced.isEnrolled()) {
-							faceIds.add(0);
-							Log.d(TAG, "enumerate face 0 added");
-						}
-					});
-
-					if (mCallback != null) {
-						mCallback.onEnumerate(kDeviceId, faceIds, 0);
-					}
-				} catch (RemoteException e) {
-					e.printStackTrace();
-				}
-			});
-
-			return Status.OK;
-		}
-
-		@Override
-		public int remove(int faceId) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "remove " + faceId);
-
-			mWorkHandler.post(() -> {
-				RemoteFaceServiceClient.connect(mContext, faced -> {
-					if (faceId == 0 && faced.isEnrolled()) {
-						faced.unenroll();
-						ArrayList<Integer> faceIds = new ArrayList<>();
-						faceIds.add(faceId);
-						try {
-							if (mCallback != null)
-								mCallback.onRemoved(kDeviceId, faceIds, 0);
-						} catch (RemoteException e) {
-							e.printStackTrace();
-						}
-					}
-				});
-			});
-			return Status.OK;
-		}
-
-		@Override
-		public int authenticate(long operationId) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "authenticate " + operationId);
-
-
-			mWorkHandler.post(() -> {
-				// CameraX boilerplate (create camera connection)
-				cameraProviderFuture = ProcessCameraProvider.getInstance(mContext);
-				cameraProviderFuture.addListener(() -> {
-					try {
-						ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
-						bindCamera(cameraProvider);
-					} catch (ExecutionException | InterruptedException e) {
-						// No errors need to be handled for this Future.
-						// This should never be reached.
-					}
-				}, getMainExecutor());
-			});
-			return Status.OK;
-		}
-
-		@Override
-		public int userActivity() throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "userActivity");
-
-			return Status.OK;
-		}
-
-		@Override
-		public int resetLockout(ArrayList<Byte> hat) throws RemoteException {
-			if (DEBUG)
-				Log.d(TAG, "resetLockout");
-
-			return Status.OK;
-		}
-	}
-
-	private void bindCamera(ProcessCameraProvider cameraProvider) {
-		// Which camera to use
-		int selectedCamera = CameraSelector.LENS_FACING_FRONT;
-		CameraSelector cameraSelector = new CameraSelector.Builder()
-				.requireLensFacing(selectedCamera)
-				.build();
-
-		// Cameras give us landscape images. If we are in portrait mode
-		// (and want to process a portrait image), swap width/height to
-		// make the image portrait.
-		if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
-			width = desiredInputSize.getHeight();
-			height = desiredInputSize.getWidth();
-		} else {
-			width = desiredInputSize.getWidth();
-			height = desiredInputSize.getHeight();
-		}
-
-		// Set up CameraX boilerplate and configure it to drop frames if we can't keep up
-		ImageAnalysis imageAnalysis =
-				new ImageAnalysis.Builder()
-						.setTargetResolution(new Size(width, height))
-						.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
-						.build();
-
-		onSetCameraCallback(imageAnalysis);
-
-		// Bind all objects together
-		/* Camera camera = */ cameraProvider.bindToLifecycle(this, cameraSelector, imageAnalysis);
-	}
-
-	@OptIn(markerClass = ExperimentalGetImage.class)
-	protected void onSetCameraCallback(ImageAnalysis imageAnalysis) {
-		imageAnalysis.setAnalyzer(getMainExecutor(), imageProxy -> {
-			// Convert CameraX Image to Bitmap and process it
-			// Return list of detected faces
-			List<FaceRecognizer.Face> data = faceRecognizer.recognize(BitmapUtils.getBitmap(imageProxy));
-
-			for (FaceRecognizer.Face face : data) {
-				RectF boundingBox = new RectF(face.getLocation());
-
-				// Camera is frontal so the image is flipped horizontally,
-				// so flip it again.
-				Matrix flip = new Matrix();
-				flip.postScale(-1, 1, width / 2.0f, height / 2.0f);
-				flip.mapRect(boundingBox);
-
-				try {
-					if (mCallback != null) {
-						mCallback.onAcquired(kDeviceId, 0, FaceAcquiredInfo.GOOD, 0);
-						// Do we have any match?
-						if (face.isRecognized()) {
-							mCallback.onAuthenticated(kDeviceId, 0, 0, new ArrayList<>());
-							imageAnalysis.clearAnalyzer();
-						}
-					}
-				} catch (RemoteException e) {
-					e.printStackTrace();
-				}
-			}
-
-			// Clean up
-			imageProxy.close();
-		});
-
-		// Store registered Faces in Memory
-		//faceStorage = new VolatileFaceStorageBackend();
-		FaceStorageBackend faceStorage = new SharedPreferencesFaceStorageBackend(getSharedPreferences("faces", 0));
-
-		// Create AI-based face detection
-		faceRecognizer = FaceRecognizer.create(this,
-				faceStorage, /* face data storage */
-				0.6f, /* minimum confidence to consider object as face */
-				width, /* bitmap width */
-				height, /* bitmap height */
-				0, /* CameraX rotates the image for us, so we chose to IGNORE sensorRotation altogether */
-				0.7f, /* maximum distance (to saved face model, not from camera) to track face */
-				1 /* minimum model count to track face */
-		);
-	}
-
-	private class FaceHandler extends Handler {
-		public FaceHandler(Looper looper) {
-			super(looper);
-		}
-
-		@Override
-		public void handleMessage(Message message) {
-			if (message.what == MSG_CHALLENGE_TIMEOUT) {
-				mChallenge = 0;
-				mChallengeCount = 0;
-			}
-		}
-	}
-
-	@Override
-	protected void onCreate(Bundle savedInstanceState) {
-		super.onCreate(savedInstanceState);
-		setContentView(R.layout.activity_service);
-		TextView status = findViewById(R.id.status_textView);
-
-		HandlerThread handlerThread = new HandlerThread(TAG, THREAD_PRIORITY_FOREGROUND);
-		handlerThread.start();
-		mWorkHandler = new FaceHandler(handlerThread.getLooper());
-		mContext = this;
-
-		BiometricsFace biometricsFace = new BiometricsFace();
-		try {
-			biometricsFace.registerAsService("default");
-			status.setText("Service registered");
-		} catch (RemoteException e) {
-			e.printStackTrace();
-		}
-		//HwBinder.joinRpcThreadpool();
-	}
-}
diff --git a/app/src/main/java/com/libremobileos/facedetect/SettingsActivity.java b/app/src/main/java/com/libremobileos/facedetect/SettingsActivity.java
index c55a638..3d3263c 100644
--- a/app/src/main/java/com/libremobileos/facedetect/SettingsActivity.java
+++ b/app/src/main/java/com/libremobileos/facedetect/SettingsActivity.java
@@ -49,7 +49,6 @@
 			applyMaterial3(getPreferenceScreen());
 			SwitchPreferenceCompat sp = findPreference("enable");
 			SwitchPreferenceCompat se = findPreference("secure");
-			Preference ss = findPreference("startservice");
 			Preference rescan = findPreference("rescan");
 			assert sp != null; assert se != null; assert rescan != null;
 			RemoteFaceServiceClient.connect(getActivity(), faced -> {
@@ -61,7 +60,6 @@
 					se.setChecked(isEnrolled && isSecure);
 					sp.setChecked(isEnrolled);
 					sp.setEnabled(true);
-					ss.setEnabled(true);
 					sp.setOnPreferenceChangeListener((preference, newValue) -> {
 						if ((Boolean) newValue) {
 							startActivity(new Intent(getActivity(), EnrollActivity.class));
@@ -93,11 +91,6 @@
 						se.setChecked((Boolean) newValue);
 						return false;
 					});
-					ss.setOnPreferenceClickListener(preference -> {
-						startActivity(new Intent(getActivity(), ServiceActivity.class));
-						requireActivity().finish();
-						return false;
-					});
 				});
 			});
 		}
diff --git a/app/src/main/res/layout/activity_service.xml b/app/src/main/res/layout/activity_service.xml
deleted file mode 100644
index e7cffea..0000000
--- a/app/src/main/res/layout/activity_service.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-	xmlns:app="http://schemas.android.com/apk/res-auto"
-	xmlns:tools="http://schemas.android.com/tools"
-	android:layout_width="match_parent"
-	android:layout_height="match_parent"
-	tools:context=".EnrollActivity">
-
-	<ImageView
-		android:id="@+id/imageView"
-		android:layout_width="wrap_content"
-		android:layout_height="wrap_content"
-		app:tint="?attr/colorAccent"
-		app:layout_constraintBottom_toBottomOf="parent"
-		app:layout_constraintEnd_toEndOf="parent"
-		app:layout_constraintStart_toStartOf="parent"
-		app:layout_constraintTop_toTopOf="parent"
-		app:layout_constraintVertical_bias="0.05"
-		app:srcCompat="@drawable/baseline_face_retouching_natural_24"
-		android:contentDescription="@null" />
-
-	<TextView
-		android:id="@+id/textView"
-		android:layout_width="wrap_content"
-		android:layout_height="wrap_content"
-		android:text="@string/face_unlock"
-		android:textAppearance="@style/TextAppearance.Material3.HeadlineLarge"
-		android:textColor="?attr/colorAccent"
-		app:layout_constraintEnd_toEndOf="parent"
-		app:layout_constraintStart_toStartOf="parent"
-		app:layout_constraintTop_toBottomOf="@+id/imageView" />
-
-	<TextView
-		android:id="@+id/status_textView"
-		android:layout_width="wrap_content"
-		android:layout_height="wrap_content"
-		android:text="Status"
-		app:layout_constraintBottom_toBottomOf="parent"
-		app:layout_constraintEnd_toEndOf="parent"
-		app:layout_constraintStart_toStartOf="parent"
-		app:layout_constraintTop_toTopOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
index 22795fb..e975118 100644
--- a/app/src/main/res/xml/root_preferences.xml
+++ b/app/src/main/res/xml/root_preferences.xml
@@ -16,12 +16,6 @@
 			app:title="Re-scan face"
 			android:summary="Improve detection by scanning your face in different poses and light"/>
 
-		<Preference
-			app:enabled="false"
-			app:key="startservice"
-			app:title="Start Service"
-			android:summary="Register hidl service"/>
-
 	</PreferenceCategory>
 
 	<PreferenceCategory app:title="Advanced settings">
