mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bda0a20743 | ||
|
|
09bad90c0c | ||
|
|
34856607f8 | ||
|
|
5c2b66fe27 | ||
|
|
c9fe9a43e2 | ||
|
|
395dbbb624 | ||
|
|
fdc6486102 | ||
|
|
6c379451c0 | ||
|
|
221f3ccbed |
+14
-9
@@ -1,4 +1,5 @@
|
||||
plugins {
|
||||
id("projectConfig")
|
||||
id("com.android.application")
|
||||
id("kotlin-android")
|
||||
id("com.google.devtools.ksp")
|
||||
@@ -9,28 +10,32 @@ apply(plugin = "dagger.hilt.android.plugin")
|
||||
apply(plugin = "androidx.navigation.safeargs.kotlin")
|
||||
|
||||
android {
|
||||
compileSdk = ProjectConfig.compileSdk
|
||||
namespace = ProjectConfig.packageName
|
||||
compileSdk = projectConfig.compileSdk
|
||||
|
||||
defaultConfig {
|
||||
applicationId = ProjectConfig.packageName
|
||||
namespace = projectConfig.packageName
|
||||
|
||||
minSdk = ProjectConfig.minSdk
|
||||
targetSdk = ProjectConfig.targetSdk
|
||||
minSdk = projectConfig.minSdk
|
||||
targetSdk = projectConfig.targetSdk
|
||||
|
||||
versionCode = ProjectConfig.Version.code + 0 // Base app
|
||||
versionName = ProjectConfig.Version.name
|
||||
versionCode = projectConfig.version.code.toInt()
|
||||
versionName = projectConfig.version.name
|
||||
|
||||
testInstrumentationRunner = "eu.darken.capod.HiltTestRunner"
|
||||
|
||||
buildConfigField("String", "PACKAGENAME", "\"${projectConfig.packageName}\"")
|
||||
buildConfigField("String", "VERSION_CODE", "\"${projectConfig.version.code}\"")
|
||||
buildConfigField("String", "VERSION_NAME", "\"${projectConfig.version.name}\"")
|
||||
}
|
||||
|
||||
// Enable automatic per-app language preferences generation
|
||||
androidResources {
|
||||
@Suppress("UnstableApiUsage")
|
||||
generateLocaleConfig = true
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
val basePath = File(System.getProperty("user.home"), ".appconfig/${ProjectConfig.packageName}")
|
||||
val basePath = File(System.getProperty("user.home"), ".appconfig/${projectConfig.packageName}")
|
||||
create("releaseFoss") {
|
||||
setupCredentials(File(basePath, "signing-foss.properties"))
|
||||
}
|
||||
@@ -94,7 +99,7 @@ android {
|
||||
val variantName: String = variantOutputImpl.name
|
||||
|
||||
if (listOf("release", "beta").any { variantName.lowercase().contains(it) }) {
|
||||
val outputFileName = ProjectConfig.packageName +
|
||||
val outputFileName = projectConfig.packageName +
|
||||
"-v${defaultConfig.versionName}-${defaultConfig.versionCode}" +
|
||||
"-${variantName.uppercase()}.apk"
|
||||
|
||||
|
||||
Vendored
+1
-22
@@ -1,23 +1,2 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
|
||||
-keep class eu.darken.capod.BuildConfig { *; }
|
||||
-dontobfuscate
|
||||
@@ -1,20 +1,22 @@
|
||||
package eu.darken.capod.common
|
||||
|
||||
import eu.darken.capod.BuildConfig
|
||||
import android.util.Log
|
||||
import androidx.annotation.Keep
|
||||
import java.lang.reflect.Field
|
||||
|
||||
|
||||
// Can't be const because that prevents them from being mocked in tests
|
||||
@Suppress("MayBeConstant")
|
||||
@Keep
|
||||
object BuildConfigWrap {
|
||||
val DEBUG: Boolean = BuildConfig.DEBUG
|
||||
|
||||
val BUILD_TYPE: BuildType = when (val typ = BuildConfig.BUILD_TYPE) {
|
||||
val APPLICATION_ID = getBuildConfigValue("PACKAGENAME") as String
|
||||
val DEBUG: Boolean = getBuildConfigValue("DEBUG") as Boolean
|
||||
val BUILD_TYPE: BuildType = when (val typ = getBuildConfigValue("BUILD_TYPE") as String) {
|
||||
"debug" -> BuildType.DEV
|
||||
"beta" -> BuildType.BETA
|
||||
"release" -> BuildType.RELEASE
|
||||
else -> throw IllegalArgumentException("Unknown buildtype: $typ")
|
||||
}
|
||||
|
||||
@Keep
|
||||
enum class BuildType {
|
||||
DEV,
|
||||
BETA,
|
||||
@@ -22,24 +24,36 @@ object BuildConfigWrap {
|
||||
;
|
||||
}
|
||||
|
||||
val FLAVOR: Flavor = when (val flav = BuildConfig.FLAVOR) {
|
||||
val FLAVOR: Flavor = when (val flav = getBuildConfigValue("FLAVOR") as String?) {
|
||||
"gplay" -> Flavor.GPLAY
|
||||
"foss" -> Flavor.FOSS
|
||||
null -> Flavor.NONE
|
||||
else -> throw IllegalStateException("Unknown flavor: $flav")
|
||||
}
|
||||
|
||||
enum class Flavor {
|
||||
GPLAY,
|
||||
FOSS,
|
||||
NONE,
|
||||
;
|
||||
}
|
||||
|
||||
val APPLICATION_ID: String = BuildConfig.APPLICATION_ID
|
||||
val VERSION_CODE: Long = (getBuildConfigValue("VERSION_CODE") as String).toLong()
|
||||
val VERSION_NAME: String = getBuildConfigValue("VERSION_NAME") as String
|
||||
|
||||
val VERSION_CODE: Long = BuildConfig.VERSION_CODE.toLong()
|
||||
val VERSION_NAME: String = BuildConfig.VERSION_NAME
|
||||
|
||||
val VERSION_DESCRIPTION_LONG: String = "v$VERSION_NAME ($VERSION_CODE) ${FLAVOR}_$BUILD_TYPE"
|
||||
val VERSION_DESCRIPTION_SHORT: String = "v$VERSION_NAME $FLAVOR"
|
||||
val VERSION_DESCRIPTION: String = "v$VERSION_NAME ($VERSION_CODE) ~ $FLAVOR/$BUILD_TYPE"
|
||||
val VERSION_DESCRIPTION_SHORT: String = "v$VERSION_NAME ~ $FLAVOR"
|
||||
val VERSION_DESCRIPTION_TINY: String = "v$VERSION_NAME"
|
||||
|
||||
private fun getBuildConfigValue(fieldName: String): Any? = try {
|
||||
val c = Class.forName("eu.darken.capod.BuildConfig")
|
||||
val f: Field = c.getField(fieldName).apply {
|
||||
isAccessible = true
|
||||
}
|
||||
f.get(null)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
Log.e("getBuildConfigValue", "fieldName: $fieldName")
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ class RecorderModule @Inject constructor(
|
||||
triggerFile.createNewFile()
|
||||
|
||||
log(TAG, INFO) { "Build.Fingerprint: ${Build.FINGERPRINT}" }
|
||||
log(TAG, INFO) { "BuildConfig.Versions: ${BuildConfigWrap.VERSION_DESCRIPTION_LONG}" }
|
||||
log(TAG, INFO) { "BuildConfig.Versions: ${BuildConfigWrap.VERSION_DESCRIPTION}" }
|
||||
|
||||
copy(
|
||||
recorder = newRecorder
|
||||
|
||||
@@ -74,7 +74,7 @@ class RecorderActivityVM @Inject constructor(
|
||||
}
|
||||
|
||||
fun share() = launch {
|
||||
val (path, size) = resultCacheCompressedObs.first()
|
||||
val (path, _) = resultCacheCompressedObs.first()
|
||||
|
||||
val intent = Intent(Intent.ACTION_SEND).apply {
|
||||
val uri = FileProvider.getUriForFile(
|
||||
@@ -89,7 +89,7 @@ class RecorderActivityVM @Inject constructor(
|
||||
type = "application/zip"
|
||||
|
||||
addCategory(Intent.CATEGORY_DEFAULT)
|
||||
putExtra(Intent.EXTRA_SUBJECT, "CAPod DebugLog - ${BuildConfigWrap.VERSION_DESCRIPTION_LONG})")
|
||||
putExtra(Intent.EXTRA_SUBJECT, "CAPod DebugLog - ${BuildConfigWrap.VERSION_DESCRIPTION})")
|
||||
putExtra(Intent.EXTRA_TEXT, "Your text here.")
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ class SettingsIndexFragment : PreferenceFragment2() {
|
||||
}
|
||||
|
||||
override fun onPreferencesCreated() {
|
||||
findPreference<Preference>("core.changelog")!!.summary = BuildConfigWrap.VERSION_DESCRIPTION_LONG
|
||||
findPreference<Preference>("core.changelog")!!.summary = BuildConfigWrap.VERSION_DESCRIPTION
|
||||
findPreference<Preference>("core.privacy")!!.setOnPreferenceClickListener {
|
||||
webpageTool.open(PrivacyPolicy.URL)
|
||||
true
|
||||
|
||||
@@ -23,11 +23,13 @@
|
||||
<string name="settings_keep_notification_after_disconnect_label">Mantén les notificacions després de la desconnexió</string>
|
||||
<string name="settings_keep_notification_after_disconnect_description">Continua mostrant els últims nivells de bateria coneguts fins i tot després que els AirPods es desconnectin</string>
|
||||
<string name="settings_scanner_mode_label">Mode escàner</string>
|
||||
<string name="settings_scanner_mode_description">L\'escàner de dades Bluetooth Low Energy hauria de prioritzar el rendiment o estalviar energia?</string>
|
||||
<string name="settings_scanner_mode_description">L\'escàner de dades Bluetooth de baix consum hauria de prioritzar el rendiment o estalviar energia?</string>
|
||||
<string name="settings_autopause_label">Pausa automàtica</string>
|
||||
<string name="settings_autopause_description">Pausa l\'àudio quan ús tragueu el dispositiu de l\'orella.</string>
|
||||
<string name="settings_autopplay_label">Reproducció automàtica</string>
|
||||
<string name="settings_autoplay_description">Inicia la reproducció d\'àudio en utilitzar el dispositiu.</string>
|
||||
<string name="settings_eardetection_info_label">Nota de detecció de l\'oïda</string>
|
||||
<string name="settings_eardetection_info_description">Si la detecció de l\'oïda només funciona per a un auricular, això és degut a una limitació d\'Apple. Només es detecta «l\'auricular principal» (utilitzat per al micròfon). Configureu-ho en dispositius Apple: Configuració → Bluetooth → AirPods → Micròfon.</string>
|
||||
<string name="settings_fake_data_label">Dades falses</string>
|
||||
<string name="settings_fake_data_description">Mostra dades falses. Per exemple: simula dispositius que no existeixen.</string>
|
||||
<string name="settings_debug_label">Configuració de depuració</string>
|
||||
@@ -49,8 +51,8 @@
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">No delegueu el filtratge de dades al sistema, obtingueu totes les dades i filtreu-les dins de l\'aplicació.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Desactiva el processament per lots de maquinari</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">No deixeu que el grup del sistema reculli dades BLE abans de reenviar-nos-les.</string>
|
||||
<string name="settings_onepod_mode_label">Mode d\'un AirPod</string>
|
||||
<string name="settings_onepod_mode_description">No cal portar els dos AirdPods, per provocar reaccions només cal portar-ne un.</string>
|
||||
<string name="settings_onepod_mode_label">Mode d\'un auricular</string>
|
||||
<string name="settings_onepod_mode_description">No cal portar els dos auriculars, només cal portar-ne un per activar les reaccions.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostra la finestra emergent de la funda</string>
|
||||
<string name="settings_popup_caseopen_description">Mostra una finestra emergent quan s\'obre la funda del dispositiu (experimental).</string>
|
||||
<string name="settings_popup_connected_label">Mostra la finestra emergent de connexió</string>
|
||||
@@ -98,6 +100,10 @@
|
||||
<string name="translators_thanks_title">Traductors</string>
|
||||
<string name="translators_thanks_description">Jaime Muñoz(jmmartin_5@outlook.com)</string>
|
||||
<string name="widget_description">Un giny que mostra l\'estat de l\'últim dispositiu conegut.</string>
|
||||
<string name="widget_configuration_title">Seleccioneu un dispositiu</string>
|
||||
<string name="widget_configuration_description">Trieu quin perfil de dispositiu ha de mostrar aquest giny.</string>
|
||||
<string name="common_feature_requires_pro_msg">Aquesta funció requereix el CAPod Pro.</string>
|
||||
<string name="widget_no_data_label">Sense dades</string>
|
||||
<string name="settings_compat_indirectcallback_title">Lliurament indirecte de dades</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Utilitza un mètode alternatiu per rebre dades BLE del sistema (emissió en lloc de devolució de trucada).</string>
|
||||
<string name="troubleshooter_title">Solucionador de problemes</string>
|
||||
@@ -111,7 +117,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">El CAPod està rebent emissions d\'anuncis BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Incorrecte</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">La resolució de problemes ha fallat. No ha funcionat cap combinació d\'opcions de compatibilitat.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">El vostres telèfon no ha rebut cap dada BLE. Podeu tornar a provar aquesta prova en una zona plena de gent per veure si es poden rebre fonts de dades (que no siguin els vostres auriculars). No rebre dades indica un problema amb el sistema operatiu del telèfon.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">El vostre telèfon no ha rebut cap dada BLE. Podeu tornar a executar aquesta prova en una zona plena de gent per veure si es poden rebre fonts de dades (que no siguin els vostres auriculars). No rebre dades indica un problema amb el sistema operatiu del telèfon.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">El vostre telèfon ha rebut dades BLE, però les dades no provenen de cap dispositiu compatible. Teniu els auriculars encesos? El CAPod és compatible amb els vostres auriculars?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Torna-ho a provar</string>
|
||||
<string name="troubleshoot_action">Resolució de problemes</string>
|
||||
@@ -134,6 +140,10 @@
|
||||
<string name="overview_monitoring_active_label">Monitorització de dispositius</string>
|
||||
<string name="overview_monitoring_active_description">Assegureu-vos que el dispositiu estigui a prop i actiu.</string>
|
||||
<string name="overview_unmatched_devices_label">Dispositius no coincidents</string>
|
||||
<plurals name="overview_unmatched_devices_count">
|
||||
<item quantity="one">%d dispositiu sense perfil coincident</item>
|
||||
<item quantity="other">%d dispositius sense perfil coincident</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Connexió Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Aquesta aplicació requereix el permís «Connexió Bluetooth» per interactuar amb dispositius emparellats i iniciar connexions.</string>
|
||||
<string name="permission_bluetooth_scan_label">Escaneig Bluetooth</string>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Pozastavení zvuku při vyjmutí zařízení z ucha.</string>
|
||||
<string name="settings_autopplay_label">Autom. přehrávání</string>
|
||||
<string name="settings_autoplay_description">Spuštění přehrávání zvuku při nošení zařízení.</string>
|
||||
<string name="settings_eardetection_info_label">Poznámka k detekci ucha</string>
|
||||
<string name="settings_eardetection_info_description">Pokud detekce sluchátek funguje pouze pro jedno sluchátko, jedná se o omezení společnosti Apple. Detekováno je pouze \"primární sluchátko\" (používané jako mikrofon). Konfigurace na zařízeních Apple: Nastavení → Bluetooth → AirPods → Mikrofon.</string>
|
||||
<string name="settings_fake_data_label">Falešná data</string>
|
||||
<string name="settings_fake_data_description">Zobrazit falešná data např. simulovat zařízení, které neexistuje.</string>
|
||||
<string name="settings_debug_label">Nastavení ladění</string>
|
||||
@@ -98,6 +100,10 @@
|
||||
<string name="translators_thanks_title">Překladatelé</string>
|
||||
<string name="translators_thanks_description">novas78@xda; woytazzer</string>
|
||||
<string name="widget_description">Widget zobrazující poslední známý stav zařízení.</string>
|
||||
<string name="widget_configuration_title">Vybrat zařízení</string>
|
||||
<string name="widget_configuration_description">Vyberte, který profil zařízení má tento widget zobrazovat.</string>
|
||||
<string name="common_feature_requires_pro_msg">Tato funkce vyžaduje CAPod Pro.</string>
|
||||
<string name="widget_no_data_label">Žádná data</string>
|
||||
<string name="settings_compat_indirectcallback_title">Nepřímé poskytování dat</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Použijte alternativní metodu pro příjem dat BLE ze systému (vysílání namísto přijímání).</string>
|
||||
<string name="troubleshooter_title">Řešení problémů</string>
|
||||
@@ -134,6 +140,12 @@
|
||||
<string name="overview_monitoring_active_label">Monitorování zařízení</string>
|
||||
<string name="overview_monitoring_active_description">Ujistěte se, že je vaše zařízení v dosahu a aktivní.</string>
|
||||
<string name="overview_unmatched_devices_label">Nepřiřazená zařízení</string>
|
||||
<plurals name="overview_unmatched_devices_count">
|
||||
<item quantity="one">%d zařízení bez odpovídajícího profilu</item>
|
||||
<item quantity="few">%d zařízení bez odpovídajícího profilu</item>
|
||||
<item quantity="many">%d zařízení bez odpovídajícího profilu</item>
|
||||
<item quantity="other">%d zařízení bez odpovídajícího profilu</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Připojení Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Tato aplikace vyžaduje oprávnění \"připojení Bluetooth\" pro interakci se spárovanými zařízeními a zahájení připojení.</string>
|
||||
<string name="permission_bluetooth_scan_label">Skenování Bluetooth</string>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Musik pausieren, wenn der Kopfhörer vom Ohr entfernt wird.</string>
|
||||
<string name="settings_autopplay_label">Automatisches abspielen</string>
|
||||
<string name="settings_autoplay_description">Audiowiedergabe starten, wenn das Gerät getragen wird.</string>
|
||||
<string name="settings_eardetection_info_label">Hinweis zur Ohr-Erkennung</string>
|
||||
<string name="settings_eardetection_info_description">Wenn die Ohr-Erkennung nur für einen Pod funktioniert, ist das leider Apple-Einschränkung. Es wird dann nur der \"primäre Pod\" (Mikrofon) erkannt. Weitere Konfiguration auf Apple-Geräten: Einstellungen → Bluetooth → AirPods → Mikrofon.</string>
|
||||
<string name="settings_fake_data_label">Gefälschte Daten</string>
|
||||
<string name="settings_fake_data_description">Gefälschte Test-Daten anzeigen, d.h. nicht existierende Geräte simulieren.</string>
|
||||
<string name="settings_debug_label">Debug-Einstellungen</string>
|
||||
@@ -138,6 +140,10 @@
|
||||
<string name="overview_monitoring_active_label">Überwachung für Geräte</string>
|
||||
<string name="overview_monitoring_active_description">Stelle sicher, dass dein Gerät in der Nähe ist und aktiv ist.</string>
|
||||
<string name="overview_unmatched_devices_label">Nicht zugeordnete Geräte</string>
|
||||
<plurals name="overview_unmatched_devices_count">
|
||||
<item quantity="one">%d Gerät ohne passendes Profil</item>
|
||||
<item quantity="other">%d Geräte ohne passendes Profil</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Bluetooth verbinden</string>
|
||||
<string name="permission_bluetooth_connect_description">Diese App benötigt die \"Bluetooth verbinden\" Berechtigung um mit bereits verbundenen und neuen Geräten zu interagieren.</string>
|
||||
<string name="permission_bluetooth_scan_label">Bluetooth Suche</string>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Pausar el audio al quitar el dispositivo de tu oreja.</string>
|
||||
<string name="settings_autopplay_label">Reproducción automática</string>
|
||||
<string name="settings_autoplay_description">Iniciar la reproducción de audio cuando se usa el dispositivo.</string>
|
||||
<string name="settings_eardetection_info_label">Nota sobre la detección de oídos</string>
|
||||
<string name="settings_eardetection_info_description">Si la detección de auriculares solo funciona para un pod, se trata de una limitación de Apple. Solo se detecta el «pod principal» (utilizado para el micrófono). Configuración en dispositivos Apple: Ajustes → Bluetooth → AirPods → Micrófono.</string>
|
||||
<string name="settings_fake_data_label">Datos falsos</string>
|
||||
<string name="settings_fake_data_description">Mostrar datos falsos, es decir, simular dispositivos que no existen.</string>
|
||||
<string name="settings_debug_label">Ajustes de depuración</string>
|
||||
@@ -143,6 +145,72 @@
|
||||
<item quantity="other">%d dispositivos sin perfil coincidentes</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Conexión Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Esta aplicación requiere el «Bluetooth» para interactuar con dispositivos emparejados e iniciar conexiones.</string>
|
||||
<string name="permission_bluetooth_scan_label">El Bluetooth está escaneando</string>
|
||||
<string name="permission_bluetooth_scan_description">El permiso \"Escaneo de Bluetooth\" permite que esta aplicación descubra y reciba datos de Bluetooth de dispositivos cercanos, como tus AirPods.</string>
|
||||
<string name="permission_bluetooth_label">Bluetooth</string>
|
||||
<string name="permission_bluetooth_description">Esta aplicación requiere el permiso \"Bluetooth\" para conectarse a dispositivos Bluetooth emparejados.</string>
|
||||
<string name="permission_access_fine_location_label">Acceso preciso a tu ubicación</string>
|
||||
<string name="permission_access_fine_location_description">CAPod utiliza el permiso de \"ubicación precisa\" para recibir datos de Bluetooth de bajo consumo. Tus auriculares utilizan la tecnología Bluetooth de bajo consumo para transmitir su estado. Esta aplicación NO utilizará datos de Bluetooth para determinar tu ubicación.</string>
|
||||
<string name="permission_background_location_label">Acceso a la ubicación en segundo plano</string>
|
||||
<string name="permission_background_location_description">CAPod utiliza el acceso a la ubicación en segundo plano para habilitar funciones como \"Mostrar ventana emergente\" y \"Conectar automáticamente\" mientras la aplicación está cerrada. Este acceso permite que la aplicación reciba datos de Bluetooth de bajo consumo mientras está en segundo plano. Esta aplicación NO utiliza datos de Bluetooth para determinar tu ubicación.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Desactivar las optimizaciones de la batería</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">Las optimizaciones de la batería impiden que esta aplicación reciba datos Bluetooth de forma fiable mientras se encuentra en segundo plano.</string>
|
||||
<string name="permission_required_title">Se requiere el siguiente permiso:</string>
|
||||
<string name="permission_system_alert_window_label">Ventana emergente</string>
|
||||
<string name="permission_system_alert_window_description">Permite que CAPod se superponga a otras aplicaciones para que la función «Mostrar ventana emergente».</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">Baja energía</string>
|
||||
<string name="settings_scanner_mode_balanced_label">Equilibrado</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">Baja latencia</string>
|
||||
<string name="settings_monitor_mode_manual_label">Cuando la aplicación está abierta</string>
|
||||
<string name="settings_monitor_mode_automatic_label">Cuando el dispositivo está conectado</string>
|
||||
<string name="settings_monitor_mode_always_label">Siempre</string>
|
||||
<string name="settings_reaction_autoconnect_whenseen_label">Cuando está visible</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">El estuche está abierto</string>
|
||||
<string name="settings_reaction_autoconnect_inear_label">En el oído</string>
|
||||
<string name="pods_dual_left_label">Auricular izquierdo</string>
|
||||
<string name="pods_dual_right_label">Auricular derecho</string>
|
||||
<string name="pods_case_label">Estuche</string>
|
||||
<string name="pods_case_status_open_label">Abierto</string>
|
||||
<string name="pods_case_status_closed_label">Cerrado</string>
|
||||
<string name="pods_connection_state_disconnected_label">No está conectado a un dispositivo</string>
|
||||
<string name="pods_connection_state_idle_label">Conectado a un dispositivo, pero inactivo</string>
|
||||
<string name="pods_connection_state_music_label">Reproduciendo música</string>
|
||||
<string name="pods_connection_state_call_label">En una llamada telefónica</string>
|
||||
<string name="pods_connection_state_ringing_label">Sonando</string>
|
||||
<string name="pods_connection_state_hanging_up_label">Colgando</string>
|
||||
<string name="pods_connection_state_unknown_label">El estado de la conexión es desconocido</string>
|
||||
<string name="pods_unknown_raw_data_label">Datos sin procesar</string>
|
||||
<string name="pods_unknown_label">Dispositivo desconocido</string>
|
||||
<string name="pods_unknown_contact_dev">Es un dispositivo desconocido, pero está utilizando un formato similar. Añadamos soporte para ello, contáctame :)</string>
|
||||
<string name="pods_none_label_short">Sin dispositivo</string>
|
||||
<string name="pods_charging_label">Cargando</string>
|
||||
<string name="pods_inear_label">En el oído</string>
|
||||
<string name="pods_microphone_label">Micrófono</string>
|
||||
<string name="pods_yours">Tuyos</string>
|
||||
<string name="headset_being_worn_label">En uso</string>
|
||||
<string name="headset_not_being_worn_label">No se usan</string>
|
||||
<string name="pods_case_unknown_state">Desconocido</string>
|
||||
<string name="last_seen_x">Ultima vez conectado: %s</string>
|
||||
<string name="first_seen_x">Primera vez conectados: %s</string>
|
||||
<string name="permission_post_notifications_label">Mostrar las notificaciones</string>
|
||||
<string name="permission_post_notifications_description">"Permitir que CAPod muestre notificaciones de tus AirPods, por ejemplo, su estado actual mientras están conectados."</string>
|
||||
<!-- Device profiles -->
|
||||
<string name="profiles_empty_title">Sin perfiles de dispositivos configurados</string>
|
||||
<string name="profiles_empty_description">Crear perfiles de dispositivos para administrar múltiples dispositivos con configuraciones y prioridades personalizadas.</string>
|
||||
<string name="profiles_add_action">Añadir un perfil</string>
|
||||
<string name="profiles_create_title">Crear un perfil</string>
|
||||
<string name="profiles_name_label">Nombre del perfil</string>
|
||||
<string name="profiles_name_default">Mis auriculares</string>
|
||||
<string name="profiles_model_label">Modelo del dispositivo</string>
|
||||
<string name="profiles_paired_device_label">Dispositivo emparejado</string>
|
||||
<string name="profiles_paired_device_none">Ninguno</string>
|
||||
<string name="profiles_paired_device_none_description">Ningún dispositivo seleccionado</string>
|
||||
<string name="profiles_save_action">Guarda el perfil</string>
|
||||
<string name="profiles_drag_handle_description">Arrastrar para reordenar</string>
|
||||
<string name="profiles_delete_title">Eliminar el perfil</string>
|
||||
<string name="profiles_delete_message">¿Estás seguro de que quieres eliminar este perfil? Esto no se puede deshacer.</string>
|
||||
<string name="profiles_delete_action">Borrar</string>
|
||||
<string name="profiles_basic_info_title">Información del dispositivo</string>
|
||||
<!-- Unsaved changes dialog -->
|
||||
</resources>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Pausar el audio al quitar el dispositivo de tu oreja.</string>
|
||||
<string name="settings_autopplay_label">Reproducción automática</string>
|
||||
<string name="settings_autoplay_description">Iniciar la reproducción de audio cuando se usa el dispositivo.</string>
|
||||
<string name="settings_eardetection_info_label">Nota sobre la detección de oídos</string>
|
||||
<string name="settings_eardetection_info_description">Si la detección de auriculares solo funciona para un pod, se trata de una limitación de Apple. Solo se detecta el «pod principal» (utilizado para el micrófono). Configuración en dispositivos Apple: Ajustes → Bluetooth → AirPods → Micrófono.</string>
|
||||
<string name="settings_fake_data_label">Datos falsos</string>
|
||||
<string name="settings_fake_data_description">Mostrar datos falsos, es decir, simular dispositivos que no existen.</string>
|
||||
<string name="settings_debug_label">Ajustes de depuración</string>
|
||||
@@ -74,7 +76,7 @@
|
||||
<string name="settings_support_description">Si necesitas ayuda.</string>
|
||||
<string name="issue_tracker_label">Seguidor de problemas</string>
|
||||
<string name="issue_tracker_description">Un seguidor público de problemas para reportes de errores y solicitudes de funciones (solo en inglés).</string>
|
||||
<string name="discord_label">En español</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
<string name="discord_description">Un lugar para pasar el rato y hacer preguntas.</string>
|
||||
<string name="changelog_label">Registro de cambios</string>
|
||||
<string name="settings_label">Ajustes</string>
|
||||
@@ -96,7 +98,7 @@
|
||||
<string name="help_translate_label">Traducción</string>
|
||||
<string name="help_translate_description">Ayuda a traducir esta aplicación a tu idioma favorito.</string>
|
||||
<string name="translators_thanks_title">Traductores</string>
|
||||
<string name="translators_thanks_description">español</string>
|
||||
<string name="translators_thanks_description">Jaime Muñoz(jmmartin_5@outlook.com)</string>
|
||||
<string name="widget_description">Un widget que muestra el último estado conocido del dispositivo.</string>
|
||||
<string name="widget_configuration_title">Selecciona el dispositivo</string>
|
||||
<string name="widget_configuration_description">Elige qué perfil del dispositivo debe mostrar este complemento.</string>
|
||||
@@ -143,6 +145,72 @@
|
||||
<item quantity="other">%d dispositivos sin perfil coincidentes</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Conexión Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Esta aplicación requiere el «Bluetooth» para interactuar con dispositivos emparejados e iniciar conexiones.</string>
|
||||
<string name="permission_bluetooth_scan_label">El Bluetooth está escaneando</string>
|
||||
<string name="permission_bluetooth_scan_description">El permiso \"Escaneo de Bluetooth\" permite que esta aplicación descubra y reciba datos de Bluetooth de dispositivos cercanos, como tus AirPods.</string>
|
||||
<string name="permission_bluetooth_label">Bluetooth</string>
|
||||
<string name="permission_bluetooth_description">Esta aplicación requiere el permiso \"Bluetooth\" para conectarse a dispositivos Bluetooth emparejados.</string>
|
||||
<string name="permission_access_fine_location_label">Acceso preciso a tu ubicación</string>
|
||||
<string name="permission_access_fine_location_description">CAPod utiliza el permiso de \"ubicación precisa\" para recibir datos de Bluetooth de bajo consumo. Tus auriculares utilizan la tecnología Bluetooth de bajo consumo para transmitir su estado. Esta aplicación NO utilizará datos de Bluetooth para determinar tu ubicación.</string>
|
||||
<string name="permission_background_location_label">Acceso a la ubicación en segundo plano</string>
|
||||
<string name="permission_background_location_description">CAPod utiliza el acceso a la ubicación en segundo plano para habilitar funciones como \"Mostrar ventana emergente\" y \"Conectar automáticamente\" mientras la aplicación está cerrada. Este acceso permite que la aplicación reciba datos de Bluetooth de bajo consumo mientras está en segundo plano. Esta aplicación NO utiliza datos de Bluetooth para determinar tu ubicación.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Desactivar las optimizaciones de la batería</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">Las optimizaciones de la batería impiden que esta aplicación reciba datos Bluetooth de forma fiable mientras se encuentra en segundo plano.</string>
|
||||
<string name="permission_required_title">Se requiere el siguiente permiso:</string>
|
||||
<string name="permission_system_alert_window_label">Ventana emergente</string>
|
||||
<string name="permission_system_alert_window_description">Permite que CAPod se superponga a otras aplicaciones para que la función «Mostrar ventana emergente».</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">Baja energía</string>
|
||||
<string name="settings_scanner_mode_balanced_label">Equilibrado</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">Baja latencia</string>
|
||||
<string name="settings_monitor_mode_manual_label">Cuando la aplicación está abierta</string>
|
||||
<string name="settings_monitor_mode_automatic_label">Cuando el dispositivo está conectado</string>
|
||||
<string name="settings_monitor_mode_always_label">Siempre</string>
|
||||
<string name="settings_reaction_autoconnect_whenseen_label">Cuando está visible</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">El estuche está abierto</string>
|
||||
<string name="settings_reaction_autoconnect_inear_label">En el oído</string>
|
||||
<string name="pods_dual_left_label">Auricular izquierdo</string>
|
||||
<string name="pods_dual_right_label">Auricular derecho</string>
|
||||
<string name="pods_case_label">Estuche</string>
|
||||
<string name="pods_case_status_open_label">Abierto</string>
|
||||
<string name="pods_case_status_closed_label">Cerrado</string>
|
||||
<string name="pods_connection_state_disconnected_label">No está conectado a un dispositivo</string>
|
||||
<string name="pods_connection_state_idle_label">Conectado a un dispositivo, pero inactivo</string>
|
||||
<string name="pods_connection_state_music_label">Reproduciendo música</string>
|
||||
<string name="pods_connection_state_call_label">En una llamada telefónica</string>
|
||||
<string name="pods_connection_state_ringing_label">Sonando</string>
|
||||
<string name="pods_connection_state_hanging_up_label">Colgando</string>
|
||||
<string name="pods_connection_state_unknown_label">El estado de la conexión es desconocido</string>
|
||||
<string name="pods_unknown_raw_data_label">Datos sin procesar</string>
|
||||
<string name="pods_unknown_label">Dispositivo desconocido</string>
|
||||
<string name="pods_unknown_contact_dev">Es un dispositivo desconocido, pero está utilizando un formato similar. Añadamos soporte para ello, contáctame :)</string>
|
||||
<string name="pods_none_label_short">Sin dispositivo</string>
|
||||
<string name="pods_charging_label">Cargando</string>
|
||||
<string name="pods_inear_label">En el oído</string>
|
||||
<string name="pods_microphone_label">Micrófono</string>
|
||||
<string name="pods_yours">Tuyos</string>
|
||||
<string name="headset_being_worn_label">En uso</string>
|
||||
<string name="headset_not_being_worn_label">No se usan</string>
|
||||
<string name="pods_case_unknown_state">Desconocido</string>
|
||||
<string name="last_seen_x">Ultima vez conectado: %s</string>
|
||||
<string name="first_seen_x">Primera vez conectados: %s</string>
|
||||
<string name="permission_post_notifications_label">Mostrar las notificaciones</string>
|
||||
<string name="permission_post_notifications_description">"Permitir que CAPod muestre notificaciones de tus AirPods, por ejemplo, su estado actual mientras están conectados."</string>
|
||||
<!-- Device profiles -->
|
||||
<string name="profiles_empty_title">Sin perfiles de dispositivos configurados</string>
|
||||
<string name="profiles_empty_description">Crear perfiles de dispositivos para administrar múltiples dispositivos con configuraciones y prioridades personalizadas.</string>
|
||||
<string name="profiles_add_action">Añadir un perfil</string>
|
||||
<string name="profiles_create_title">Crear un perfil</string>
|
||||
<string name="profiles_name_label">Nombre del perfil</string>
|
||||
<string name="profiles_name_default">Mis auriculares</string>
|
||||
<string name="profiles_model_label">Modelo del dispositivo</string>
|
||||
<string name="profiles_paired_device_label">Dispositivo emparejado</string>
|
||||
<string name="profiles_paired_device_none">Ninguno</string>
|
||||
<string name="profiles_paired_device_none_description">Ningún dispositivo seleccionado</string>
|
||||
<string name="profiles_save_action">Guarda el perfil</string>
|
||||
<string name="profiles_drag_handle_description">Arrastrar para reordenar</string>
|
||||
<string name="profiles_delete_title">Eliminar el perfil</string>
|
||||
<string name="profiles_delete_message">¿Estás seguro de que quieres eliminar este perfil? Esto no se puede deshacer.</string>
|
||||
<string name="profiles_delete_action">Borrar</string>
|
||||
<string name="profiles_basic_info_title">Información del dispositivo</string>
|
||||
<!-- Unsaved changes dialog -->
|
||||
</resources>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Pausar el audio al quitar el dispositivo de tu oído.</string>
|
||||
<string name="settings_autopplay_label">Reproducción automática</string>
|
||||
<string name="settings_autoplay_description">Iniciar la reproducción de audio cuando se lleva puesto el dispositivo.</string>
|
||||
<string name="settings_eardetection_info_label">Nota sobre la detección de oídos</string>
|
||||
<string name="settings_eardetection_info_description">Si la detección de auriculares solo funciona para un pod, se trata de una limitación de Apple. Solo se detecta el «pod principal» (utilizado para el micrófono). Configuración en dispositivos Apple: Ajustes → Bluetooth → AirPods → Micrófono.</string>
|
||||
<string name="settings_fake_data_label">Datos falsos</string>
|
||||
<string name="settings_fake_data_description">Mostrar datos falsos, es decir, simular dispositivos que no existen.</string>
|
||||
<string name="settings_debug_label">Ajustes de depuración</string>
|
||||
@@ -143,6 +145,72 @@
|
||||
<item quantity="other">%d dispositivos sin perfil coincidentes</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Conexión Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Esta aplicación requiere el «Bluetooth» para interactuar con dispositivos emparejados e iniciar conexiones.</string>
|
||||
<string name="permission_bluetooth_scan_label">El Bluetooth está escaneando</string>
|
||||
<string name="permission_bluetooth_scan_description">El permiso \"Escaneo de Bluetooth\" permite que esta aplicación descubra y reciba datos de Bluetooth de dispositivos cercanos, como tus AirPods.</string>
|
||||
<string name="permission_bluetooth_label">Bluetooth</string>
|
||||
<string name="permission_bluetooth_description">Esta aplicación requiere el permiso \"Bluetooth\" para conectarse a dispositivos Bluetooth emparejados.</string>
|
||||
<string name="permission_access_fine_location_label">Acceso preciso a tu ubicación</string>
|
||||
<string name="permission_access_fine_location_description">CAPod utiliza el permiso de \"ubicación precisa\" para recibir datos de Bluetooth de bajo consumo. Tus auriculares utilizan la tecnología Bluetooth de bajo consumo para transmitir su estado. Esta aplicación NO utilizará datos de Bluetooth para determinar tu ubicación.</string>
|
||||
<string name="permission_background_location_label">Acceso a la ubicación en segundo plano</string>
|
||||
<string name="permission_background_location_description">CAPod utiliza el acceso a la ubicación en segundo plano para habilitar funciones como \"Mostrar ventana emergente\" y \"Conectar automáticamente\" mientras la aplicación está cerrada. Este acceso permite que la aplicación reciba datos de Bluetooth de bajo consumo mientras está en segundo plano. Esta aplicación NO utiliza datos de Bluetooth para determinar tu ubicación.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Desactivar las optimizaciones de la batería</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">Las optimizaciones de la batería impiden que esta aplicación reciba datos Bluetooth de forma fiable mientras se encuentra en segundo plano.</string>
|
||||
<string name="permission_required_title">Se requiere el siguiente permiso:</string>
|
||||
<string name="permission_system_alert_window_label">Ventana emergente</string>
|
||||
<string name="permission_system_alert_window_description">Permite que CAPod se superponga a otras aplicaciones para que la función «Mostrar ventana emergente».</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">Baja energía</string>
|
||||
<string name="settings_scanner_mode_balanced_label">Equilibrado</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">Baja latencia</string>
|
||||
<string name="settings_monitor_mode_manual_label">Cuando la aplicación está abierta</string>
|
||||
<string name="settings_monitor_mode_automatic_label">Cuando el dispositivo está conectado</string>
|
||||
<string name="settings_monitor_mode_always_label">Siempre</string>
|
||||
<string name="settings_reaction_autoconnect_whenseen_label">Cuando está visible</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">El estuche está abierto</string>
|
||||
<string name="settings_reaction_autoconnect_inear_label">En el oído</string>
|
||||
<string name="pods_dual_left_label">Auricular izquierdo</string>
|
||||
<string name="pods_dual_right_label">Auricular derecho</string>
|
||||
<string name="pods_case_label">Estuche</string>
|
||||
<string name="pods_case_status_open_label">Abierto</string>
|
||||
<string name="pods_case_status_closed_label">Cerrado</string>
|
||||
<string name="pods_connection_state_disconnected_label">No está conectado a un dispositivo</string>
|
||||
<string name="pods_connection_state_idle_label">Conectado a un dispositivo, pero inactivo</string>
|
||||
<string name="pods_connection_state_music_label">Reproduciendo música</string>
|
||||
<string name="pods_connection_state_call_label">En una llamada telefónica</string>
|
||||
<string name="pods_connection_state_ringing_label">Sonando</string>
|
||||
<string name="pods_connection_state_hanging_up_label">Colgando</string>
|
||||
<string name="pods_connection_state_unknown_label">El estado de la conexión es desconocido</string>
|
||||
<string name="pods_unknown_raw_data_label">Datos sin procesar</string>
|
||||
<string name="pods_unknown_label">Dispositivo desconocido</string>
|
||||
<string name="pods_unknown_contact_dev">Es un dispositivo desconocido, pero está utilizando un formato similar. Añadamos soporte para ello, contáctame :)</string>
|
||||
<string name="pods_none_label_short">Sin dispositivo</string>
|
||||
<string name="pods_charging_label">Cargando</string>
|
||||
<string name="pods_inear_label">En el oído</string>
|
||||
<string name="pods_microphone_label">Micrófono</string>
|
||||
<string name="pods_yours">Tuyos</string>
|
||||
<string name="headset_being_worn_label">En uso</string>
|
||||
<string name="headset_not_being_worn_label">No se usan</string>
|
||||
<string name="pods_case_unknown_state">Desconocido</string>
|
||||
<string name="last_seen_x">Ultima vez conectado: %s</string>
|
||||
<string name="first_seen_x">Primera vez conectados: %s</string>
|
||||
<string name="permission_post_notifications_label">Mostrar las notificaciones</string>
|
||||
<string name="permission_post_notifications_description">"Permitir que CAPod muestre notificaciones de tus AirPods, por ejemplo, su estado actual mientras están conectados."</string>
|
||||
<!-- Device profiles -->
|
||||
<string name="profiles_empty_title">Sin perfiles de dispositivos configurados</string>
|
||||
<string name="profiles_empty_description">Crear perfiles de dispositivos para administrar múltiples dispositivos con configuraciones y prioridades personalizadas.</string>
|
||||
<string name="profiles_add_action">Añadir un perfil</string>
|
||||
<string name="profiles_create_title">Crear un perfil</string>
|
||||
<string name="profiles_name_label">Nombre del perfil</string>
|
||||
<string name="profiles_name_default">Mis auriculares</string>
|
||||
<string name="profiles_model_label">Modelo del dispositivo</string>
|
||||
<string name="profiles_paired_device_label">Dispositivo emparejado</string>
|
||||
<string name="profiles_paired_device_none">Ninguno</string>
|
||||
<string name="profiles_paired_device_none_description">Ningún dispositivo seleccionado</string>
|
||||
<string name="profiles_save_action">Guarda el perfil</string>
|
||||
<string name="profiles_drag_handle_description">Arrastrar para reordenar</string>
|
||||
<string name="profiles_delete_title">Eliminar el perfil</string>
|
||||
<string name="profiles_delete_message">¿Estás seguro de que quieres eliminar este perfil? Esto no se puede deshacer.</string>
|
||||
<string name="profiles_delete_action">Borrar</string>
|
||||
<string name="profiles_basic_info_title">Información del dispositivo</string>
|
||||
<!-- Unsaved changes dialog -->
|
||||
</resources>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Seadme kõrvast eemaldamisel peata esitamine.</string>
|
||||
<string name="settings_autopplay_label">Automaatne esitamine</string>
|
||||
<string name="settings_autoplay_description">Automaatne esitamine, kui seade pannakse kõrva.</string>
|
||||
<string name="settings_eardetection_info_label">Kõrva tuvastamisest</string>
|
||||
<string name="settings_eardetection_info_description">Kui tuvastatakse vaid üks klapp, siis seda põhjustab Apple\'i piirang. Tuvastatakse vaid peamine klapp (kasutatakse mikrofonina). Seadista Apple\'i seadmetes: Seaded (Settings) → Bluetooth → AirPods (AirPodid) → Mikrofon (Microphone).</string>
|
||||
<string name="settings_fake_data_label">Valeandmed</string>
|
||||
<string name="settings_fake_data_description">Näita valeandmeid, nt samad seadmed, mida pole olemas.</string>
|
||||
<string name="settings_debug_label">Vealogide seaded</string>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Pauzeer de muziek wanneer u het apparaat van uw oor haalt.</string>
|
||||
<string name="settings_autopplay_label">Automatisch afspelen</string>
|
||||
<string name="settings_autoplay_description">Start audioweergave wanneer het apparaat wordt gedragen.</string>
|
||||
<string name="settings_eardetection_info_label">Oordetectienotitie</string>
|
||||
<string name="settings_eardetection_info_description">Als oordetectie slechts voor één pod werkt, is dit een beperking van Apple. Alleen de \"primaire pod\" (gebruikt voor de microfoon) wordt gedetecteerd. Configureer op Apple-apparaten: Instellingen → Bluetooth → AirPods → Microfoon.</string>
|
||||
<string name="settings_fake_data_label">Nep gegevens</string>
|
||||
<string name="settings_fake_data_description">Toon nepgegevens, d.w.z. simuleer apparaten die niet bestaan.</string>
|
||||
<string name="settings_debug_label">Foutopsporingsinstellingen</string>
|
||||
@@ -98,6 +100,10 @@
|
||||
<string name="translators_thanks_title">Vertalers</string>
|
||||
<string name="translators_thanks_description">darken</string>
|
||||
<string name="widget_description">Een widget dat de laatst gekende apparaatstatus toont.</string>
|
||||
<string name="widget_configuration_title">Selecteer Apparaat</string>
|
||||
<string name="widget_configuration_description">Kies welk apparaatprofiel deze widget moet weergeven.</string>
|
||||
<string name="common_feature_requires_pro_msg">Voor deze functie is CAPod Pro vereist.</string>
|
||||
<string name="widget_no_data_label">Geen data</string>
|
||||
<string name="settings_compat_indirectcallback_title">Onrechtstreekse data aflevering</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Gebruik een alternatieve methode om BLE data van het systeem (broadcast inplaats van callback).</string>
|
||||
<string name="troubleshooter_title">Probleemoplossing</string>
|
||||
@@ -134,6 +140,10 @@
|
||||
<string name="overview_monitoring_active_label">Monitoring voor apparaten</string>
|
||||
<string name="overview_monitoring_active_description">Zorg ervoor dat je apparaat in de buurt is en actief is.</string>
|
||||
<string name="overview_unmatched_devices_label">Niet overeenkomende apparaten</string>
|
||||
<plurals name="overview_unmatched_devices_count">
|
||||
<item quantity="one">%d apparaat zonder overeenkomend profiel</item>
|
||||
<item quantity="other">%d apparaten zonder overeenkomend profiel</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Bluetooth-verbinding</string>
|
||||
<string name="permission_bluetooth_connect_description">Deze app heeft de toestemming voor \'Bluetooth verbinden\' nodig om met gekoppelde apparaten te communiceren en verbindingen tot stand te brengen.</string>
|
||||
<string name="permission_bluetooth_scan_label">Bluetooth-scannen</string>
|
||||
@@ -159,6 +169,17 @@
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">Zaak is geopend</string>
|
||||
<string name="settings_reaction_autoconnect_inear_label">In oor</string>
|
||||
<string name="pods_dual_left_label">Linker pod</string>
|
||||
<string name="pods_dual_right_label">Rechter pod</string>
|
||||
<string name="pods_case_label">Geval</string>
|
||||
<string name="pods_case_status_open_label">Open</string>
|
||||
<string name="pods_case_status_closed_label">Gesloten</string>
|
||||
<string name="pods_connection_state_disconnected_label">Niet verbonden met een apparaat</string>
|
||||
<string name="pods_connection_state_idle_label">Aangesloten op een apparaat, maar inactief</string>
|
||||
<string name="pods_connection_state_music_label">In muziekmodus</string>
|
||||
<string name="pods_connection_state_call_label">In oproepmodus</string>
|
||||
<string name="pods_connection_state_ringing_label">Rinkelen</string>
|
||||
<string name="pods_connection_state_hanging_up_label">Ophangen</string>
|
||||
<string name="pods_connection_state_unknown_label">Onbekende verbindingsstatus</string>
|
||||
<!-- Device profiles -->
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods sturen een statusbericht, waarvan een deel versleuteld is. De encryptiesleutel stelt CAPod in staat het volledige bericht te ontsleutelen. Je hebt hiervoor eenmalige toegang tot een MacBook nodig.</string>
|
||||
<string name="profiles_key_invalid_format">Ongeldige sleutelindeling</string>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Pauzuj odtwarzanie, gdy urządzenia jest wyciągane z ucha.</string>
|
||||
<string name="settings_autopplay_label">Automatyczne odtwarzanie</string>
|
||||
<string name="settings_autoplay_description">Rozpocznij odtwarzanie, gdy urządzenie jest noszone.</string>
|
||||
<string name="settings_eardetection_info_label">Informacja o wykryciu ucha</string>
|
||||
<string name="settings_eardetection_info_description">Jeśli wykrywanie ucha działa tylko dla jednego poda, jest to ograniczenie Apple\'a. Wykryto tylko \"pod\" (używany do mikrofonu). Skonfiguruj na urządzeniach Apple: Ustawienia → Bluetooth → AirPods → Microphone.</string>
|
||||
<string name="settings_fake_data_label">Fałszywe dane</string>
|
||||
<string name="settings_fake_data_description">Wyświetla fałszywe dane, na przykłady symuluje urządzenie, które nie istnieje.</string>
|
||||
<string name="settings_debug_label">Ustawienia debugowania</string>
|
||||
@@ -138,6 +140,12 @@
|
||||
<string name="overview_monitoring_active_label">Monitorowanie urządzeń</string>
|
||||
<string name="overview_monitoring_active_description">Upewnij się, że urządzenie znajduje się w pobliżu i jest aktywne.</string>
|
||||
<string name="overview_unmatched_devices_label">Niedopasowane urządzenia</string>
|
||||
<plurals name="overview_unmatched_devices_count">
|
||||
<item quantity="one">%d urządzenie bez pasującego profilu</item>
|
||||
<item quantity="few">%d urządzenia bez pasującego profilu</item>
|
||||
<item quantity="many">%d urządzeń bez pasującego profilu</item>
|
||||
<item quantity="other">%d urządzeń bez pasującego profilu</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">Połączenie Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Aplikacja wymaga uprawnień do \"Połączenia Bluetooth\", aby oddziaływać na sparowane urządzenia i inicjować połączenia.</string>
|
||||
<string name="permission_bluetooth_scan_label">Skanowanie Bluetooth</string>
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
<string name="settings_autopause_description">Приостановка аудио при удалении устройства из уха.</string>
|
||||
<string name="settings_autopplay_label">Автовоспроизведение</string>
|
||||
<string name="settings_autoplay_description">Включение воспроизведения аудио при начале использования устройства.</string>
|
||||
<string name="settings_eardetection_info_label">Уведомление об обнаружении уха</string>
|
||||
<string name="settings_eardetection_info_description">Если обнаружение уха работает только для одного наушника, это ограничение Apple. Обнаруживается только \"основной наушник\" (используемый для микрофона). Настроить на устройствах Apple: Настройки → Bluetooth → AirPods → Микрофон.</string>
|
||||
<string name="settings_fake_data_label">Пустые данные</string>
|
||||
<string name="settings_fake_data_description">Показывать пустые данные, например, симулировать устройства, которые не существуют.</string>
|
||||
<string name="settings_debug_label">Настройки отладки</string>
|
||||
@@ -99,6 +101,9 @@
|
||||
<string name="translators_thanks_description">gaich
|
||||
AL_Cool_T</string>
|
||||
<string name="widget_description">Виджет показывающий последний известный статус устройства.</string>
|
||||
<string name="widget_configuration_title">Выберите устройство</string>
|
||||
<string name="widget_configuration_description">Выберите, какой профиль устройства должен отображать виджет.</string>
|
||||
<string name="common_feature_requires_pro_msg">Эта функция требует CAPod Pro.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Косвенная доставка данных</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Использовать альтернативный метод для получения данных BLE системы (широковещательная рассылка вместо обратного вызова).</string>
|
||||
<string name="troubleshooter_title">Помощник</string>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="general_share_action">分享</string>
|
||||
<string name="general_done_action">完成</string>
|
||||
<string name="general_cancel_action">取消</string>
|
||||
<string name="general_copy_action">复制</string>
|
||||
<string name="general_thank_you_label">谢谢你</string>
|
||||
<string name="general_upgrade_action">升级</string>
|
||||
@@ -10,6 +11,8 @@
|
||||
<string name="general_save_action">保存</string>
|
||||
<string name="general_guide_action">指南</string>
|
||||
<string name="general_continue_action">继续</string>
|
||||
<string name="general_show_action">显示</string>
|
||||
<string name="general_hide_action">隐藏</string>
|
||||
<string name="general_example_label">例如:%s</string>
|
||||
<string name="upgrade_capod_label">升级 CAPod</string>
|
||||
<string name="upgrade_capod_description">享用额外的功能并支持开发者。</string>
|
||||
@@ -17,12 +20,16 @@
|
||||
<string name="settings_monitor_mode_description">决定本应用在何时收听蓝牙数据。</string>
|
||||
<string name="settings_monitor_connected_notification_label">额外通知</string>
|
||||
<string name="settings_monitor_connected_notification_description">在设备连接时显示一条额外通知。这使您可以禁用“设备状态”通道来隐藏永久性的“无设备”通知。</string>
|
||||
<string name="settings_keep_notification_after_disconnect_label">断开连接后保持通知</string>
|
||||
<string name="settings_keep_notification_after_disconnect_description">即使您的 AirPods 断开连接,继续显示上次已知的电池电量水平</string>
|
||||
<string name="settings_scanner_mode_label">扫描模式</string>
|
||||
<string name="settings_scanner_mode_description">低功耗蓝牙数据扫描器应着重性能还是省电?</string>
|
||||
<string name="settings_autopause_label">自动暂停</string>
|
||||
<string name="settings_autopause_description">从耳中取出时自动暂停音频播放</string>
|
||||
<string name="settings_autopplay_label">自动播放</string>
|
||||
<string name="settings_autoplay_description">戴在耳上时自动开始音频播放</string>
|
||||
<string name="settings_eardetection_info_label">耳机探测通知</string>
|
||||
<string name="settings_eardetection_info_description">如果耳朵检测只能用于一个耳机,这是苹果限制。只检测到“主耳机”(用于麦克风)。 在苹果设备上配置:设置 → 蓝牙 → AirPoods → 麦克风。</string>
|
||||
<string name="settings_fake_data_label">假数据</string>
|
||||
<string name="settings_fake_data_description">显示伪造的数据,即模拟不存在的设备</string>
|
||||
<string name="settings_debug_label">调试设置</string>
|
||||
@@ -33,6 +40,8 @@
|
||||
<string name="settings_autoconnect_description">如果安卓未自动连接,应用会自动询问。这会将监控模式设为“始终”</string>
|
||||
<string name="settings_autoconnect_condition_label">自动连接条件</string>
|
||||
<string name="settings_autoconnect_condition_description">何时连接到您的设备?</string>
|
||||
<string name="settings_devices_label">设备</string>
|
||||
<string name="settings_devices_description">管理您的设备。</string>
|
||||
<string name="settings_reaction_label">动作</string>
|
||||
<string name="settings_reaction_description">响应事件和行为的动作。</string>
|
||||
<string name="settings_category_yourdevice_label">您的设备</string>
|
||||
@@ -67,6 +76,7 @@
|
||||
<string name="settings_support_description">如果你需要一些帮助。</string>
|
||||
<string name="issue_tracker_label">问题追踪器</string>
|
||||
<string name="issue_tracker_description">用于缺陷报告和功能请求的问题追踪系统(仅限英语)。</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
<string name="discord_description">一个闲聊和提问的去处</string>
|
||||
<string name="changelog_label">更新日志</string>
|
||||
<string name="settings_label">设置</string>
|
||||
@@ -88,11 +98,16 @@
|
||||
<string name="help_translate_label">翻译</string>
|
||||
<string name="help_translate_description">帮助翻译本应用</string>
|
||||
<string name="translators_thanks_title">翻译人员</string>
|
||||
<string name="translators_thanks_description">木仔</string>
|
||||
<string name="translators_thanks_description">木仔/chrisvcg</string>
|
||||
<string name="widget_description">显示上次连接设备状态的小部件</string>
|
||||
<string name="widget_configuration_title">选择设备</string>
|
||||
<string name="widget_configuration_description">选择此部件应显示的设备配置文件。</string>
|
||||
<string name="common_feature_requires_pro_msg">此功能需要 CAPod Pro。</string>
|
||||
<string name="widget_no_data_label">暂无数据</string>
|
||||
<string name="settings_compat_indirectcallback_title">间接数据传送</string>
|
||||
<string name="settings_compat_indirectcallback_summary">使用替代方法从系统接收 BLE 数据(广播而不是回调)。</string>
|
||||
<string name="troubleshooter_title">故障排除</string>
|
||||
<string name="troubleshooter_summary">诊断和修复蓝牙连接问题。</string>
|
||||
<string name="troubleshooter_ble_intro_title">低延迟蓝牙广播</string>
|
||||
<string name="troubleshooter_ble_intro_body1">Andpods (以及和其相似的耳机) 使用一种叫做 ”advertisement“ 的BLE技术来广播设备信息和状态。 一些手机不一定能很好地实现这种技术。CAPod能尝试使用不同兼容性选项来修复连接直到数据被接收。把耳机靠近手机并播放音乐,然后开始:</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">开始故障排除</string>
|
||||
@@ -111,6 +126,107 @@
|
||||
<string name="onboarding_body3">CAPod 不含广告且不会收集您的数据。</string>
|
||||
<string name="onboarding_body4">您可以升级 CAPod Pro 以获得额外功能和支持开发者。</string>
|
||||
<!-- Strings from app-common -->
|
||||
<string name="app_name">CAPod</string>
|
||||
<string name="app_name_pro">CAPod Pro</string>
|
||||
<string name="app_name_foss">CAPod FOSS</string>
|
||||
<string name="general_value_not_available_label">N/A</string>
|
||||
<string name="general_error_label">错误</string>
|
||||
<string name="general_grant_permission_action">授予权限</string>
|
||||
<string name="general_manage_devices_action">管理设备</string>
|
||||
<string name="overview_nomaindevice_label">未配置设备</string>
|
||||
<string name="overview_nomaindevice_description">配置您的设备以开始监测电池电量并启用额外功能。</string>
|
||||
<string name="overview_bluetooth_disabled_label">蓝牙已禁用</string>
|
||||
<string name="overview_bluetooth_disabled_description">蓝牙已关闭,请开启 ;)</string>
|
||||
<string name="overview_monitoring_active_label">设备监测</string>
|
||||
<string name="overview_monitoring_active_description">请确保您的设备附近并处于活动状态。</string>
|
||||
<string name="overview_unmatched_devices_label">不匹配的设备</string>
|
||||
<plurals name="overview_unmatched_devices_count">
|
||||
<item quantity="other">没有匹配的 %d 设备信息</item>
|
||||
</plurals>
|
||||
<string name="permission_bluetooth_connect_label">蓝牙连接</string>
|
||||
<string name="permission_bluetooth_connect_description">本应用需要“蓝牙连接”权限以发起连接和与已配对的设备交互。</string>
|
||||
<string name="permission_bluetooth_scan_label">蓝牙扫描</string>
|
||||
<string name="permission_bluetooth_scan_description">“蓝牙扫描”权限允许此应用发现和接收来自附近设备的蓝牙数据,例如您的 AirPod。</string>
|
||||
<string name="permission_bluetooth_label">蓝牙</string>
|
||||
<string name="permission_bluetooth_description">本应用需要“蓝牙”权限才能连接已配对的蓝牙设备</string>
|
||||
<string name="permission_access_fine_location_label">访问精准位置</string>
|
||||
<string name="permission_access_fine_location_description">CAPod 使用“精准定位”权限来接收低功耗蓝牙数据。您的耳机使用低功耗蓝牙技术来广播其状态,本应用「不会」通过蓝牙数据测定您的位置。</string>
|
||||
<string name="permission_background_location_label">在后台访问位置</string>
|
||||
<string name="permission_background_location_description">CAPod 使用“在后台访问位置”权限以在本应用被关闭时继续提供如“显示弹窗”、“自动连接”等功能。此权限允许本应用在后台运行时继续接收蓝牙低功耗数据。本应用并不使用蓝牙数据来窥探您的位置。</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">禁用电池优化</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">电池优化可能导致本应用在后台运行时不能稳定地接收蓝牙数据。</string>
|
||||
<string name="permission_required_title">需要以下权限:</string>
|
||||
<string name="permission_system_alert_window_label">系统警告窗口</string>
|
||||
<string name="permission_system_alert_window_description">允许 CAPod 在其他应用的界面上方显示,以允许如“显示弹窗”功能。</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">低耗电</string>
|
||||
<string name="settings_scanner_mode_balanced_label">平衡</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">低延迟</string>
|
||||
<string name="settings_monitor_mode_manual_label">当应用程序打开时</string>
|
||||
<string name="settings_monitor_mode_automatic_label">设备连接时</string>
|
||||
<string name="settings_monitor_mode_always_label">总是</string>
|
||||
<string name="settings_reaction_autoconnect_whenseen_label">当发现设备时</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">充电仓打开</string>
|
||||
<string name="settings_reaction_autoconnect_inear_label">在耳中</string>
|
||||
<string name="pods_dual_left_label">左耳</string>
|
||||
<string name="pods_dual_right_label">右耳</string>
|
||||
<string name="pods_case_label">充电仓</string>
|
||||
<string name="pods_case_status_open_label">打开</string>
|
||||
<string name="pods_case_status_closed_label">关闭</string>
|
||||
<string name="pods_connection_state_disconnected_label">尚未连接设备</string>
|
||||
<string name="pods_connection_state_idle_label">已连接设备,待机中</string>
|
||||
<string name="pods_connection_state_music_label">处于音乐模式</string>
|
||||
<string name="pods_connection_state_call_label">处于通话模式</string>
|
||||
<string name="pods_connection_state_ringing_label">正在振铃</string>
|
||||
<string name="pods_connection_state_hanging_up_label">正在挂断</string>
|
||||
<string name="pods_connection_state_unknown_label">未知连接状态</string>
|
||||
<string name="pods_unknown_raw_data_label">原始数据</string>
|
||||
<string name="pods_unknown_label">未知设备</string>
|
||||
<string name="pods_unknown_contact_dev">这是一个未知设备,但它使用了类似的消息格式。与我联系以协助添加对它的支持 :)</string>
|
||||
<string name="pods_none_label_short">暂无设备</string>
|
||||
<string name="pods_charging_label">充电中</string>
|
||||
<string name="pods_inear_label">在耳中</string>
|
||||
<string name="pods_microphone_label">麦克风</string>
|
||||
<string name="pods_yours">您的</string>
|
||||
<string name="headset_being_worn_label">正在穿戴的</string>
|
||||
<string name="headset_not_being_worn_label">未穿戴的</string>
|
||||
<string name="pods_case_unknown_state">未知状态</string>
|
||||
<string name="last_seen_x">最后一次在线: %s</string>
|
||||
<string name="first_seen_x">首次在线:%s</string>
|
||||
<string name="permission_post_notifications_label">显示通知</string>
|
||||
<string name="permission_post_notifications_description">"允许 CAPod 显示有关您 AirPods 的通知,例如其连接时的当前状态"</string>
|
||||
<!-- Device profiles -->
|
||||
<string name="profiles_empty_title">未配置设备配置文件</string>
|
||||
<string name="profiles_empty_description">创建设备配置文件来管理具有自定义设置和优先级的多个设备。</string>
|
||||
<string name="profiles_add_action">添加配置文件</string>
|
||||
<string name="profiles_create_title">创建配置文件</string>
|
||||
<string name="profiles_name_label">配置文件名</string>
|
||||
<string name="profiles_name_default">我的耳机</string>
|
||||
<string name="profiles_model_label">设备型号</string>
|
||||
<string name="profiles_paired_device_label">已配对的设备</string>
|
||||
<string name="profiles_paired_device_none">无</string>
|
||||
<string name="profiles_paired_device_none_description">未选择设备</string>
|
||||
<string name="profiles_save_action">保存配置</string>
|
||||
<string name="profiles_drag_handle_description">拖动以重新排序</string>
|
||||
<string name="profiles_delete_title">删除配置</string>
|
||||
<string name="profiles_delete_message">您确定要删除此配置文件吗?此操作无法撤消。</string>
|
||||
<string name="profiles_delete_action">删除</string>
|
||||
<string name="profiles_basic_info_title">设备信息</string>
|
||||
<string name="profiles_basic_info_description">配置您的设备名称、型号和可选的蓝牙配对。</string>
|
||||
<string name="profiles_signal_quality_title">最低信号质量</string>
|
||||
<string name="profiles_signal_quality_description">仅检测信号强度高于此阈值的装置。值越低,检测范围越大,但可能会导致虚假检测。 不要设置太高――蓝牙接收率普遍很低,而且因距离和障碍而异。</string>
|
||||
<string name="profiles_identitykey_label">身份密钥(Identity Key)</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">您设备的身份解析密钥 (IRK),可帮助 CAPod 在附近的设备中识别它。</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">出于隐私原因,AirPods 会经常更改其蓝牙地址。IRK 可帮助 CAPod 识别您的设备。您需要用到一次 MacBook。</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">加密密钥(Encryption Key)</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">您设备的加密密钥,允许 CAPod 检索详细的状态信息。</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods 会发送状态消息,其中一部分是加密的。加密密钥允许 CAPod 解密完整的消息。您需要用到一次 MacBook。</string>
|
||||
<string name="profiles_key_invalid_format">无效的格式</string>
|
||||
<string name="profiles_key_expected_format">预期格式: %1$s</string>
|
||||
<string name="profiles_priority_hint">配置文件排序决定优先级。拖动配置文件以重新排序——当多个设备匹配时,列表中的配置文件优先于优先级别。</string>
|
||||
<!-- Unsaved changes dialog -->
|
||||
<string name="general_unsaved_changes_title">未保存的更改</string>
|
||||
<string name="general_unsaved_changes_message">您有未保存的更改。您想做什么?</string>
|
||||
<string name="general_save_and_exit_action">保存并退出</string>
|
||||
<string name="general_discard_action">放弃</string>
|
||||
<string name="general_keep_editing_action">继续编辑</string>
|
||||
</resources>
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
<string name="settings_autopause_description">Pause audio when removing the device from your ear.</string>
|
||||
<string name="settings_autopplay_label">Auto play</string>
|
||||
<string name="settings_autoplay_description">Start audio playback when device is worn.</string>
|
||||
<string name="settings_eardetection_info_label">Ear detection note</string>
|
||||
<string name="settings_eardetection_info_description">If ear detection only works for one pod, this is an Apple limitation. Only the \"primary pod\" (used for microphone) is detected. Configure on Apple devices: Settings → Bluetooth → AirPods → Microphone.</string>
|
||||
<string name="settings_fake_data_label">Fake data</string>
|
||||
<string name="settings_fake_data_description">Show fake data, i.e., simulate devices that don\’t exist.</string>
|
||||
<string name="settings_debug_label">Debug settings</string>
|
||||
|
||||
@@ -21,6 +21,12 @@
|
||||
android:summary="@string/settings_autopause_description"
|
||||
android:title="@string/settings_autopause_label" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_baseline_question_mark_24"
|
||||
android:selectable="false"
|
||||
android:summary="@string/settings_eardetection_info_description"
|
||||
android:title="@string/settings_eardetection_info_label" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_autoconnect_label">
|
||||
|
||||
@@ -3,10 +3,20 @@ plugins {
|
||||
`java-library`
|
||||
}
|
||||
|
||||
gradlePlugin {
|
||||
plugins {
|
||||
create("projectConfigPlugin") {
|
||||
id = "projectConfig"
|
||||
implementationClass = "ProjectConfigPlugin"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("com.android.tools.build:gradle:8.13.0")
|
||||
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.10")
|
||||
|
||||
@@ -1,64 +1,56 @@
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.util.Properties
|
||||
|
||||
object ProjectConfig {
|
||||
const val packageName = "eu.darken.capod"
|
||||
open class ProjectConfig {
|
||||
val packageName = "eu.darken.capod"
|
||||
val minSdk = 26
|
||||
|
||||
const val minSdk = 26
|
||||
const val compileSdk = 36
|
||||
const val targetSdk = 36
|
||||
val compileSdk = 36
|
||||
val targetSdk = 36
|
||||
|
||||
object Version {
|
||||
lateinit var version: Version
|
||||
|
||||
override fun toString(): String {
|
||||
return "ProjectConfig($packageName, min=$minSdk, compile=$compileSdk, target=$targetSdk, version=$version)"
|
||||
}
|
||||
|
||||
fun init(project: Project) {
|
||||
val versionProperties = Properties().apply {
|
||||
load(FileInputStream(File("version.properties")))
|
||||
val propsPath = File(project.rootDir, "version.properties")
|
||||
println("Version: From $propsPath:")
|
||||
load(FileInputStream(propsPath))
|
||||
println("$this")
|
||||
}
|
||||
val major = versionProperties.getProperty("project.versioning.major").toInt()
|
||||
val minor = versionProperties.getProperty("project.versioning.minor").toInt()
|
||||
val patch = versionProperties.getProperty("project.versioning.patch").toInt()
|
||||
val build = versionProperties.getProperty("project.versioning.build").toInt()
|
||||
version = Version(
|
||||
major = versionProperties.getProperty("project.versioning.major").toInt(),
|
||||
minor = versionProperties.getProperty("project.versioning.minor").toInt(),
|
||||
patch = versionProperties.getProperty("project.versioning.patch").toInt(),
|
||||
build = versionProperties.getProperty("project.versioning.build").toInt(),
|
||||
type = versionProperties.getProperty("project.versioning.type"),
|
||||
)
|
||||
}
|
||||
|
||||
val name = "${major}.${minor}.${patch}-rc${build}"
|
||||
val code = major * 10000000 + minor * 100000 + patch * 1000 + build * 10
|
||||
data class Version(
|
||||
val major: Int,
|
||||
val minor: Int,
|
||||
val patch: Int,
|
||||
val build: Int,
|
||||
val type: String,
|
||||
) {
|
||||
val name: String
|
||||
get() = "${major}.${minor}.${patch}-$type${build}"
|
||||
val code: Long
|
||||
get() = major * 10000000 + minor * 100000 + patch * 1000 + build * 10L
|
||||
}
|
||||
}
|
||||
|
||||
fun lastCommitHash(): String = Runtime.getRuntime().exec("git rev-parse --short HEAD").let { process ->
|
||||
process.waitFor()
|
||||
val output = process.inputStream.use { input ->
|
||||
input.bufferedReader().use {
|
||||
it.readText()
|
||||
}
|
||||
class ProjectConfigPlugin : Plugin<Project> {
|
||||
override fun apply(project: Project) {
|
||||
val extension = project.extensions.create("projectConfig", ProjectConfig::class.java)
|
||||
extension.init(project)
|
||||
project.afterEvaluate { println("ProjectConfigPlugin loaded: $extension") }
|
||||
}
|
||||
process.destroy()
|
||||
output.trim()
|
||||
}
|
||||
|
||||
fun com.android.build.api.dsl.SigningConfig.setupCredentials(
|
||||
signingPropsPath: File? = null
|
||||
) {
|
||||
|
||||
val keyStoreFromEnv = System.getenv("STORE_PATH")?.let { File(it) }
|
||||
|
||||
if (keyStoreFromEnv?.exists() == true) {
|
||||
println("Using signing data from environment variables.")
|
||||
storeFile = keyStoreFromEnv
|
||||
storePassword = System.getenv("STORE_PASSWORD")
|
||||
keyAlias = System.getenv("KEY_ALIAS")
|
||||
keyPassword = System.getenv("KEY_PASSWORD")
|
||||
} else {
|
||||
println("Using signing data from properties file.")
|
||||
val props = Properties().apply {
|
||||
signingPropsPath?.takeIf { it.canRead() }?.let { load(FileInputStream(it)) }
|
||||
}
|
||||
|
||||
val keyStorePath = props.getProperty("release.storePath")?.let { File(it) }
|
||||
|
||||
if (keyStorePath?.exists() == true) {
|
||||
storeFile = keyStorePath
|
||||
storePassword = props.getProperty("release.storePassword")
|
||||
keyAlias = props.getProperty("release.keyAlias")
|
||||
keyPassword = props.getProperty("release.keyPassword")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
import com.android.build.api.dsl.SigningConfig
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.tasks.testing.Test
|
||||
import org.gradle.api.tasks.testing.TestDescriptor
|
||||
import org.gradle.api.tasks.testing.TestListener
|
||||
import org.gradle.api.tasks.testing.TestResult
|
||||
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
||||
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.util.Properties
|
||||
|
||||
val Project.projectConfig: ProjectConfig
|
||||
get() = extensions.findByType(ProjectConfig::class.java)!!
|
||||
|
||||
fun SigningConfig.setupCredentials(
|
||||
signingPropsPath: File? = null
|
||||
) {
|
||||
|
||||
val keyStoreFromEnv = System.getenv("STORE_PATH")?.let { File(it) }
|
||||
|
||||
if (keyStoreFromEnv?.exists() == true) {
|
||||
println("Using signing data from environment variables.")
|
||||
storeFile = keyStoreFromEnv
|
||||
storePassword = System.getenv("STORE_PASSWORD")
|
||||
keyAlias = System.getenv("KEY_ALIAS")
|
||||
keyPassword = System.getenv("KEY_PASSWORD")
|
||||
} else {
|
||||
println("Using signing data from properties file.")
|
||||
val props = Properties().apply {
|
||||
signingPropsPath?.takeIf { it.canRead() }?.let { load(FileInputStream(it)) }
|
||||
}
|
||||
|
||||
val keyStorePath = props.getProperty("release.storePath")?.let { File(it) }
|
||||
|
||||
if (keyStorePath?.exists() == true) {
|
||||
storeFile = keyStorePath
|
||||
storePassword = props.getProperty("release.storePassword")
|
||||
keyAlias = props.getProperty("release.keyAlias")
|
||||
keyPassword = props.getProperty("release.keyPassword")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Test.setupTestLogging() {
|
||||
testLogging {
|
||||
events(
|
||||
TestLogEvent.FAILED,
|
||||
TestLogEvent.PASSED,
|
||||
TestLogEvent.SKIPPED,
|
||||
// TestLogEvent.STANDARD_OUT,
|
||||
)
|
||||
exceptionFormat = TestExceptionFormat.FULL
|
||||
showExceptions = true
|
||||
showCauses = true
|
||||
showStackTraces = true
|
||||
|
||||
addTestListener(object : TestListener {
|
||||
override fun beforeSuite(suite: TestDescriptor) {}
|
||||
override fun beforeTest(testDescriptor: TestDescriptor) {}
|
||||
override fun afterTest(testDescriptor: TestDescriptor, result: TestResult) {}
|
||||
override fun afterSuite(suite: TestDescriptor, result: TestResult) {
|
||||
if (suite.parent != null) {
|
||||
val messages = """
|
||||
------------------------------------------------------------------------------------------------
|
||||
| ${result.resultType} ${result.testCount} tests: ${result.successfulTestCount} passed, ${result.failedTestCount} failed, ${result.skippedTestCount} skipped)
|
||||
------------------------------------------------------------------------------------------------
|
||||
|
||||
""".trimIndent()
|
||||
println(messages)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,8 @@ El CAPod és una aplicació complementària per als AirPods.
|
||||
|
||||
Característiques:
|
||||
|
||||
* Nivell de bateria per als AirPods i fundes.
|
||||
* Estat de càrrega per als AirPods i fundes.
|
||||
* Nivell de bateria per als auriculars i fundes.
|
||||
* Estat de càrrega per als auriculars i fundes.
|
||||
* Informació addicional sobre la connexió, micròfon i funda.
|
||||
* Pot rebre i mostrar tots els dispositius propers.
|
||||
* Detecció de l'oïda amb reproducció/pausa automàtica.
|
||||
|
||||
@@ -13,6 +13,6 @@ Funktionen:
|
||||
CAPod ist werbefrei. Einige Funktionen erfordern einen In-App-Kauf.
|
||||
|
||||
Die beliebtesten AirPods und Beats Kopfhörer werden unterstützt.
|
||||
Wenn Ihr Gerät AirPods ähnelt, aber noch nicht unterstützt wird, senden Sie mir eine kurze Mail.
|
||||
Wenn Dein Gerät AirPods ähnelt, aber noch nicht unterstützt wird, schick mir ne kurze Mail.
|
||||
|
||||
Hast du eine coole Idee für ein neues Feature? Mail mir!
|
||||
@@ -1,2 +0,0 @@
|
||||
v1.0.0:
|
||||
- Initial release.
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031300)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031301)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031302)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031303)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031304)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031305)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031306)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,4 +0,0 @@
|
||||
v1.3.13(1031307)
|
||||
• Updated translations
|
||||
• Updated internal dependencies
|
||||
• Tweaked placement of UI elements
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes and performance improvements.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
|
||||
A detailed changelog is available on GitHub:
|
||||
https://github.com/d4rken-org/capod/releases/latest
|
||||
@@ -1,5 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
|
||||
A detailed changelog is available on GitHub:
|
||||
https://github.com/d4rken-org/capod/releases/latest
|
||||
@@ -1,5 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
|
||||
A detailed changelog is available on GitHub:
|
||||
https://github.com/d4rken-org/capod/releases/latest
|
||||
@@ -1,5 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
|
||||
A detailed changelog is available on GitHub:
|
||||
https://github.com/d4rken-org/capod/releases/latest
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1 +0,0 @@
|
||||
Support for AirPods Pro 2 with USB-C
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,2 +0,0 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
Updates contain bugfixes, performance improvements and maybe new features.
|
||||
A detailed changelog is always available on GitHub.
|
||||
|
||||
FYI: It’s just me here, sometimes replies might take a bit. Sorry for that!
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
Updates contain bugfixes, performance improvements and maybe new features.
|
||||
A detailed changelog is always available on GitHub.
|
||||
|
||||
FYI: It’s just me here, sometimes replies might take a bit. Sorry for that!
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
Updates contain bugfixes, performance improvements and maybe new features.
|
||||
A detailed changelog is always available on GitHub.
|
||||
|
||||
FYI: It’s just me here, sometimes replies might take a bit. Sorry for that!
|
||||
¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -1,5 +0,0 @@
|
||||
🐛 Bug fixes, 🚀 performance boosts, maybe even ✨ new features.
|
||||
|
||||
Changelog: https://capod.darken.eu/changelog
|
||||
|
||||
FYI: It’s just me here — thanks for understanding if replies take a bit. ¯\_(ツ)_/¯
|
||||
@@ -15,4 +15,4 @@ CAPod no tiene publicidad. Algunas funciones requieren una compra dentro de la a
|
||||
Son compatibles los AirPods y los dispositivos Beats más populares.
|
||||
Si tu dispositivo es similar a los AirPods pero aún no es compatible, envíame un breve correo electrónico.
|
||||
|
||||
¿Tienes una buena idea para una nueva característica? ¡Háznoslo saber!
|
||||
¿Tienes una buena idea para una nueva característica? ¡Contáctanos!
|
||||
+5
-20
@@ -308,6 +308,7 @@ do-version-properties() {
|
||||
V_MINOR_REGEX='^([a-zA-Z\.]+minor)=([0-9]+)$'
|
||||
V_PATCH_REGEX='^([a-zA-Z\.]+patch)=([0-9]+)$'
|
||||
V_BUILD_REGEX='^([a-zA-Z\.]+build)=([0-9]+)$'
|
||||
V_TYPE_REGEX='^([a-zA-Z\.]+type)=(rc|beta)$'
|
||||
|
||||
PROPS_FILE_NEW=""
|
||||
|
||||
@@ -333,6 +334,10 @@ do-version-properties() {
|
||||
updated="${BASH_REMATCH[1]}=${V_BUILD_COUNTER}"
|
||||
echo "Found build, replacing: $line -> $updated"
|
||||
PROPS_FILE_NEW+=$updated
|
||||
elif [[ $line =~ $V_TYPE_REGEX ]]; then
|
||||
updated="${BASH_REMATCH[1]}=${V_BUILD_TYPE}"
|
||||
echo "Found type, replacing: $line -> $updated"
|
||||
PROPS_FILE_NEW+=$updated
|
||||
else
|
||||
PROPS_FILE_NEW+="$line"
|
||||
fi
|
||||
@@ -360,25 +365,6 @@ do-versionfile() {
|
||||
git add VERSION
|
||||
}
|
||||
|
||||
# Update a version file that can be parsed by third-parties, e.g. F-Droid
|
||||
do-fastlane-changelog() {
|
||||
CHANGELOGS_DIR="fastlane/metadata/android/en-US/changelogs"
|
||||
NEW_CHANGELOG="$CHANGELOGS_DIR/$V_CODE.txt"
|
||||
|
||||
[ -f "$NEW_CHANGELOG" ] && return
|
||||
|
||||
echo -e "\n${S_NOTICE}Creating new default fastlane changelog file for $V_CODE...\n"
|
||||
|
||||
cp "$CHANGELOGS_DIR/default.txt" "$NEW_CHANGELOG"
|
||||
|
||||
cat "$NEW_CHANGELOG"
|
||||
|
||||
echo -e "\n\n${I_OK} ${S_NOTICE}${ACTION_MSG} [${S_NORM}$NEW_CHANGELOG${S_NOTICE}] file"
|
||||
|
||||
# Stage file for commit
|
||||
git add "$CHANGELOGS_DIR/$V_CODE.txt"
|
||||
}
|
||||
|
||||
# Does the release branch already exist?
|
||||
check-branch-exist() {
|
||||
[ "$FLAG_NOBRANCH" = true ] && return
|
||||
@@ -467,7 +453,6 @@ echo -e "\n${S_LIGHT}––––––"
|
||||
# Update steps
|
||||
do-version-properties
|
||||
do-versionfile
|
||||
do-fastlane-changelog
|
||||
do-branch
|
||||
do-commit
|
||||
create-tag "${V_NAME}" "${REL_NOTE}"
|
||||
|
||||
+3
-2
@@ -1,6 +1,7 @@
|
||||
### Updated by release.sh ###
|
||||
project.versioning.major=3
|
||||
project.versioning.minor=0
|
||||
project.versioning.patch=0
|
||||
project.versioning.build=1
|
||||
project.versioning.patch=2
|
||||
project.versioning.build=0
|
||||
project.versioning.type=rc
|
||||
#############################
|
||||
|
||||
Reference in New Issue
Block a user