mirror of
https://github.com/SimpleMobileTools/Simple-Flashlight.git
synced 2025-02-10 17:00:36 +01:00
Change base for all activities to ComponentActivity
This commit is contained in:
parent
81096e35a6
commit
132b469b44
@ -4,6 +4,7 @@ import android.app.Application
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.runtime.getValue
|
||||
@ -24,7 +25,7 @@ import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class BrightDisplayActivity : SimpleActivity() {
|
||||
class BrightDisplayActivity : ComponentActivity() {
|
||||
private val viewModel by viewModels<BrightDisplayViewModel>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@ -35,7 +36,6 @@ class BrightDisplayActivity : SimpleActivity() {
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN
|
||||
)
|
||||
|
||||
useDynamicTheme = false
|
||||
super.onCreate(savedInstanceState)
|
||||
enableEdgeToEdgeSimple()
|
||||
setContent {
|
||||
|
@ -1,24 +1,32 @@
|
||||
package com.simplemobiletools.flashlight.activities
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.AlarmManager
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.pm.ShortcutInfo
|
||||
import android.graphics.drawable.Icon
|
||||
import android.graphics.drawable.LayerDrawable
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.ManagedActivityResultLauncher
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.google.android.material.math.MathUtils
|
||||
import com.simplemobiletools.commons.compose.extensions.onEventValue
|
||||
import com.simplemobiletools.commons.compose.theme.AppThemeSurface
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
@ -29,6 +37,7 @@ import com.simplemobiletools.flashlight.BuildConfig
|
||||
import com.simplemobiletools.flashlight.R
|
||||
import com.simplemobiletools.flashlight.dialogs.SleepTimerCustomDialog
|
||||
import com.simplemobiletools.flashlight.extensions.config
|
||||
import com.simplemobiletools.flashlight.extensions.startAboutActivity
|
||||
import com.simplemobiletools.flashlight.helpers.*
|
||||
import com.simplemobiletools.flashlight.models.Events
|
||||
import com.simplemobiletools.flashlight.screens.MainScreen
|
||||
@ -41,7 +50,7 @@ import org.greenrobot.eventbus.ThreadMode
|
||||
import java.util.*
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class MainActivity : SimpleActivity() {
|
||||
class MainActivity : ComponentActivity() {
|
||||
companion object {
|
||||
private const val MAX_STROBO_DELAY = 2000L
|
||||
private const val MIN_STROBO_DELAY = 10L
|
||||
@ -51,7 +60,6 @@ class MainActivity : SimpleActivity() {
|
||||
private val viewModel by viewModels<MainViewModel>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
appLaunched(BuildConfig.APPLICATION_ID)
|
||||
|
||||
@ -77,6 +85,27 @@ class MainActivity : SimpleActivity() {
|
||||
val stroboscopeBarVisible by viewModel.stroboscopeBarVisible.collectAsStateWithLifecycle(false)
|
||||
val stroboscopeBarValue by viewModel.stroboscopeBarValue.collectAsStateWithLifecycle()
|
||||
|
||||
val sosPermissionLauncher = rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.RequestPermission(),
|
||||
onResult = {
|
||||
if (it) {
|
||||
cameraPermissionGranted(true)
|
||||
} else {
|
||||
toast(R.string.camera_permission)
|
||||
}
|
||||
}
|
||||
)
|
||||
val stroboscopePermissionLauncher = rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.RequestPermission(),
|
||||
onResult = {
|
||||
if (it) {
|
||||
cameraPermissionGranted(false)
|
||||
} else {
|
||||
toast(R.string.camera_permission)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
MainScreen(
|
||||
timerText = timerText,
|
||||
timerVisible = timerVisible,
|
||||
@ -90,12 +119,12 @@ class MainActivity : SimpleActivity() {
|
||||
showSosButton = showSosButton,
|
||||
sosActive = sosActive,
|
||||
onSosButtonPress = {
|
||||
toggleStroboscope(true)
|
||||
toggleStroboscope(true, sosPermissionLauncher)
|
||||
},
|
||||
showStroboscopeButton = showStroboscopeButton,
|
||||
stroboscopeActive = stroboscopeActive,
|
||||
onStroboscopeButtonPress = {
|
||||
toggleStroboscope(false)
|
||||
toggleStroboscope(false, stroboscopePermissionLauncher)
|
||||
},
|
||||
showBrightnessBar = brightnessBarVisible,
|
||||
brightnessBarValue = brightnessBarValue,
|
||||
@ -159,17 +188,23 @@ class MainActivity : SimpleActivity() {
|
||||
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
|
||||
}
|
||||
|
||||
private fun toggleStroboscope(isSOS: Boolean) {
|
||||
private fun checkAppOnSDCard() {
|
||||
if (!baseConfig.wasAppOnSDShown && isAppInstalledOnSDCard()) {
|
||||
baseConfig.wasAppOnSDShown = true
|
||||
ConfirmationDialog(this, "", R.string.app_on_sd_card, R.string.ok, 0) {}
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleStroboscope(isSOS: Boolean, launcher: ManagedActivityResultLauncher<String, Boolean>) {
|
||||
// use the old Camera API for stroboscope, the new Camera Manager is way too slow
|
||||
if (isNougatPlus()) {
|
||||
cameraPermissionGranted(isSOS)
|
||||
} else {
|
||||
handlePermission(PERMISSION_CAMERA) {
|
||||
if (it) {
|
||||
cameraPermissionGranted(isSOS)
|
||||
} else {
|
||||
toast(R.string.camera_permission)
|
||||
}
|
||||
val permission = Manifest.permission.CAMERA
|
||||
if (ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED) {
|
||||
cameraPermissionGranted(isSOS)
|
||||
} else {
|
||||
launcher.launch(permission)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.simplemobiletools.flashlight.activities
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
@ -10,10 +11,12 @@ import com.simplemobiletools.commons.compose.extensions.enableEdgeToEdgeSimple
|
||||
import com.simplemobiletools.commons.compose.theme.AppThemeSurface
|
||||
import com.simplemobiletools.commons.helpers.IS_CUSTOMIZING_COLORS
|
||||
import com.simplemobiletools.flashlight.extensions.config
|
||||
import com.simplemobiletools.flashlight.extensions.launchChangeAppLanguageIntent
|
||||
import com.simplemobiletools.flashlight.extensions.startCustomizationActivity
|
||||
import com.simplemobiletools.flashlight.screens.SettingsScreen
|
||||
import java.util.Locale
|
||||
|
||||
class SettingsActivity : SimpleActivity() {
|
||||
class SettingsActivity : ComponentActivity() {
|
||||
private val preferences by lazy { config }
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
@ -4,6 +4,7 @@ import android.app.Activity
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.runtime.getValue
|
||||
@ -20,13 +21,12 @@ import com.simplemobiletools.flashlight.extensions.config
|
||||
import com.simplemobiletools.flashlight.helpers.MyWidgetBrightDisplayProvider
|
||||
import com.simplemobiletools.flashlight.screens.WidgetConfigureScreen
|
||||
|
||||
class WidgetBrightDisplayConfigureActivity : SimpleActivity() {
|
||||
class WidgetBrightDisplayConfigureActivity : ComponentActivity() {
|
||||
private val viewModel by viewModels<WidgetConfigureViewModel>()
|
||||
|
||||
private var mFeatureLockedDialog: FeatureLockedDialog? = null
|
||||
|
||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||
useDynamicTheme = false
|
||||
super.onCreate(savedInstanceState)
|
||||
setResult(Activity.RESULT_CANCELED)
|
||||
|
||||
|
@ -4,6 +4,7 @@ import android.app.Activity
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.viewModels
|
||||
import androidx.compose.runtime.getValue
|
||||
@ -21,13 +22,12 @@ import com.simplemobiletools.flashlight.extensions.updateBrightDisplayWidget
|
||||
import com.simplemobiletools.flashlight.helpers.MyWidgetTorchProvider
|
||||
import com.simplemobiletools.flashlight.screens.WidgetConfigureScreen
|
||||
|
||||
class WidgetTorchConfigureActivity : SimpleActivity() {
|
||||
class WidgetTorchConfigureActivity : ComponentActivity() {
|
||||
private val viewModel by viewModels<WidgetConfigureViewModel>()
|
||||
|
||||
private var mFeatureLockedDialog: FeatureLockedDialog? = null
|
||||
|
||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||
useDynamicTheme = false
|
||||
super.onCreate(savedInstanceState)
|
||||
setResult(Activity.RESULT_CANCELED)
|
||||
|
||||
|
@ -0,0 +1,94 @@
|
||||
package com.simplemobiletools.flashlight.extensions
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.provider.Settings
|
||||
import androidx.annotation.RequiresApi
|
||||
import com.simplemobiletools.commons.activities.AboutActivity
|
||||
import com.simplemobiletools.commons.activities.CustomizationActivity
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.extensions.baseConfig
|
||||
import com.simplemobiletools.commons.extensions.hideKeyboard
|
||||
import com.simplemobiletools.commons.extensions.launchViewIntent
|
||||
import com.simplemobiletools.commons.extensions.openDeviceSettings
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.commons.models.FAQItem
|
||||
import com.simplemobiletools.flashlight.R
|
||||
|
||||
internal fun Activity.startAboutActivity(
|
||||
appNameId: Int, licenseMask: Long, versionName: String, faqItems: ArrayList<FAQItem>, showFAQBeforeMail: Boolean,
|
||||
getAppIconIDs: ArrayList<Int> = getAppIconIDs(),
|
||||
getAppLauncherName: String = launcherName()
|
||||
) {
|
||||
hideKeyboard()
|
||||
Intent(applicationContext, AboutActivity::class.java).apply {
|
||||
putExtra(APP_ICON_IDS, getAppIconIDs)
|
||||
putExtra(APP_LAUNCHER_NAME, getAppLauncherName)
|
||||
putExtra(APP_NAME, getString(appNameId))
|
||||
putExtra(APP_LICENSES, licenseMask)
|
||||
putExtra(APP_VERSION_NAME, versionName)
|
||||
putExtra(APP_FAQ, faqItems)
|
||||
putExtra(SHOW_FAQ_BEFORE_MAIL, showFAQBeforeMail)
|
||||
startActivity(this)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun Activity.startCustomizationActivity(
|
||||
getAppIconIDs: ArrayList<Int> = getAppIconIDs(),
|
||||
getAppLauncherName: String = launcherName()
|
||||
) {
|
||||
if (!packageName.contains("slootelibomelpmis".reversed(), true)) {
|
||||
if (baseConfig.appRunCount > 100) {
|
||||
val label = "You are using a fake version of the app. For your own safety download the original one from www.simplemobiletools.com. Thanks"
|
||||
ConfirmationDialog(this, label, positive = R.string.ok, negative = 0) {
|
||||
launchViewIntent("https://play.google.com/store/apps/dev?id=9070296388022589266")
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Intent(applicationContext, CustomizationActivity::class.java).apply {
|
||||
putExtra(APP_ICON_IDS, getAppIconIDs)
|
||||
putExtra(APP_LAUNCHER_NAME, getAppLauncherName)
|
||||
startActivity(this)
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
|
||||
internal fun Activity.launchChangeAppLanguageIntent() {
|
||||
try {
|
||||
Intent(Settings.ACTION_APP_LOCALE_SETTINGS).apply {
|
||||
data = Uri.fromParts("package", packageName, null)
|
||||
startActivity(this)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
openDeviceSettings()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAppIconIDs() = arrayListOf(
|
||||
R.mipmap.ic_launcher_red,
|
||||
R.mipmap.ic_launcher_pink,
|
||||
R.mipmap.ic_launcher_purple,
|
||||
R.mipmap.ic_launcher_deep_purple,
|
||||
R.mipmap.ic_launcher_indigo,
|
||||
R.mipmap.ic_launcher_blue,
|
||||
R.mipmap.ic_launcher_light_blue,
|
||||
R.mipmap.ic_launcher_cyan,
|
||||
R.mipmap.ic_launcher_teal,
|
||||
R.mipmap.ic_launcher_green,
|
||||
R.mipmap.ic_launcher_light_green,
|
||||
R.mipmap.ic_launcher_lime,
|
||||
R.mipmap.ic_launcher_yellow,
|
||||
R.mipmap.ic_launcher_amber,
|
||||
R.mipmap.ic_launcher,
|
||||
R.mipmap.ic_launcher_deep_orange,
|
||||
R.mipmap.ic_launcher_brown,
|
||||
R.mipmap.ic_launcher_blue_grey,
|
||||
R.mipmap.ic_launcher_grey_black
|
||||
)
|
||||
|
||||
private fun Context.launcherName() = getString(R.string.app_launcher_name)
|
Loading…
x
Reference in New Issue
Block a user