diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9eab7f9..d8e62d0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,34 +25,92 @@
             android:required="false" />
 
         <activity
-            android:name=".MainActivity"
-            android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize"
+            android:name=".CameraActivity"
+            android:clearTaskOnLaunch="true"
+            android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize|keyboardHidden"
             android:exported="true"
             android:launchMode="singleTask"
             android:screenOrientation="nosensor"
-            android:theme="@style/Theme.Aperture.Main">
+            android:taskAffinity=".CameraActivity"
+            android:theme="@style/Theme.Aperture.Camera"
+            android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
+            <intent-filter>
+                <action android:name="android.media.action.STILL_IMAGE_CAMERA" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
 
+        <activity-alias
+            android:name=".CameraLauncher"
+            android:exported="true"
+            android:label="@string/app_name"
+            android:targetActivity=".CameraActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
+                <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
+        </activity-alias>
 
+        <activity
+            android:name=".CaptureActivity"
+            android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize|keyboardHidden"
+            android:exported="true"
+            android:screenOrientation="nosensor"
+            android:theme="@style/Theme.Aperture.Camera"
+            android:visibleToInstantApps="true"
+            android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
             <intent-filter>
                 <action android:name="android.media.action.IMAGE_CAPTURE" />
-                <action android:name="android.media.action.IMAGE_CAPTURE_SECURE" />
-                <action android:name="android.media.action.STILL_IMAGE_CAMERA" />
-                <action android:name="android.media.action.STILL_IMAGE_CAMERA_SECURE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <!-- Video camera and capture use the Camcorder label and icon. -->
+        <activity-alias
+            android:name=".VideoCamera"
+            android:exported="true"
+            android:label="@string/video_camera_label"
+            android:targetActivity=".CaptureActivity">
+            <intent-filter>
                 <action android:name="android.media.action.VIDEO_CAMERA" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
                 <action android:name="android.media.action.VIDEO_CAPTURE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity-alias>
+
+        <activity
+            android:name=".SecureCameraActivity"
+            android:clearTaskOnLaunch="true"
+            android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize|keyboardHidden"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:taskAffinity=".SecureCameraActivity"
+            android:theme="@style/Theme.Aperture.Camera"
+            android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
+            <intent-filter>
+                <action android:name="android.media.action.STILL_IMAGE_CAMERA_SECURE" />
 
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <intent-filter>
+                <action android:name="android.media.action.IMAGE_CAPTURE_SECURE" />
 
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
         </activity>
 
         <activity
             android:name=".SettingsActivity"
+            android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize|keyboardHidden"
             android:exported="false"
             android:label="@string/title_activity_settings"
             android:theme="@style/Theme.Aperture.Settings" />
diff --git a/app/src/main/java/org/lineageos/aperture/MainActivity.kt b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
similarity index 99%
rename from app/src/main/java/org/lineageos/aperture/MainActivity.kt
rename to app/src/main/java/org/lineageos/aperture/CameraActivity.kt
index 76a7138..fc077ce 100644
--- a/app/src/main/java/org/lineageos/aperture/MainActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
@@ -86,7 +86,7 @@
 @androidx.camera.camera2.interop.ExperimentalCamera2Interop
 @androidx.camera.core.ExperimentalZeroShutterLag
 @androidx.camera.view.video.ExperimentalVideo
