diff --git a/app/build.gradle b/app/build.gradle index 325b6a5..8dfa293 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "me.lucky.red" minSdk 29 targetSdk 32 - versionCode 2 - versionName "1.0.1" + versionCode 3 + versionName "1.0.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/me/lucky/red/CallRedirectionService.kt b/app/src/main/java/me/lucky/red/CallRedirectionService.kt index 46ed0fd..f01473f 100644 --- a/app/src/main/java/me/lucky/red/CallRedirectionService.kt +++ b/app/src/main/java/me/lucky/red/CallRedirectionService.kt @@ -21,7 +21,7 @@ class CallRedirectionService : CallRedirectionService() { ) } - private lateinit var prefs: Preferences + lateinit var prefs: Preferences private lateinit var window: PopupWindow private var connectivityManager: ConnectivityManager? = null @@ -30,6 +30,11 @@ class CallRedirectionService : CallRedirectionService() { init() } + override fun onDestroy() { + super.onDestroy() + window.cancel() + } + private fun init() { prefs = Preferences(this) window = PopupWindow(this) diff --git a/app/src/main/java/me/lucky/red/MainActivity.kt b/app/src/main/java/me/lucky/red/MainActivity.kt index 8d571c9..cf2d784 100644 --- a/app/src/main/java/me/lucky/red/MainActivity.kt +++ b/app/src/main/java/me/lucky/red/MainActivity.kt @@ -44,12 +44,19 @@ class MainActivity : AppCompatActivity() { prefs = Preferences(this) roleManager = getSystemService(RoleManager::class.java) binding.apply { + redirectionDelay.value = (prefs.redirectionDelay / 1000).toFloat() toggle.isChecked = prefs.isServiceEnabled } } private fun setup() { binding.apply { + redirectionDelay.setLabelFormatter { + String.format("%.1f", it) + } + redirectionDelay.addOnChangeListener { _, value, _ -> + prefs.redirectionDelay = (value * 1000).toLong() + } toggle.setOnCheckedChangeListener { _, isChecked -> if (isChecked && !hasPermissions()) { toggle.isChecked = false diff --git a/app/src/main/java/me/lucky/red/PopupWindow.kt b/app/src/main/java/me/lucky/red/PopupWindow.kt index 6156826..07009b2 100644 --- a/app/src/main/java/me/lucky/red/PopupWindow.kt +++ b/app/src/main/java/me/lucky/red/PopupWindow.kt @@ -14,10 +14,6 @@ import java.util.* import kotlin.concurrent.timerTask class PopupWindow(private val service: CallRedirectionService) { - companion object { - private const val CANCEL_DELAY = 2000L - } - private val windowManager = service .applicationContext .getSystemService(WindowManager::class.java) @@ -41,9 +37,8 @@ class PopupWindow(private val service: CallRedirectionService) { init { view.setOnClickListener { - timer?.cancel() + cancel() service.placeCallUnmodified() - remove() } } @@ -70,7 +65,7 @@ class PopupWindow(private val service: CallRedirectionService) { return@timerTask } service.cancelCall() - }, CANCEL_DELAY) + }, service.prefs.redirectionDelay) view.findViewById(R.id.description).text = String.format( service.getString(R.string.popup), service.getString(destinationId), @@ -104,4 +99,9 @@ class PopupWindow(private val service: CallRedirectionService) { } catch (exc: WindowManager.BadTokenException) { return false } return true } + + fun cancel() { + timer?.cancel() + remove() + } } diff --git a/app/src/main/java/me/lucky/red/Preferences.kt b/app/src/main/java/me/lucky/red/Preferences.kt index 1c617e0..0ac37f5 100644 --- a/app/src/main/java/me/lucky/red/Preferences.kt +++ b/app/src/main/java/me/lucky/red/Preferences.kt @@ -7,6 +7,7 @@ import androidx.preference.PreferenceManager class Preferences(ctx: Context) { companion object { private const val SERVICE_ENABLED = "service_enabled" + private const val REDIRECTION_DELAY = "redirection_delay" } private val prefs = PreferenceManager.getDefaultSharedPreferences(ctx) @@ -14,4 +15,8 @@ class Preferences(ctx: Context) { var isServiceEnabled: Boolean get() = prefs.getBoolean(SERVICE_ENABLED, false) set(value) = prefs.edit { putBoolean(SERVICE_ENABLED, value) } + + var redirectionDelay: Long + get() = prefs.getLong(REDIRECTION_DELAY, 2000L) + set(value) = prefs.edit { putLong(REDIRECTION_DELAY, value) } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 86637e6..1a2bb9c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -16,6 +16,39 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + + + + + + + + Перенаправление в %1$s Signal Telegram + Задержка до того, как звонок будет перенаправлен. \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 79d8666..e519080 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,4 +5,5 @@ Redirecting to %1$s Signal Telegram + Delay before a call will be redirected. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 93728ce..9262dea 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.1.0' + classpath 'com.android.tools.build:gradle:7.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10" // NOTE: Do not place your application dependencies here; they belong diff --git a/fastlane/metadata/android/en-US/changelogs/3.txt b/fastlane/metadata/android/en-US/changelogs/3.txt new file mode 100644 index 0000000..9c13478 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.txt @@ -0,0 +1 @@ +redirection delay selector diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png index bca97f5..4f2accb 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png differ