diff --git a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
index ae5621c..5dbe499 100644
--- a/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/CameraActivity.kt
@@ -6,7 +6,6 @@
 package org.lineageos.aperture
 
 import android.animation.ValueAnimator
-import android.annotation.SuppressLint
 import android.app.KeyguardManager
 import android.content.BroadcastReceiver
 import android.content.Context
@@ -314,7 +313,7 @@
             } ?: location
         }
 
-        @SuppressLint("MissingPermission")
+        @Suppress("MissingPermission")
         fun register() {
             // Reset cached location
             location = null
@@ -510,7 +509,7 @@
     private val launchedViaVoiceIntent
         get() = isVoiceInteractionRoot && intent.hasCategory(Intent.CATEGORY_VOICE)
 
-    @SuppressLint("ClickableViewAccessibility")
+    @Suppress("ClickableViewAccessibility")
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
@@ -525,7 +524,7 @@
         ) {
             setShowWhenLocked(true)
 
-            @SuppressLint("SourceLockedOrientationActivity")
+            @Suppress("SourceLockedOrientationActivity")
             requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
         }
 
@@ -1999,7 +1998,7 @@
     /**
      * Set the specified microphone mode, saving the value to shared prefs and updating the icon
      */
-    @SuppressLint("MissingPermission")
+    @Suppress("MissingPermission")
     private fun setMicrophoneMode(microphoneMode: Boolean) {
         videoAudioConfig = AudioConfig.create(microphoneMode)
         videoRecording?.muted = !microphoneMode
diff --git a/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt b/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
index bd4bc27..049e39f 100644
--- a/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/SettingsActivity.kt
@@ -5,7 +5,6 @@
 
 package org.lineageos.aperture
 
-import android.annotation.SuppressLint
 import android.graphics.Color
 import android.graphics.drawable.ColorDrawable
 import android.os.Bundle
@@ -128,7 +127,7 @@
                 true
             }
 
-        @SuppressLint("UnsafeOptInUsageError")
+        @Suppress("UnsafeOptInUsageError")
         override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
             setPreferencesFromResource(R.xml.root_preferences, rootKey)
             saveLocation?.let {
diff --git a/app/src/main/java/org/lineageos/aperture/ui/HorizontalSlider.kt b/app/src/main/java/org/lineageos/aperture/ui/HorizontalSlider.kt
index 1cbd7db..c550ecc 100644
--- a/app/src/main/java/org/lineageos/aperture/ui/HorizontalSlider.kt
+++ b/app/src/main/java/org/lineageos/aperture/ui/HorizontalSlider.kt
@@ -5,7 +5,6 @@
 
 package org.lineageos.aperture.ui
 
-import android.annotation.SuppressLint
 import android.content.Context
 import android.graphics.RectF
 import android.util.AttributeSet
@@ -43,7 +42,7 @@
         return Triple(cx, cy, height / 2.15f)
     }
 
-    @SuppressLint("ClickableViewAccessibility")
+    @Suppress("ClickableViewAccessibility")
     override fun onTouchEvent(event: MotionEvent?): Boolean {
         super.onTouchEvent(event)
 
diff --git a/app/src/main/java/org/lineageos/aperture/ui/LensSelectorLayout.kt b/app/src/main/java/org/lineageos/aperture/ui/LensSelectorLayout.kt
index b64ae75..5fcf155 100644
--- a/app/src/main/java/org/lineageos/aperture/ui/LensSelectorLayout.kt
+++ b/app/src/main/java/org/lineageos/aperture/ui/LensSelectorLayout.kt
@@ -5,7 +5,6 @@
 
 package org.lineageos.aperture.ui
 
-import android.annotation.SuppressLint
 import android.content.Context
 import android.icu.text.DecimalFormat
 import android.icu.text.DecimalFormatSymbols
@@ -156,7 +155,7 @@
         }
     }
 
-    @SuppressLint("SetTextI18n")
+    @Suppress("SetTextI18n")
     private fun updateButtonAttributes(button: Button, currentCamera: Boolean) {
         button.isEnabled = !currentCamera
         val formattedZoomRatio = formatZoomRatio(buttonToApproximateZoomRatio[button]!!)
diff --git a/app/src/main/java/org/lineageos/aperture/ui/VerticalSlider.kt b/app/src/main/java/org/lineageos/aperture/ui/VerticalSlider.kt
index 25785b7..713139c 100644
--- a/app/src/main/java/org/lineageos/aperture/ui/VerticalSlider.kt
+++ b/app/src/main/java/org/lineageos/aperture/ui/VerticalSlider.kt
@@ -5,7 +5,6 @@
 
 package org.lineageos.aperture.ui
 
-import android.annotation.SuppressLint
 import android.content.Context
 import android.graphics.RectF
 import android.util.AttributeSet
@@ -16,7 +15,7 @@
 class VerticalSlider @JvmOverloads constructor(
     context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : Slider(context, attrs, defStyleAttr) {
-    @SuppressLint("ClickableViewAccessibility")
+    @Suppress("ClickableViewAccessibility")
     override fun onTouchEvent(event: MotionEvent?): Boolean {
         super.onTouchEvent(event)
 
diff --git a/app/src/main/java/org/lineageos/aperture/utils/CameraSoundsUtils.kt b/app/src/main/java/org/lineageos/aperture/utils/CameraSoundsUtils.kt
index 1139b64..81248f0 100644
--- a/app/src/main/java/org/lineageos/aperture/utils/CameraSoundsUtils.kt
+++ b/app/src/main/java/org/lineageos/aperture/utils/CameraSoundsUtils.kt
@@ -5,7 +5,6 @@
 
 package org.lineageos.aperture.utils
 
-import android.annotation.SuppressLint
 import android.content.SharedPreferences
 import android.content.res.Resources
 import android.media.MediaActionSound
@@ -42,7 +41,7 @@
 
     companion object {
         val mustPlaySounds: Boolean
-            @SuppressLint("DiscouragedApi")
+            @Suppress("DiscouragedApi")
             get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                 MediaActionSound.mustPlayShutterSound()
             } else {
diff --git a/app/src/main/java/org/lineageos/aperture/utils/RROResources.kt b/app/src/main/java/org/lineageos/aperture/utils/RROResources.kt
index a531cc7..2e624d9 100644
--- a/app/src/main/java/org/lineageos/aperture/utils/RROResources.kt
+++ b/app/src/main/java/org/lineageos/aperture/utils/RROResources.kt
@@ -5,13 +5,12 @@
 
 package org.lineageos.aperture.utils
 
-import android.annotation.SuppressLint
 import android.content.Context
 
 class RROResources private constructor(val context: Context, private val packageName: String) {
     private val resources = context.packageManager.getResourcesForApplication(packageName)
 
-    @SuppressLint("DiscouragedApi")
+    @Suppress("DiscouragedApi")
     private fun getIdentifier(id: Int) =
         resources.getIdentifier(
             context.resources.getResourceEntryName(id),