-class MainActivity : AppCompatActivity() {
+open class CameraActivity : AppCompatActivity() {
     private val aspectRatioButton by lazy { findViewById<ToggleButton>(R.id.aspectRatioButton) }
     private val cameraModeHighlight by lazy { findViewById<MaterialButton>(R.id.cameraModeHighlight) }
     private val countDownView by lazy { findViewById<CountDownView>(R.id.countDownView) }
@@ -181,12 +181,12 @@
     private var location: Location? = null
     private val locationListener = object : LocationListener {
         override fun onLocationChanged(location: Location) {
-            val mainActivity = this@MainActivity
-            mainActivity.location = mainActivity.location?.let {
+            val cameraActivity = this@CameraActivity
+            cameraActivity.location = cameraActivity.location?.let {
                 if (it.accuracy >= location.accuracy) {
                     location
                 } else {
-                    mainActivity.location
+                    cameraActivity.location
                 }
             } ?: location
         }
@@ -251,7 +251,7 @@
 
         hideStatusBars()
 
-        setContentView(R.layout.activity_main)
+        setContentView(R.layout.activity_camera)
         setShowWhenLocked(true)
 
         // Register shortcuts
@@ -566,7 +566,7 @@
         val outputOptions = StorageUtils.getPhotoMediaStoreOutputOptions(
             contentResolver,
             ImageCapture.Metadata().apply {
-                location = this@MainActivity.location
+                location = this@CameraActivity.location
             }
         )
 
diff --git a/app/src/main/java/org/lineageos/aperture/CaptureActivity.kt b/app/src/main/java/org/lineageos/aperture/CaptureActivity.kt
new file mode 100644
index 0000000..debd6b1
--- /dev/null
+++ b/app/src/main/java/org/lineageos/aperture/CaptureActivity.kt
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2022 The LineageOS Project
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.aperture
+
+// Use a different activity for capture intents, so it can have a different
+// task affinity from others. This makes sure the regular camera activity is not
+// reused for IMAGE_CAPTURE or VIDEO_CAPTURE intents from other activities.
+@androidx.camera.camera2.interop.ExperimentalCamera2Interop
+class CaptureActivity : CameraActivity() {
+}
diff --git a/app/src/main/java/org/lineageos/aperture/SecureCameraActivity.kt b/app/src/main/java/org/lineageos/aperture/SecureCameraActivity.kt
new file mode 100644
index 0000000..5ce6697
--- /dev/null
+++ b/app/src/main/java/org/lineageos/aperture/SecureCameraActivity.kt
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2022 The LineageOS Project
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.aperture
+
+// Use a different activity for secure camera only. So it can have a different
+// task affinity from others. This makes sure non-secure camera activity is not
+// started in secure lock screen.
+@androidx.camera.camera2.interop.ExperimentalCamera2Interop
+class SecureCameraActivity : CameraActivity() {
+}
diff --git a/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt b/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
index 8b39813..6d74892 100644
--- a/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
@@ -68,7 +68,7 @@
                     Preference.OnPreferenceChangeListener { _, newValue ->
                         if (newValue as Boolean) {
                             requestLocationPermissions.launch(
-                                MainActivity.REQUIRED_PERMISSIONS_LOCATION
+                                CameraActivity.REQUIRED_PERMISSIONS_LOCATION
                             )
                         }
                         true
@@ -79,7 +79,7 @@
 
         @SuppressLint("UnsafeOptInUsageError")
         private fun allLocationPermissionsGranted() =
-            MainActivity.REQUIRED_PERMISSIONS_LOCATION.all {
+            CameraActivity.REQUIRED_PERMISSIONS_LOCATION.all {
                 ContextCompat.checkSelfPermission(
                     requireContext(), it
                 ) == PackageManager.PERMISSION_GRANTED
diff --git a/app/src/main/java/org/lineageos/aperture/utils/ShortcutsUtils.kt b/app/src/main/java/org/lineageos/aperture/utils/ShortcutsUtils.kt
index c5c6dfb..88f3ea0 100644
--- a/app/src/main/java/org/lineageos/aperture/utils/ShortcutsUtils.kt
+++ b/app/src/main/java/org/lineageos/aperture/utils/ShortcutsUtils.kt
@@ -11,7 +11,7 @@
 import android.content.pm.ShortcutInfo
 import android.content.pm.ShortcutManager
 import android.graphics.drawable.Icon
-import org.lineageos.aperture.MainActivity
+import org.lineageos.aperture.CameraActivity
 import org.lineageos.aperture.R
 
 object ShortcutsUtils {
@@ -30,7 +30,7 @@
                 .setLongLabel(context.getString(R.string.shortcut_selfie))
                 .setIcon(Icon.createWithResource(context, R.drawable.ic_shortcut_selfie))
                 .setIntent(
-                    Intent(context, MainActivity::class.java)
+                    Intent(context, CameraActivity::class.java)
                         .setAction(SHORTCUT_ID_SELFIE)
                         .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
                 )
@@ -40,7 +40,7 @@
                 .setLongLabel(context.getString(R.string.shortcut_video))
                 .setIcon(Icon.createWithResource(context, R.drawable.ic_shortcut_video))
                 .setIntent(
-                    Intent(context, MainActivity::class.java)
+                    Intent(context, CameraActivity::class.java)
                         .setAction(SHORTCUT_ID_VIDEO)
                         .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
                 )
@@ -50,7 +50,7 @@
                 .setLongLabel(context.getString(R.string.shortcut_qr))
                 .setIcon(Icon.createWithResource(context, R.drawable.ic_shortcut_qr))
                 .setIntent(
-                    Intent(context, MainActivity::class.java)
+                    Intent(context, CameraActivity::class.java)
                         .setAction(SHORTCUT_ID_QR)
                         .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
                 )
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_camera.xml
similarity index 99%
rename from app/src/main/res/layout/activity_main.xml
rename to app/src/main/res/layout/activity_camera.xml
index 4dee24b..90d3103 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_camera.xml
@@ -5,7 +5,7 @@
     android:id="@+id/mainLayout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".MainActivity">
+    tools:context=".CameraActivity">
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/secondaryBarLayout"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a5d0436..63d87b7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,5 +1,7 @@
 <resources>
+    <!-- App/Activities -->
     <string name="app_name">Camera</string>
+    <string name="video_camera_label">Camcorder</string>
 
     <!-- Button descriptions -->
     <string name="aspect_ratio_button_description">Aspect ratio</string>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 3733931..0806477 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -19,7 +19,7 @@
     </style>
 
     <!-- Main activity theme. -->
-    <style name="Theme.Aperture.Main" parent="Theme.Aperture">
+    <style name="Theme.Aperture.Camera" parent="Theme.Aperture">
         <item name="android:windowBackground">?attr/colorOnPrimary</item>
         <item name="windowActionBar">false</item>
         <item name="windowNoTitle">true</item>
