diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8897347..85a2e95 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,7 +5,7 @@
-
+
@@ -98,7 +98,11 @@
+ android:foregroundServiceType="specialUse">
+
+
= Build.VERSION_CODES.M) {
- Settings.canDrawOverlays(context)
- } else true
-
- if (!hasOverlayPermission) {
- Log.i(TAG, "No overlay permission, not starting service")
- return
- }
-
- // Use goAsync() to extend receiver lifetime beyond 10s limit
val pendingResult = goAsync()
CoroutineScope(Dispatchers.IO).launch {
try {
- val wasEnabled = TranslanderApp.instance.settingsRepository.serviceEnabled.first()
+ val app = TranslanderApp.instance
+ val floatingMicEnabled = app.settingsRepository.serviceEnabled.first()
+ val audioMonitorEnabled = app.settingsRepository.audioMonitorEnabled.first()
+
+ // Check overlay permission for floating mic
+ val hasOverlayPermission = Settings.canDrawOverlays(context)
+
+ val canStartFloatingMic = floatingMicEnabled && hasOverlayPermission
+ val canStartAudioMonitor = audioMonitorEnabled
- if (wasEnabled) {
- Log.i(TAG, "Service was enabled, starting FloatingMicService")
- val serviceIntent = Intent(context, FloatingMicService::class.java)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ Log.i(TAG, "floatingMicEnabled=$floatingMicEnabled, audioMonitorEnabled=$audioMonitorEnabled, hasOverlay=$hasOverlayPermission")
+
+ if (!canStartFloatingMic && !canStartAudioMonitor) {
+ Log.i(TAG, "No services enabled, nothing to start")
+ return@launch
+ }
+
+ if (BootCompatHelper.canStartFgsFromBoot) {
+ // Pre-Android 14: can start FGS directly
+ if (canStartFloatingMic) {
+ Log.i(TAG, "Starting FloatingMicService")
+ val serviceIntent = Intent(context, FloatingMicService::class.java)
+ context.startForegroundService(serviceIntent)
+ }
+ if (canStartAudioMonitor) {
+ Log.i(TAG, "Starting AudioMonitorService")
+ val serviceIntent = Intent(context, AudioMonitorService::class.java)
context.startForegroundService(serviceIntent)
- } else {
- context.startService(serviceIntent)
}
} else {
- Log.i(TAG, "Service was not enabled, not starting")
+ // Android 14+: show single unified notification
+ Log.i(TAG, "Android 14+: showing notification instead of starting services")
+ app.serviceAlertNotification.show(R.string.service_start_services)
}
} catch (e: Exception) {
Log.e(TAG, "Failed to check service enabled state", e)
diff --git a/app/src/main/java/com/translander/service/FloatingMicService.kt b/app/src/main/java/com/translander/service/FloatingMicService.kt
index eef0f01..35db86c 100644
--- a/app/src/main/java/com/translander/service/FloatingMicService.kt
+++ b/app/src/main/java/com/translander/service/FloatingMicService.kt
@@ -346,7 +346,7 @@ class FloatingMicService : Service() {
}
private fun showFailureNotification() {
- TranslanderApp.instance.showServiceStartNotification(R.string.service_start_floating_mic)
+ TranslanderApp.instance.serviceAlertNotification.show(R.string.service_start_floating_mic)
}
private fun createNotification(): Notification {
diff --git a/app/src/main/java/com/translander/settings/SettingsActivity.kt b/app/src/main/java/com/translander/settings/SettingsActivity.kt
index 5df64ab..fe0856a 100644
--- a/app/src/main/java/com/translander/settings/SettingsActivity.kt
+++ b/app/src/main/java/com/translander/settings/SettingsActivity.kt
@@ -168,7 +168,7 @@ class SettingsActivity : ComponentActivity() {
// Revalidate model files on disk
TranslanderApp.instance.modelManager.checkModelStatus()
- // Sync floating service state
+ // Sync floating service state and restart services if needed (Android 14+ boot workaround)
val app = TranslanderApp.instance
app.applicationScope.launch {
val serviceEnabled = app.settingsRepository.serviceEnabled.first()
@@ -186,6 +186,15 @@ class SettingsActivity : ComponentActivity() {
startFloatingService()
}
}
+
+ // Restart audio monitor if enabled (needed on Android 14+ where boot start is blocked)
+ val audioMonitorEnabled = app.settingsRepository.audioMonitorEnabled.first()
+ if (audioMonitorEnabled) {
+ app.transcribeManager.setAudioMonitorEnabled(true)
+ }
+
+ // Dismiss the boot notification now that services are started
+ app.serviceAlertNotification.dismiss()
}
}
diff --git a/app/src/main/java/com/translander/transcribe/AudioMonitorService.kt b/app/src/main/java/com/translander/transcribe/AudioMonitorService.kt
index 77d117c..69c0f06 100644
--- a/app/src/main/java/com/translander/transcribe/AudioMonitorService.kt
+++ b/app/src/main/java/com/translander/transcribe/AudioMonitorService.kt
@@ -6,6 +6,7 @@ import android.app.NotificationManager
import android.app.PendingIntent
import android.app.Service
import android.content.Intent
+import android.content.pm.ServiceInfo
import android.os.Build
import android.os.Environment
import android.os.FileObserver
@@ -63,7 +64,13 @@ class AudioMonitorService : Service() {
}
try {
- startForeground(SERVICE_NOTIFICATION_ID, createServiceNotification())
+ val notification = createServiceNotification()
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ startForeground(SERVICE_NOTIFICATION_ID, notification,
+ ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE)
+ } else {
+ startForeground(SERVICE_NOTIFICATION_ID, notification)
+ }
// Dismiss any failure notification from previous boot attempt
getSystemService(android.app.NotificationManager::class.java)
?.cancel(TranslanderApp.SERVICE_ALERT_NOTIFICATION_ID)
@@ -127,7 +134,7 @@ class AudioMonitorService : Service() {
}
private fun showFailureNotification() {
- TranslanderApp.instance.showServiceStartNotification(R.string.service_start_folder_monitor)
+ TranslanderApp.instance.serviceAlertNotification.show(R.string.service_start_folder_monitor)
}
private fun createServiceNotification(): Notification {
diff --git a/app/src/main/java/com/translander/transcribe/TranscribeManager.kt b/app/src/main/java/com/translander/transcribe/TranscribeManager.kt
index bbb7ec1..575a3e6 100644
--- a/app/src/main/java/com/translander/transcribe/TranscribeManager.kt
+++ b/app/src/main/java/com/translander/transcribe/TranscribeManager.kt
@@ -2,9 +2,9 @@ package com.translander.transcribe
import android.content.Context
import android.content.Intent
-import android.os.Build
import android.util.Log
import com.translander.TranslanderApp
+import com.translander.util.BootCompatHelper
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
@@ -48,11 +48,7 @@ class TranscribeManager(private val context: Context) {
if (active) return
try {
val intent = Intent(context, AudioMonitorService::class.java)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- context.startForegroundService(intent)
- } else {
- context.startService(intent)
- }
+ context.startForegroundService(intent)
active = true
} catch (e: Exception) {
Log.e(TAG, "Failed to start AudioMonitorService", e)
@@ -88,6 +84,9 @@ class TranscribeManager(private val context: Context) {
/**
* Start all enabled triggers based on settings.
+ * On Android 14+, skips auto-start at boot since dataSync FGS is blocked.
+ * BootReceiver handles showing the notification, so we just skip here.
+ * User must open app to start services (handled in SettingsActivity.onResume).
*/
fun startEnabledTriggers() {
scope.launch {
@@ -95,7 +94,14 @@ class TranscribeManager(private val context: Context) {
val monitorEnabled = settings.audioMonitorEnabled.first()
if (monitorEnabled) {
- audioMonitorTrigger.start()
+ if (BootCompatHelper.canStartFgsFromBoot) {
+ audioMonitorTrigger.start()
+ } else {
+ // Android 14+: BootReceiver shows the notification,
+ // so we just skip starting here. Services will be started
+ // when user opens the app (SettingsActivity.onResume).
+ Log.i(TAG, "Android 14+: skipping audio monitor start at boot")
+ }
}
}
}
diff --git a/app/src/main/java/com/translander/util/BootCompatHelper.kt b/app/src/main/java/com/translander/util/BootCompatHelper.kt
new file mode 100644
index 0000000..f15609a
--- /dev/null
+++ b/app/src/main/java/com/translander/util/BootCompatHelper.kt
@@ -0,0 +1,47 @@
+package com.translander.util
+
+import android.os.Build
+
+/**
+ * Helper for Android 14+ boot compatibility.
+ * Centralizes API level checks for foreground service (FGS) restrictions.
+ *
+ * ## Android Version Restrictions Matrix
+ *
+ * | Android | API | FGS Restrictions at Boot |
+ * |---------|-----|--------------------------|
+ * | 8.0-13 | 26-33 | None - FGS starts directly from BOOT_COMPLETED |
+ * | 14 | 34 | `microphone` FGS type blocked from boot/background |
+ * | 15 | 35 | Same as 14, plus `dataSync` has 6-hour timeout |
+ * | 16 | 36 | Same restrictions as Android 15 |
+ *
+ * ## Why Check for API 34?
+ *
+ * Android 14 (API 34, UPSIDE_DOWN_CAKE) was the first version to restrict
+ * starting certain FGS types from background contexts like BOOT_COMPLETED.
+ * This restriction applies to:
+ * - `microphone` (used by FloatingMicService)
+ * - `camera`
+ * - `mediaProjection`
+ *
+ * Android 15 (API 35) added the 6-hour timeout for `dataSync` FGS type,
+ * which is why AudioMonitorService uses `specialUse` instead.
+ *
+ * The check for API < 34 covers all Android versions from 14 onwards,
+ * including 15 and 16.
+ *
+ * @see FGS Background Start Restrictions
+ * @see Android 15 FGS Changes
+ */
+object BootCompatHelper {
+ /**
+ * Whether the app can start foreground services with restricted types
+ * (microphone, dataSync) from BOOT_COMPLETED receiver.
+ *
+ * Returns `true` for Android 8.0-13 (API 26-33) where FGS can start directly.
+ * Returns `false` for Android 14+ (API 34+) where a notification must be
+ * shown and the user must tap to start services.
+ */
+ val canStartFgsFromBoot: Boolean
+ get() = Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE
+}
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 8e7b418..f2d7b8e 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -9,6 +9,7 @@
Известия при неуспешно стартиране на услуги
Натиснете, за да стартирате плаващия микрофон
Натиснете, за да стартирате наблюдението на папки
+ Докоснете, за да стартирате услугите на TranSlander
TranSlander Текстов вход
Позволява на TranSlander да вмъква транскрибиран текст директно в текстови полета. Активирайте за безпроблемно гласово въвеждане на текст.
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 161e94f..a91e634 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -9,6 +9,7 @@
Oznámení při selhání spuštění služeb
Klepněte pro spuštění plovoucího mikrofonu
Klepněte pro spuštění monitoru složek
+ Klepnutím spustíte služby TranSlander
TranSlander Textový vstup
Umožňuje TranSlander vkládat přepsaný text přímo do textových polí. Povolte pro plynulý hlasový vstup.
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index c904621..f4a9f07 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -7,6 +7,7 @@
Notifikationer når tjenester ikke kan starte
Tryk for at starte flydende mikrofon
Tryk for at starte mappeovervågning
+ Tryk for at starte TranSlander-tjenester
TranSlander tekstinput
Giver TranSlander mulighed for at indsætte transskriberet tekst direkte i tekstfelter. Aktivér dette for problemfri tale-til-tekst-input.
Talemodel
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 2cccf4e..fad0cc9 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -9,6 +9,7 @@
Benachrichtigungen, wenn Dienste nicht starten können
Tippen, um schwebendes Mikrofon zu starten
Tippen, um Ordnerüberwachung zu starten
+ Tippen, um TranSlander-Dienste zu starten
TranSlander Texteingabe
Ermöglicht TranSlander, transkribierten Text direkt in Textfelder einzufügen. Für nahtlose Spracheingabe aktivieren.
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 64873b5..82201e4 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -7,6 +7,7 @@
Ειδοποιήσεις όταν οι υπηρεσίες αποτυγχάνουν να ξεκινήσουν
Πατήστε για εκκίνηση αιωρούμενου μικροφώνου
Πατήστε για εκκίνηση παρακολούθησης φακέλων
+ Πατήστε για να ξεκινήσετε τις υπηρεσίες TranSlander
Εισαγωγή κειμένου TranSlander
Επιτρέπει στο TranSlander να εισάγει μεταγεγραμμένο κείμενο απευθείας σε πεδία κειμένου. Ενεργοποιήστε το για απρόσκοπτη εισαγωγή ομιλίας-σε-κείμενο.
Μοντέλο ομιλίας
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 01615e9..c9b8fcc 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -9,6 +9,7 @@
Notificaciones cuando los servicios no pueden iniciarse
Toca para iniciar el micrófono flotante
Toca para iniciar el monitor de carpetas
+ Toca para iniciar los servicios de TranSlander
Entrada de texto TranSlander
Permite a TranSlander insertar texto transcrito directamente en campos de texto. Actívalo para una entrada de voz fluida.
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index fa4f232..602450e 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -7,6 +7,7 @@
Teavitused, kui teenused ei käivitu
Puuduta hõljuva mikrofoni käivitamiseks
Puuduta kaustaseire käivitamiseks
+ Puudutage TranSlanderi teenuste käivitamiseks
TranSlander tekstisisestus
Lubab TranSlander\'il sisestada transkribeeritud teksti otse tekstiväljadele. Luba see sujuvaks kõnest tekstiks sisestuseks.
Kõnemudel
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index b397a3e..c5e153d 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -7,6 +7,7 @@
Ilmoitukset kun palvelut eivät käynnisty
Napauta käynnistääksesi kelluvan mikrofonin
Napauta käynnistääksesi kansioseurannan
+ Napauta käynnistääksesi TranSlander-palvelut
TranSlander-tekstinsyöttö
Sallii TranSlanderin lisätä tunnistetun tekstin suoraan tekstikenttiin. Ota käyttöön saumattomaan puheesta tekstiksi -syöttöön.
Puhemalli
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 365b5e8..a848624 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -9,6 +9,7 @@
Notifications lorsque les services ne démarrent pas
Touche pour démarrer le micro flottant
Touche pour démarrer la surveillance des dossiers
+ Appuyez pour démarrer les services TranSlander
Saisie de texte TranSlander
Permet à TranSlander d\'insérer du texte transcrit directement dans les champs de saisie. Active cette option pour une saisie vocale fluide.
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index e3b0efb..6dd226a 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -9,6 +9,7 @@
Obavijesti kada se usluge ne mogu pokrenuti
Dodirnite za pokretanje plutajućeg mikrofona
Dodirnite za pokretanje praćenja mapa
+ Dodirnite za pokretanje TranSlander usluga
TranSlander Unos teksta
Omogućuje TranSlander umetanje transkribiranog teksta izravno u tekstualna polja. Omogućite za besprijekoran glasovni unos teksta.
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 3c7be4d..475a4b0 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -9,6 +9,7 @@
Értesítések, ha a szolgáltatások nem indulnak el
Koppintson a lebegő mikrofon indításához
Koppintson a mappafigyelő indításához
+ Érintse meg a TranSlander szolgáltatások indításához
TranSlander szövegbevitel
Lehetővé teszi a TranSlander számára, hogy az átírt szöveget közvetlenül a szövegmezőkbe illessze be. Engedélyezze a zökkenőmentes hangalapú szövegbevitelhez.
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index afdcd9b..37bc825 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -9,6 +9,7 @@
Notifiche quando i servizi non riescono ad avviarsi
Tocca per avviare il microfono flottante
Tocca per avviare il monitoraggio cartelle
+ Tocca per avviare i servizi TranSlander
Immissione testo TranSlander
Consente a TranSlander di inserire testo trascritto direttamente nei campi di testo. Attivalo per un\'immissione vocale fluida.
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index b73c81b..e9872dd 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -7,6 +7,7 @@
Pranešimai, kai paslaugos nepavyksta paleisti
Bakstelėkite, kad paleistumėte slankųjį mikrofoną
Bakstelėkite, kad paleistumėte aplankų stebėjimą
+ Palieskite, kad paleistumėte TranSlander paslaugas
TranSlander teksto įvestis
Leidžia TranSlander įterpti transkribuotą tekstą tiesiai į teksto laukus. Įjunkite tai sklandžiai balso-į-tekstą įvesčiai.
Kalbos modelis
diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml
index a8b00ca..125eb3e 100644
--- a/app/src/main/res/values-lv/strings.xml
+++ b/app/src/main/res/values-lv/strings.xml
@@ -7,6 +7,7 @@
Paziņojumi, kad pakalpojumi neizdodas startēt
Pieskarieties, lai palaistu peldošo mikrofonu
Pieskarieties, lai palaistu mapju uzraudzību
+ Pieskarieties, lai palaistu TranSlander pakalpojumus
TranSlander teksta ievade
Ļauj TranSlander ievietot transkribētu tekstu tieši teksta laukos. Iespējojiet šo vienmērīgai runas-teksta ievadei.
Runas modelis
diff --git a/app/src/main/res/values-mt/strings.xml b/app/src/main/res/values-mt/strings.xml
index 5632f71..b1ec1d2 100644
--- a/app/src/main/res/values-mt/strings.xml
+++ b/app/src/main/res/values-mt/strings.xml
@@ -7,6 +7,7 @@
Notifiki meta s-servizzi ma jirnexxilhomx jibdew
Tektek biex tibda l-mikrofonu li jżomm
Tektek biex tibda l-monitoraġġ tal-folders
+ Tektek biex tibda s-servizzi TranSlander
Dħul ta\' test TranSlander
Jippermetti lil TranSlander idaħħal test ittraskkritt direttament f\'oqsma tat-test. Attiva dan għal dħul bla xkiel ta\' vuċi-għal-test.
Mudell tad-Diskors
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index e9ad1a6..1845969 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -7,6 +7,7 @@
Meldingen wanneer services niet kunnen starten
Tik om zwevende microfoon te starten
Tik om mapbewaking te starten
+ Tik om TranSlander-services te starten
TranSlander tekstinvoer
Hiermee kan TranSlander getranscribeerde tekst rechtstreeks in tekstvelden invoegen. Schakel dit in voor naadloze spraak-naar-tekst invoer.
Spraakmodel
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index e5bc5e8..9dca430 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -7,6 +7,7 @@
Powiadomienia, gdy usługi nie mogą się uruchomić
Dotknij, aby uruchomić pływający mikrofon
Dotknij, aby uruchomić monitor folderów
+ Dotknij, aby uruchomić usługi TranSlander
TranSlander wprowadzanie tekstu
Umożliwia TranSlander wstawianie transkrybowanego tekstu bezpośrednio do pól tekstowych. Włącz tę opcję, aby płynnie zamieniać mowę na tekst.
Model mowy
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 45a420e..f6d631d 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -7,6 +7,7 @@
Notificações quando os serviços não conseguem iniciar
Toque para iniciar o microfone flutuante
Toque para iniciar o monitor de pastas
+ Toque para iniciar os serviços TranSlander
TranSlander introdução de texto
Permite que o TranSlander insira texto transcrito diretamente em campos de texto. Ative esta opção para uma introdução de voz para texto sem interrupções.
Modelo de voz
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index bf0486e..bf65134 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -7,6 +7,7 @@
Notificări când serviciile nu reușesc să pornească
Atinge pentru a porni microfonul plutitor
Atinge pentru a porni monitorizarea dosarelor
+ Atingeți pentru a porni serviciile TranSlander
TranSlander introducere text
Permite TranSlander să insereze textul transcris direct în câmpurile de text. Activează această opțiune pentru introducere vocală fără întreruperi.
Model de vorbire
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index a770199..de971db 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -9,6 +9,7 @@
Oznámenia pri zlyhaní spustenia služieb
Klepnite pre spustenie plávajúceho mikrofónu
Klepnite pre spustenie monitorovania priečinkov
+ Klepnutím spustíte služby TranSlander
TranSlander Textový vstup
Umožňuje TranSlander vkladať prepísaný text priamo do textových polí. Povoľte pre plynulý hlasový vstup.
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index 2f7d163..9678ab0 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -9,6 +9,7 @@
Obvestila, ko se storitve ne zaženejo
Tapnite za zagon plavajočega mikrofona
Tapnite za zagon nadzora map
+ Tapnite za zagon storitev TranSlander
TranSlander Vnos besedila
Omogoča TranSlander vstavljanje prepisanega besedila neposredno v besedilna polja. Omogočite za nemoten glasovni vnos besedila.
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 4ad3f33..64fc29c 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -7,6 +7,7 @@
Aviseringar när tjänster inte kan starta
Tryck för att starta flytande mikrofon
Tryck för att starta mappövervakning
+ Tryck för att starta TranSlander-tjänster
TranSlander textinmatning
Låter TranSlander infoga transkriberad text direkt i textfält. Aktivera detta för sömlös röst-till-text-inmatning.
Talmodell
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 6e5f264..a398870 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -7,6 +7,7 @@
Сповіщення, коли служби не можуть запуститися
Натисніть, щоб запустити плаваючий мікрофон
Натисніть, щоб запустити моніторинг тек
+ Торкніться, щоб запустити служби TranSlander
Введення тексту TranSlander
Дозволяє TranSlander вставляти транскрибований текст безпосередньо в текстові поля. Увімкніть для безперебійного введення мовлення-в-текст.
Модель мовлення
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d866c9d..3c95189 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,6 +10,7 @@
Notifications when services need to be started
Tap to start floating mic
Tap to start folder monitor
+ Tap to start TranSlander services
TranSlander Text Input
Allows TranSlander to insert transcribed text directly into text fields. Enable this for seamless voice-to-text input.