mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
Compare commits
38
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de609b4d05 | ||
|
|
7e6e9eee36 | ||
|
|
a321bb733c | ||
|
|
490369a3e1 | ||
|
|
a2cce044ef | ||
|
|
8884bb88c7 | ||
|
|
313b0e9131 | ||
|
|
47048cf7e7 | ||
|
|
ef1c4615aa | ||
|
|
c9587b2bf0 | ||
|
|
669fa2fd22 | ||
|
|
fb8ec72825 | ||
|
|
d1687f574f | ||
|
|
72f47bec1f | ||
|
|
20e8aecf83 | ||
|
|
ee41474670 | ||
|
|
ac29e28eda | ||
|
|
58b96cbdee | ||
|
|
0c1fc15251 | ||
|
|
7b8e0cc952 | ||
|
|
c8aa591feb | ||
|
|
afa4d6e807 | ||
|
|
e6b7eda9e7 | ||
|
|
bbc4e05c8f | ||
|
|
50bccbaa2e | ||
|
|
d71e83a2af | ||
|
|
92a67702b7 | ||
|
|
2f9185efa7 | ||
|
|
a10216520b | ||
|
|
d5354e5156 | ||
|
|
a8f9b1f732 | ||
|
|
08a796e621 | ||
|
|
15f3a68f8e | ||
|
|
e0bc6dafa0 | ||
|
|
430c1236d7 | ||
|
|
3ac357161a | ||
|
|
3c5f1bf21f | ||
|
|
5544cd3770 |
@@ -7,46 +7,47 @@ on:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build-all:
|
||||
name: Assemble all variants
|
||||
build-modules:
|
||||
name: Build apps
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
flavor: [ Foss,Gplay ]
|
||||
variant: [ Debug ]
|
||||
module: [ app,app-wear ]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
distribution: 'adopt'
|
||||
cache: gradle
|
||||
- name: Grant execute permission for gradlew
|
||||
run: chmod +x gradlew
|
||||
|
||||
- name: Build (Flavor ${{ matrix.flavor }}, Variant ${{ matrix.variant }})
|
||||
run: ./gradlew assemble${{ matrix.flavor }}${{ matrix.variant }}
|
||||
- name: Build module
|
||||
run: ./gradlew ${{ matrix.module }}:assemble${{ matrix.flavor }}${{ matrix.variant }}
|
||||
|
||||
test-all:
|
||||
name: Run all tests
|
||||
test-modules:
|
||||
name: Unit tests
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
flavor: [ Foss,Gplay ]
|
||||
variant: [ Release ]
|
||||
flavor: [ testFoss,testGplay ]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
distribution: 'adopt'
|
||||
cache: gradle
|
||||
- name: Grant execute permission for gradlew
|
||||
run: chmod +x gradlew
|
||||
|
||||
- name: Run tests (Flavor ${{ matrix.flavor }}, Variant ${{ matrix.variant }})
|
||||
run: ./gradlew test${{ matrix.flavor }}${{ matrix.variant }}
|
||||
- name: Test modules
|
||||
run: ./gradlew ${{ matrix.flavor }}${{ matrix.variant }}UnitTest
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: 11
|
||||
java-version: 17
|
||||
|
||||
- name: Assemble beta APK
|
||||
if: contains(steps.tagger.outputs.tag, '-beta')
|
||||
@@ -130,7 +130,7 @@ jobs:
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: 11
|
||||
java-version: 17
|
||||
|
||||
- name: Set up ruby env
|
||||
uses: ruby/setup-ruby@v1
|
||||
@@ -138,6 +138,15 @@ jobs:
|
||||
ruby-version: 2.7.6
|
||||
bundler-cache: true
|
||||
|
||||
- name: Assemble WearOS beta and upload to Google Play
|
||||
if: contains(steps.tagger.outputs.tag, '-beta')
|
||||
run: bundle exec fastlane beta_wearos
|
||||
env:
|
||||
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
|
||||
|
||||
- name: Assemble beta and upload to Google Play
|
||||
if: contains(steps.tagger.outputs.tag, '-beta')
|
||||
run: bundle exec fastlane beta
|
||||
@@ -147,6 +156,15 @@ jobs:
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
|
||||
|
||||
- name: Assemble WearOS production and upload to Google Play
|
||||
if: "!contains(steps.tagger.outputs.tag, '-beta')"
|
||||
run: bundle exec fastlane production_wearos
|
||||
env:
|
||||
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
|
||||
|
||||
- name: Assemble production and upload to Google Play
|
||||
if: "!contains(steps.tagger.outputs.tag, '-beta')"
|
||||
run: bundle exec fastlane production
|
||||
|
||||
@@ -8,6 +8,7 @@ apply(plugin = "dagger.hilt.android.plugin")
|
||||
|
||||
android {
|
||||
compileSdk = ProjectConfig.compileSdk
|
||||
namespace = "${ProjectConfig.packageName}.common"
|
||||
|
||||
defaultConfig {
|
||||
minSdk = ProjectConfig.minSdk
|
||||
@@ -33,12 +34,12 @@ android {
|
||||
|
||||
compileOptions {
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
jvmTarget = "17"
|
||||
freeCompilerArgs = freeCompilerArgs + listOf(
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package eu.darken.capod.common.bluetooth
|
||||
|
||||
import android.bluetooth.BluetoothDevice
|
||||
import java.time.Instant
|
||||
|
||||
data class BluetoothDevice2(
|
||||
internal val internal: BluetoothDevice,
|
||||
val seenFirstAt: Instant,
|
||||
) {
|
||||
val address: String
|
||||
get() = internal.address
|
||||
|
||||
val name: String?
|
||||
get() = internal.name
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
package eu.darken.capod.common.bluetooth
|
||||
|
||||
import android.bluetooth.*
|
||||
import android.bluetooth.BluetoothAdapter
|
||||
import android.bluetooth.BluetoothDevice
|
||||
import android.bluetooth.BluetoothHeadset
|
||||
import android.bluetooth.BluetoothManager
|
||||
import android.bluetooth.BluetoothProfile
|
||||
import android.bluetooth.le.BluetoothLeScanner
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
@@ -12,14 +16,24 @@ import android.os.ParcelUuid
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import eu.darken.capod.common.coroutine.DispatcherProvider
|
||||
import eu.darken.capod.common.debug.Bugs
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.*
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.ERROR
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.WARN
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import eu.darken.capod.pods.core.apple.protocol.ContinuityProtocol
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.callbackFlow
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.flatMapLatest
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import java.io.IOException
|
||||
import java.time.Instant
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@@ -74,7 +88,7 @@ class BluetoothManager2 @Inject constructor(
|
||||
}
|
||||
|
||||
override fun onServiceDisconnected(profile: Int) {
|
||||
log(TAG, WARN) { "onServiceDisconnected(profile=$profile" }
|
||||
log(TAG, WARN) { "onServiceDisconnected(profile=$profile)" }
|
||||
close(IOException("BluetoothProfile service disconnected (profile=$profile)"))
|
||||
}
|
||||
|
||||
@@ -128,6 +142,7 @@ class BluetoothManager2 @Inject constructor(
|
||||
log(TAG) { "Adding $device to current devices $currentDevices" }
|
||||
trySend(currentDevices.plus(device))
|
||||
}
|
||||
|
||||
BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
|
||||
log(TAG) { "Removing $device from current devices $currentDevices" }
|
||||
trySend(currentDevices.minus(device))
|
||||
@@ -145,23 +160,54 @@ class BluetoothManager2 @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private val seenDevicesLock = Mutex()
|
||||
private val seenDevicesCache = mutableMapOf<String, Instant>()
|
||||
|
||||
fun connectedDevices(
|
||||
featureFilter: Set<ParcelUuid> = ContinuityProtocol.BLE_FEATURE_UUIDS
|
||||
): Flow<List<BluetoothDevice>> = isBluetoothEnabled
|
||||
): Flow<List<BluetoothDevice2>> = isBluetoothEnabled
|
||||
.flatMapLatest { monitorDevicesForProfile(BluetoothProfile.HEADSET) }
|
||||
.map { devices ->
|
||||
devices.filter { device ->
|
||||
featureFilter.any { feature ->
|
||||
device.hasFeature(feature)
|
||||
}
|
||||
val currentAddresses = devices.map { it.address }
|
||||
|
||||
seenDevicesLock.withLock {
|
||||
val cleanedCache = seenDevicesCache.filterKeys { currentAddresses.contains(it) }
|
||||
seenDevicesCache.clear()
|
||||
seenDevicesCache.putAll(cleanedCache)
|
||||
}
|
||||
|
||||
devices
|
||||
.filter { device -> featureFilter.any { feature -> device.hasFeature(feature) } }
|
||||
.map { device ->
|
||||
BluetoothDevice2(
|
||||
internal = device,
|
||||
seenFirstAt = seenDevicesLock.withLock {
|
||||
seenDevicesCache[device.address] ?: Instant.now().also {
|
||||
seenDevicesCache[device.address] = it
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun bondedDevices(): Flow<Set<BluetoothDevice>> = flow {
|
||||
emit(adapter?.bondedDevices ?: throw IllegalStateException("Bluetooth adapter unavailable"))
|
||||
fun bondedDevices(): Flow<Set<BluetoothDevice2>> = flow {
|
||||
val rawDevices = adapter?.bondedDevices ?: throw IllegalStateException("Bluetooth adapter unavailable")
|
||||
val wrappedDevices = rawDevices.map { device ->
|
||||
|
||||
BluetoothDevice2(
|
||||
internal = device,
|
||||
seenFirstAt = seenDevicesLock.withLock {
|
||||
seenDevicesCache[device.address] ?: Instant.now().also {
|
||||
seenDevicesCache[device.address] = it
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
}.toSet()
|
||||
emit(wrappedDevices)
|
||||
}
|
||||
|
||||
suspend fun nudgeConnection(device: BluetoothDevice): Boolean = getBluetoothProfile().map { bluetoothProfile ->
|
||||
suspend fun nudgeConnection(device: BluetoothDevice2): Boolean = getBluetoothProfile().map { bluetoothProfile ->
|
||||
try {
|
||||
log(TAG) { "Nudging Android connection to $device" }
|
||||
|
||||
@@ -169,7 +215,7 @@ class BluetoothManager2 @Inject constructor(
|
||||
"connect", BluetoothDevice::class.java
|
||||
).apply { isAccessible = true }
|
||||
|
||||
connectMethod.invoke(bluetoothProfile.proxy, device)
|
||||
connectMethod.invoke(bluetoothProfile.proxy, device.internal)
|
||||
|
||||
log(TAG) { "Nudged connection to $device" }
|
||||
true
|
||||
|
||||
@@ -3,6 +3,7 @@ package eu.darken.capod.common.uix
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.lifecycle.LiveData
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
@@ -15,6 +16,8 @@ abstract class Activity2 : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
log(tag, VERBOSE) { "onCreate(savedInstanceState=$savedInstanceState)" }
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows( window, false )
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
||||
@@ -7,6 +7,8 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
@@ -40,6 +42,17 @@ abstract class Fragment2(@LayoutRes val layoutRes: Int?) : Fragment(layoutRes ?:
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
log(tag, VERBOSE) { "onViewCreated(view=$view, savedInstanceState=$savedInstanceState)" }
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
|
||||
val systemWindowInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
v.setPadding(
|
||||
v.paddingLeft,
|
||||
systemWindowInsets.top,
|
||||
v.paddingRight,
|
||||
0
|
||||
)
|
||||
insets
|
||||
}
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
|
||||
@@ -47,6 +47,11 @@ class ReactionSettings @Inject constructor(
|
||||
false
|
||||
)
|
||||
|
||||
val showPopUpOnConnection = preferences.createFlowPreference(
|
||||
"reaction.popup.connected",
|
||||
false
|
||||
)
|
||||
|
||||
val onePodMode = preferences.createFlowPreference(
|
||||
"reaction.onepod.enabled",
|
||||
false
|
||||
@@ -58,6 +63,7 @@ class ReactionSettings @Inject constructor(
|
||||
autoConnect,
|
||||
autoConnectCondition,
|
||||
showPopUpOnCaseOpen,
|
||||
showPopUpOnConnection,
|
||||
onePodMode,
|
||||
)
|
||||
}
|
||||
@@ -1,15 +1,26 @@
|
||||
package eu.darken.capod.reaction.core.popup
|
||||
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.*
|
||||
import eu.darken.capod.common.bluetooth.BluetoothManager2
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.INFO
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.WARN
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import eu.darken.capod.common.flow.setupCommonEventHandlers
|
||||
import eu.darken.capod.common.flow.withPrevious
|
||||
import eu.darken.capod.main.core.GeneralSettings
|
||||
import eu.darken.capod.monitor.core.PodMonitor
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import eu.darken.capod.pods.core.apple.DualApplePods
|
||||
import eu.darken.capod.reaction.core.ReactionSettings
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.distinctUntilChangedBy
|
||||
import kotlinx.coroutines.flow.emptyFlow
|
||||
import kotlinx.coroutines.flow.flatMapLatest
|
||||
import kotlinx.coroutines.flow.mapNotNull
|
||||
import kotlinx.coroutines.flow.merge
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
import javax.inject.Inject
|
||||
@@ -19,11 +30,13 @@ import javax.inject.Singleton
|
||||
class PopUpReaction @Inject constructor(
|
||||
private val podMonitor: PodMonitor,
|
||||
private val reactionSettings: ReactionSettings,
|
||||
private val generalSettings: GeneralSettings,
|
||||
private val bluetoothManager: BluetoothManager2,
|
||||
) {
|
||||
|
||||
private val coolDowns = mutableMapOf<PodDevice.Id, Instant>()
|
||||
private val caseCoolDowns = mutableMapOf<PodDevice.Id, Instant>()
|
||||
|
||||
fun monitor(): Flow<Event> = reactionSettings.showPopUpOnCaseOpen.flow
|
||||
private fun monitorCase(): Flow<Event> = reactionSettings.showPopUpOnCaseOpen.flow
|
||||
.flatMapLatest { isEnabled ->
|
||||
if (isEnabled) {
|
||||
podMonitor.mainDevice.distinctUntilChangedBy { it?.rawDataHex }
|
||||
@@ -32,7 +45,7 @@ class PopUpReaction @Inject constructor(
|
||||
}
|
||||
}
|
||||
.withPrevious()
|
||||
.setupCommonEventHandlers(TAG) { "monitor" }
|
||||
.setupCommonEventHandlers(TAG) { "popUpCase" }
|
||||
.mapNotNull { (previous, current) ->
|
||||
if (previous !is DualApplePods? || current !is DualApplePods) {
|
||||
return@mapNotNull null
|
||||
@@ -54,35 +67,37 @@ class PopUpReaction @Inject constructor(
|
||||
}
|
||||
log(TAG) { "Case lid status changed for monitored device." }
|
||||
|
||||
tryPopWindow(current)
|
||||
throttleCasePopUps(current)
|
||||
}
|
||||
|
||||
private suspend fun tryPopWindow(current: DualApplePods): Event? = when {
|
||||
private fun throttleCasePopUps(current: DualApplePods): Event? = when {
|
||||
current.caseLidState == DualApplePods.LidState.OPEN -> {
|
||||
log(TAG, INFO) { "Show popup" }
|
||||
|
||||
val now = Instant.now()
|
||||
val lastShown = coolDowns[current.identifier] ?: Instant.MIN
|
||||
val lastShown = caseCoolDowns[current.identifier] ?: Instant.MIN
|
||||
val sinceLastPop = Duration.between(lastShown, now)
|
||||
log(TAG) { "Time since last popup: $sinceLastPop" }
|
||||
log(TAG) { "Time since last case popup: $sinceLastPop" }
|
||||
|
||||
if (sinceLastPop >= Duration.ofSeconds(10)) {
|
||||
coolDowns[current.identifier] = Instant.now()
|
||||
caseCoolDowns[current.identifier] = Instant.now()
|
||||
Event.PopupShow(device = current)
|
||||
} else {
|
||||
log(TAG, INFO) { "Popup is still on cooldown: $sinceLastPop" }
|
||||
log(TAG, INFO) { "Case popup is still on cooldown: $sinceLastPop" }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
current.caseLidState != DualApplePods.LidState.OPEN -> {
|
||||
when (current.caseLidState) {
|
||||
DualApplePods.LidState.CLOSED -> {
|
||||
log(TAG, INFO) { "Lid was actively closed, resetting cooldown." }
|
||||
coolDowns.remove(current.identifier)
|
||||
caseCoolDowns.remove(current.identifier)
|
||||
}
|
||||
|
||||
else -> {
|
||||
log(TAG, WARN) { "Lid was was not actively closed, refreshing cooldown." }
|
||||
coolDowns[current.identifier] = Instant.now()
|
||||
caseCoolDowns[current.identifier] = Instant.now()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,9 +105,78 @@ class PopUpReaction @Inject constructor(
|
||||
|
||||
Event.PopupHide()
|
||||
}
|
||||
|
||||
else -> null
|
||||
}
|
||||
|
||||
private val connectionCoolDowns = mutableMapOf<String, Instant>()
|
||||
|
||||
private fun monitorConnection(): Flow<Event> = reactionSettings.showPopUpOnConnection.flow
|
||||
.flatMapLatest { isEnabled ->
|
||||
if (!isEnabled) return@flatMapLatest emptyFlow()
|
||||
|
||||
combine(
|
||||
generalSettings.mainDeviceAddress.flow,
|
||||
bluetoothManager.connectedDevices().distinctUntilChanged(),
|
||||
podMonitor.mainDevice.distinctUntilChangedBy { it?.rawDataHex },
|
||||
) { targetAddress, devices, broadcast ->
|
||||
log(TAG) { "$targetAddress $broadcast $devices " }
|
||||
val direct = devices.singleOrNull { it.address == targetAddress }.also {
|
||||
log(TAG, VERBOSE) { "Connected main device is $it" }
|
||||
}
|
||||
if (direct == null) {
|
||||
connectionCoolDowns.remove(targetAddress).also {
|
||||
if (it != null) log(TAG) { "Cleared connection cooldown for $targetAddress due to disconect" }
|
||||
}
|
||||
}
|
||||
if (direct != null && broadcast != null) direct to broadcast else null
|
||||
}
|
||||
}
|
||||
.withPrevious()
|
||||
.mapNotNull { (previouss, currents) ->
|
||||
val previousConnected = previouss?.first
|
||||
log(TAG, VERBOSE) { "previousConnected: $previousConnected" }
|
||||
val previousBroadcasted = previouss?.second
|
||||
log(TAG, VERBOSE) { "previousBroadcasted: $previousBroadcasted" }
|
||||
val currentConnected = currents?.first
|
||||
log(TAG, VERBOSE) { "currentConnected: $currentConnected" }
|
||||
val currentBroadcasted = currents?.second
|
||||
log(TAG, VERBOSE) { "currentBroadcasted: $currentBroadcasted" }
|
||||
|
||||
if (previousConnected != null && previousBroadcasted != null && currentConnected == null) {
|
||||
return@mapNotNull Event.PopupHide()
|
||||
}
|
||||
|
||||
if (currentConnected == null || currentBroadcasted == null) {
|
||||
// We need an active connection
|
||||
return@mapNotNull null
|
||||
}
|
||||
|
||||
val ageOfBroadcastedDevice = Duration.between(Instant.now(), currentBroadcasted.seenFirstAt)
|
||||
val ageOfConnectedDevice = Duration.between(Instant.now(), currentConnected.seenFirstAt)
|
||||
if (ageOfBroadcastedDevice > (ageOfConnectedDevice + Duration.ofSeconds(30))) {
|
||||
// This is likely a false positive, some random nearby device
|
||||
// We expect the first broadcasts to not be much older than the first connection
|
||||
log(TAG, VERBOSE) { "Current broadcasted main device is probably a false-positive" }
|
||||
return@mapNotNull null
|
||||
}
|
||||
|
||||
val now = Instant.now()
|
||||
val lastShown = connectionCoolDowns[currentConnected.address]
|
||||
val sinceLastPop = lastShown?.let { Duration.between(it, now) }
|
||||
log(TAG) { "Time since last connection popup: ${sinceLastPop?.seconds}s" }
|
||||
|
||||
if (lastShown == null) {
|
||||
connectionCoolDowns[currentConnected.address] = Instant.now()
|
||||
Event.PopupShow(device = currentBroadcasted)
|
||||
} else {
|
||||
log(TAG) { "Connection popup is still on cooldown: $sinceLastPop" }
|
||||
null
|
||||
}
|
||||
}
|
||||
.setupCommonEventHandlers(TAG) { "popUpConnection" }
|
||||
|
||||
fun monitor(): Flow<Event> = merge(monitorCase(), monitorConnection())
|
||||
|
||||
sealed class Event {
|
||||
data class PopupShow(
|
||||
|
||||
@@ -58,6 +58,4 @@
|
||||
<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>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,4 @@
|
||||
<string name="pods_case_unknown_state">Estat desconegut</string>
|
||||
<string name="last_seen_x">Últim cop vist: %s</string>
|
||||
<string name="first_seen_x">Primera vegada vist: %s</string>
|
||||
<string name="permission_post_notifications_label">Publica notificacions</string>
|
||||
<string name="permission_post_notifications_description">"Permet que el CAPod us mostri notificacions sobre els vostres AirPods, p. ex. el seu estat actual mentre estan connectats."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,4 @@
|
||||
<string name="pods_case_unknown_state">Neznámý stav</string>
|
||||
<string name="last_seen_x">Naposledy spatřeno: %s</string>
|
||||
<string name="first_seen_x">Poprvé spatřeno: %s</string>
|
||||
<string name="permission_post_notifications_label">Posílat zprávy</string>
|
||||
<string name="permission_post_notifications_description">"Povolte aplikaci CAPod zobrazovat oznámení o sluchátkách AirPods, např. o jejich aktuálním stavu během připojení."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Unbekannter Zustand</string>
|
||||
<string name="last_seen_x">Zuletzt gesehen: %s</string>
|
||||
<string name="first_seen_x">Zum ersten Mal gesehen: %s</string>
|
||||
<string name="permission_post_notifications_label">Benachrichtigungen posten</string>
|
||||
<string name="permission_post_notifications_description">"Erlauben Sie CAPod, Ihnen Benachrichtigungen über Ihre AirPods anzuzeigen, z.b. ihren aktuellen Status, während sie verbunden sind."</string>
|
||||
<string name="permission_post_notifications_label">Zeige Benachrichtigungen</string>
|
||||
<string name="permission_post_notifications_description">"Erlaube CAPod, Benachrichtigungen über deine AirPods anzuzeigen, z. B. deren aktuellen Status, während die Verbindung besteht."</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,36 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="general_value_not_available_label">N/D</string>
|
||||
<string name="general_grant_permission_action">Conceder permiso</string>
|
||||
<string name="overview_nomaindevice_label">Ningún dispositivo principal</string>
|
||||
<string name="overview_nomaindevice_description">Es poco probable que todos los dispositivos detectados sean suyos. Encienda y conecte su dispositivo o ajuste la configuración.</string>
|
||||
<string name="overview_bluetooth_disabled_label">Bluetooth deshabilitado</string>
|
||||
<string name="overview_bluetooth_disabled_description">El Bluetooth está deshabilitado, habilítelo ;)</string>
|
||||
<string name="permission_bluetooth_connect_label">Conexión Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Esta aplicación requiere el permiso \"conexión Bluetooth\" para interactuar con los dispositivos pareados, e iniciar las conexiones.</string>
|
||||
<string name="permission_bluetooth_scan_label">Buscando Bluetooth</string>
|
||||
<string name="permission_bluetooth_scan_description">El permiso \"Escaneo Bluetooth\" permite que esta aplicación descubra y reciba datos de Bluetooth de dispositivos cercanos, como sus AirPods.</string>
|
||||
<string name="permission_bluetooth_description">Esta aplicacion requiere \"Bluetooth\" para conectarse a los dispositivos pareados.</string>
|
||||
<string name="permission_access_fine_location_label">Acceso a la ubicación precisa</string>
|
||||
<string name="permission_access_fine_location_description">CAPod utiliza el permiso de \"ubicación precisa\" para recibir datos de Bluetooth Low Energy. Sus auriculares utilizan la tecnología Bluetooth Low Energy para transmitir su estado. Esta aplicación NO utilizará datos de Bluetooth para determinar su 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 usa el \"Acceso a la ubicación en segundo plano\" para habilitar funciones como \"Mostrar ventana emergente\" y \"Conexión automática\" mientras la aplicación está cerrada. El acceso a la ubicación en segundo plano permite que la aplicación reciba datos de Bluetooth Low Energy mientras está en segundo plano. Esta aplicación NO utilizará datos de Bluetooth para determinar su ubicación.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Desactivar Optimización de Batería</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">La Optimización de Batería evitan que esta aplicación reciba datos de Bluetooth de manera confiable mientras la aplicación está en segundo plano.</string>
|
||||
<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">No disponible</string>
|
||||
<string name="general_error_label">Fallo</string>
|
||||
<string name="general_grant_permission_action">Conceder el permiso</string>
|
||||
<string name="overview_nomaindevice_label">Sin dispositivo principal</string>
|
||||
<string name="overview_nomaindevice_description">Es poco probable que todos los dispositivos detectados sean tuyos. Enciende y conecta tu dispositivo o ajusta la configuración.</string>
|
||||
<string name="overview_bluetooth_disabled_label">Bluetooth desactivado</string>
|
||||
<string name="overview_bluetooth_disabled_description">El Bluetooth está desactivado, actívalo ;)</string>
|
||||
<string name="permission_bluetooth_connect_label">Conexión por Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Esta aplicación requiere el permiso \"Conexión por Bluetooth\" para interactuar con los dispositivos emparejados e iniciar las conexiones.</string>
|
||||
<string name="permission_bluetooth_scan_label">El Bluetooth está escaneando</string>
|
||||
<string name="permission_bluetooth_scan_description">El permiso \"Escaneo del 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 \"localización precisa\" para recibir datos Bluetooth Low Energy. Tus auriculares utilizan la tecnología Bluetooth Low Energy para transmitir tu estado. Esta aplicación NO utilizará los datos Bluetooth para determinar tu ubicación.</string>
|
||||
<string name="permission_background_location_label">Ubicación en segundo plano</string>
|
||||
<string name="permission_background_location_description">CAPod utiliza el \"la ubicación en segundo plano\" para activar funciones como \"Mostrar ventana emergente\" y \"Conexión automática\" mientras la aplicación está cerrada. El acceso a la localización en segundo plano permite a la aplicación recibir datos de Bluetooth Low Energy mientras está en segundo plano. Esta aplicación NO utilizará los datos 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 está en segundo plano.</string>
|
||||
<string name="permission_required_title">Se requiere el siguiente permiso:</string>
|
||||
<string name="permission_system_alert_window_label">Ventana de alerta del sistema</string>
|
||||
<string name="permission_system_alert_window_description">Permita que CAPod dibuje sobre otras aplicaciones para que la función \"Mostrar ventana emergente\" sea posible.</string>
|
||||
<string name="permission_system_alert_window_description">Permite a CAPod dibujar sobre otras aplicaciones para hacer posible la función \"Mostrar una ventana emergente\".</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">Bajo consumo</string>
|
||||
<string name="settings_scanner_mode_balanced_label">Balanceado</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 se ve</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">Audífono izquierdo</string>
|
||||
<string name="pods_dual_right_label">Audífono derecho</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>
|
||||
@@ -40,8 +45,8 @@
|
||||
<string name="pods_connection_state_call_label">En modo llamada</string>
|
||||
<string name="pods_connection_state_ringing_label">Sonando</string>
|
||||
<string name="pods_connection_state_hanging_up_label">Colgar</string>
|
||||
<string name="pods_connection_state_unknown_label">Estado de la conexion desconocido</string>
|
||||
<string name="pods_unknown_raw_data_label">Datos sin procesar</string>
|
||||
<string name="pods_connection_state_unknown_label">Estado de la conexión desconocido</string>
|
||||
<string name="pods_unknown_raw_data_label">Datos no procesados</string>
|
||||
<string name="pods_unknown_label">Dispositivo desconocido</string>
|
||||
<string name="pods_unknown_contact_dev">Este es un dispositivo desconocido, pero está usando un formato de mensaje similar. Agreguemos soporte para ello, contácteme :)</string>
|
||||
<string name="pods_none_label_short">Sin dispositivo</string>
|
||||
@@ -49,7 +54,7 @@
|
||||
<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_being_worn_label">Utilizándose</string>
|
||||
<string name="pods_case_unknown_state">Estado desconocido</string>
|
||||
<string name="last_seen_x">Visto por última vez: %s</string>
|
||||
<string name="first_seen_x">Visto por primera vez: %s</string>
|
||||
|
||||
@@ -6,5 +6,4 @@
|
||||
<string name="general_value_not_available_label">Pole saadaval</string>
|
||||
<string name="pods_dual_left_label">Vasak klapp</string>
|
||||
<string name="pods_dual_right_label">Parem klapp</string>
|
||||
<string name="permission_post_notifications_description">"Luba CAPodil näidata AirPodsi teateid, nt praegust olekut ühendatud olles."</string>
|
||||
</resources>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="app_name">कैपोड</string>
|
||||
<string name="app_name_pro">कैपोड प्रो</string>
|
||||
<string name="app_name_foss">कैपोड फोस</string>
|
||||
<string name="general_value_not_available_label">एन/ए</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="overview_nomaindevice_label">कोई प्राथमिक उपकरण नहीं</string>
|
||||
@@ -51,4 +51,11 @@
|
||||
<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="pods_case_unknown_state">अज्ञात अवस्था</string>
|
||||
<string name="last_seen_x">अंतिम बार देखे गए: %s</string>
|
||||
<string name="first_seen_x">पहली बार देखा गया: %s</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="app_name">CAPod</string>
|
||||
<string name="app_name_pro">CAPod פרו</string>
|
||||
<string name="app_name_foss">CAPod FOSS</string>
|
||||
<string name="general_value_not_available_label">לא זמין</string>
|
||||
<string name="general_error_label">שגיאה</string>
|
||||
<string name="general_grant_permission_action">מתן רשות</string>
|
||||
|
||||
@@ -55,6 +55,4 @@
|
||||
<string name="pods_case_unknown_state">Keadaan tidak diketahui</string>
|
||||
<string name="last_seen_x">Terakhir dilihat: %s</string>
|
||||
<string name="first_seen_x">Pertama dilihat: %s</string>
|
||||
<string name="permission_post_notifications_label">Siarkan pemberitahuan</string>
|
||||
<string name="permission_post_notifications_description">"Benarkan CAPod menunjukkan pemberitahuan kepada anda tentang AirPods anda, mis. status semasa mereka semasa disambungkan."</string>
|
||||
</resources>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<string name="settings_monitor_mode_automatic_label">Wanneer het apparaat is aangesloten</string>
|
||||
<string name="settings_monitor_mode_always_label">Altijd</string>
|
||||
<string name="settings_reaction_autoconnect_whenseen_label">Wanneer gezien</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">Case is geopend</string>
|
||||
<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>
|
||||
@@ -58,6 +58,4 @@
|
||||
<string name="pods_case_unknown_state">Onbekende staat</string>
|
||||
<string name="last_seen_x">Laatst gezien: %s</string>
|
||||
<string name="first_seen_x">Eerst gezien: %s</string>
|
||||
<string name="permission_post_notifications_label">Post notificaties</string>
|
||||
<string name="permission_post_notifications_description">"Sta CAPod toe notificaties over je AirPods te tonen, b.v. de huidige verbindingsstatus."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,4 @@
|
||||
<string name="pods_case_unknown_state">Ukjent status</string>
|
||||
<string name="last_seen_x">Sist sett: %s</string>
|
||||
<string name="first_seen_x">Først sett: %s</string>
|
||||
<string name="permission_post_notifications_label">Vis varsler</string>
|
||||
<string name="permission_post_notifications_description">"La CAPod vise varsler om dine AirPods, f.eks. nåværende status under tilkobling."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,4 @@
|
||||
<string name="pods_case_unknown_state">Nieznany stan</string>
|
||||
<string name="last_seen_x">Ostatnio widziane: %s</string>
|
||||
<string name="first_seen_x">Widziane pierwszy raz: %s</string>
|
||||
<string name="permission_post_notifications_label">Wysyłanie powiadomień</string>
|
||||
<string name="permission_post_notifications_description">"Zezwól CAPod na wyświetlanie powiadomień o słuchawkach AirPods, np. ich aktualnym statusie podczas połączenia."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,4 @@
|
||||
<string name="pods_case_unknown_state">Estado desconhecido</string>
|
||||
<string name="last_seen_x">Visto pela última vez: %s</string>
|
||||
<string name="first_seen_x">Visto pela primeira vez: %s</string>
|
||||
<string name="permission_post_notifications_label">Post de notificações</string>
|
||||
<string name="permission_post_notifications_description">"Permita que o CAPod mostre notificações sobre seus AirPods, por exemplo. seu status atual enquanto conectado."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,5 +58,4 @@
|
||||
<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_description">"Разрешить CAPod показывать уведомления о ваших AirPods, например текущий статус при подключении."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,4 @@
|
||||
<string name="pods_case_unknown_state">Neznámy stav</string>
|
||||
<string name="last_seen_x">Naposledy videné: %s</string>
|
||||
<string name="first_seen_x">Prvýkrát videné: %s</string>
|
||||
<string name="permission_post_notifications_label">Zobraziť oznámenia</string>
|
||||
<string name="permission_post_notifications_description">"Povoľte CAPod, aby vám zobrazoval upozornenia týkajúce sa vašich slúchadiel AirPods, napr. ich aktuálny stav počas pripojenia."</string>
|
||||
</resources>
|
||||
|
||||
@@ -3,58 +3,58 @@
|
||||
<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">Yok</string>
|
||||
<string name="general_value_not_available_label">Kapalı</string>
|
||||
<string name="general_error_label">Hata</string>
|
||||
<string name="general_grant_permission_action">İzin ver</string>
|
||||
<string name="overview_nomaindevice_label">Birincil aygıt yok</string>
|
||||
<string name="overview_nomaindevice_description">Algılanan tüm cihazların sizin olması olası değildir. Cihazınızı açın ve bağlayın veya ayarları yapın.</string>
|
||||
<string name="overview_bluetooth_disabled_label">Bluetooth devre dışı</string>
|
||||
<string name="overview_bluetooth_disabled_description">Bluetooth devre dışı, etkinleştirin ;)</string>
|
||||
<string name="overview_nomaindevice_description">Tespit edilen tüm aygıtların sizin olması muhtemel değildir. Aygıtınızı açın ve bağlayın veya ayarları yapın.</string>
|
||||
<string name="overview_bluetooth_disabled_label">Bluetooth kapalı</string>
|
||||
<string name="overview_bluetooth_disabled_description">Lütfen etkinleştirin ;)</string>
|
||||
<string name="permission_bluetooth_connect_label">Bluetooth bağlantısı</string>
|
||||
<string name="permission_bluetooth_connect_description">Bu uygulama, eşleştirilmiş cihazlarla etkileşim kurmak ve bağlantıları başlatmak için \"Bluetooth bağlantısı\" izni gerektirir.</string>
|
||||
<string name="permission_bluetooth_connect_description">Bu uygulama, eşleştirilmiş aygıtlarla etkileşime geçmek ve bağlantıları başlatmak için \"Bluetooth bağlantısı\" izni gerektirir.</string>
|
||||
<string name="permission_bluetooth_scan_label">Bluetooth taraması</string>
|
||||
<string name="permission_bluetooth_scan_description">\"Bluetooth tarama\" izni, bu uygulamanın AirPods\'unuz gibi yakındaki cihazlardan Bluetooth verilerini keşfetmesine ve almasına izin verir.</string>
|
||||
<string name="permission_bluetooth_scan_description">\"Bluetooth tarama\" izni, bu uygulamanın AirPod\'larınız gibi yakınınızdaki aygıtlardan Bluetooth verilerini keşfetmesine ve almasına olanak tanır.</string>
|
||||
<string name="permission_bluetooth_label">Bluetooth</string>
|
||||
<string name="permission_bluetooth_description">Bu uygulama, eşleştirilmiş bluetooth cihazlarına bağlanmak için \"Bluetooth\" izni gerektirir.</string>
|
||||
<string name="permission_access_fine_location_label">Hassas konuma erişin</string>
|
||||
<string name="permission_access_fine_location_description">CAPod, Bluetooth Düşük Enerji verilerini almak için \"iyi konum\" iznini kullanır. Kulaklıklarınız durumlarını yayınlamak için Bluetooth Düşük Enerji teknolojisini kullanır. Bu uygulama konumunuzu belirlemek için Bluetooth verilerini KULLANMAYACAKTIR.</string>
|
||||
<string name="permission_bluetooth_description">Bu uygulama, eşleştirilmiş bluetooth aygıtlarına bağlanmak için \"Bluetooth\" izni gerektirir.</string>
|
||||
<string name="permission_access_fine_location_label">Tam konuma erişim</string>
|
||||
<string name="permission_access_fine_location_description">CAPod, Bluetooth Düşük Enerji verilerini almak için \"tam konum\" iznini kullanır. Kulaklığınız, durumlarını yayınlamak için Bluetooth Düşük Enerji teknolojisini kullanır. Bu uygulama, konumunuzu belirlemek için Bluetooth verilerini KULLANMAZ.</string>
|
||||
<string name="permission_background_location_label">Arka planda konum erişimi</string>
|
||||
<string name="permission_background_location_description">CAPod, uygulama kapalıyken \"Açılır pencereyi göster\" ve \"Otomatik Bağlantı\" gibi özellikleri etkinleştirmek için \"arka plan konumu erişimi\" kullanır. Arka plan konumu erişimi, uygulamanın arka plandayken Bluetooth Düşük Enerji verilerini almasını sağlar. Bu uygulama konumunuzu belirlemek için Bluetooth verilerini KULLANMAZ.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Pil optimizasyonlarını devre dışı bırak</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">Pil iyileştirmeleri, uygulama arka plandayken bu uygulamanın Bluetooth verilerini güvenilir bir şekilde almasını engeller.</string>
|
||||
<string name="permission_background_location_description">CAPod, uygulama kapalıyken \"Açılır pencereyi göster\" ve \"Otomatik Bağlantı\" gibi özellikleri etkinleştirmek için \"arka planda konum erişimi\"ni kullanır. Arka planda konum erişimi, uygulamanın arka plandayken Bluetooth Düşük Enerji verilerini almasına olanak tanır. Bu uygulama, konumunuzu belirlemek için Bluetooth verilerini KULLANMAZ.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Pil optimizasyonunu devre dışı bırak</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">Pil optimizasyonları, uygulamanın arka planda çalışırken güvenilir bir şekilde Bluetooth verilerini almasını engeller.</string>
|
||||
<string name="permission_required_title">Aşağıdaki izin gereklidir:</string>
|
||||
<string name="permission_system_alert_window_label">Sistem Uyarı Penceresi</string>
|
||||
<string name="permission_system_alert_window_description">CAPod\'un \"PopUp\'ı Göster\" özelliğini mümkün kılmak için diğer uygulamaların üzerinde çizmesine izin verin.</string>
|
||||
<string name="permission_system_alert_window_description">\"Açılır pencereyi göster\" özelliğine izin vermek için lütfen CAPod uygulamasının diğer uygulamaların üzerinde gösterilmesine izin verin.</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">Düşük güç</string>
|
||||
<string name="settings_scanner_mode_balanced_label">Dengeli</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">Düşük gecikme süresi</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">Düşük gecikme</string>
|
||||
<string name="settings_monitor_mode_manual_label">Uygulama açıkken</string>
|
||||
<string name="settings_monitor_mode_automatic_label">Aygıt bağlandığında</string>
|
||||
<string name="settings_monitor_mode_always_label">Her zaman</string>
|
||||
<string name="settings_reaction_autoconnect_whenseen_label">Görüldüğünde</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">Vaka açık</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">Şarj kutusu açık</string>
|
||||
<string name="settings_reaction_autoconnect_inear_label">Kulakta</string>
|
||||
<string name="pods_dual_left_label">Sol bölme</string>
|
||||
<string name="pods_dual_right_label">Sağ bölme</string>
|
||||
<string name="pods_case_label">Sorun</string>
|
||||
<string name="pods_dual_left_label">Sol kulaklık</string>
|
||||
<string name="pods_dual_right_label">Sağ kulaklık</string>
|
||||
<string name="pods_case_label">Şarj kutusu</string>
|
||||
<string name="pods_case_status_open_label">Açık</string>
|
||||
<string name="pods_case_status_closed_label">Kapalı</string>
|
||||
<string name="pods_connection_state_disconnected_label">Bir cihaza bağlı değil</string>
|
||||
<string name="pods_connection_state_idle_label">Bir cihaza bağlı, ancak boşta</string>
|
||||
<string name="pods_connection_state_disconnected_label">Bir aygıta bağlı değil</string>
|
||||
<string name="pods_connection_state_idle_label">Bir aygıta bağlı, ancak boşta</string>
|
||||
<string name="pods_connection_state_music_label">Müzik modunda</string>
|
||||
<string name="pods_connection_state_call_label">Arama modunda</string>
|
||||
<string name="pods_connection_state_ringing_label">Çalıyor</string>
|
||||
<string name="pods_connection_state_hanging_up_label">Kapatıyorum</string>
|
||||
<string name="pods_connection_state_hanging_up_label">Kapatılıyor</string>
|
||||
<string name="pods_connection_state_unknown_label">Bilinmeyen bağlantı durumu</string>
|
||||
<string name="pods_unknown_raw_data_label">İşlenmemiş veri</string>
|
||||
<string name="pods_unknown_label">Tanımlanmamış cihaz</string>
|
||||
<string name="pods_unknown_contact_dev">Bu bilinmeyen bir cihazdır, ancak benzer bir mesaj formatı kullanıyor. Bunun için destek ekleyelim, bana ulaşın :)</string>
|
||||
<string name="pods_none_label_short">Cihaz yok</string>
|
||||
<string name="pods_charging_label">Doluyor</string>
|
||||
<string name="pods_unknown_raw_data_label">Ham veri</string>
|
||||
<string name="pods_unknown_label">Bilinmeyen aygıt</string>
|
||||
<string name="pods_unknown_contact_dev">Bu bilinmeyen bir aygıt ama benzer mesaj formatı kullanıyor. Hadi buna destek ekleyelim, bana ulaşın :)</string>
|
||||
<string name="pods_none_label_short">Aygıt yok</string>
|
||||
<string name="pods_charging_label">Şarj oluyor</string>
|
||||
<string name="pods_inear_label">Kulakta</string>
|
||||
<string name="pods_microphone_label">Mikrofon</string>
|
||||
<string name="pods_yours">Senin</string>
|
||||
<string name="headset_being_worn_label">Giyilmek</string>
|
||||
<string name="pods_yours">Sizinki</string>
|
||||
<string name="headset_being_worn_label">Takılıyken</string>
|
||||
<string name="pods_case_unknown_state">Bilinmeyen durum</string>
|
||||
<string name="last_seen_x">Son görülme: %s</string>
|
||||
<string name="first_seen_x">İlk görülme: %s</string>
|
||||
|
||||
@@ -1,23 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="general_value_not_available_label">Н/д</string>
|
||||
<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">Н/Д</string>
|
||||
<string name="general_error_label">Помилка</string>
|
||||
<string name="general_grant_permission_action">Надати дозвіл</string>
|
||||
<string name="overview_nomaindevice_label">Відсутній первинний пристрій</string>
|
||||
<string name="overview_nomaindevice_description">Всі знайдені пристрої навряд чи ваші. Увімкніть та підʼєднайте ваш пристрій або налаштуйте параметри.</string>
|
||||
<string name="overview_bluetooth_disabled_label">Bluetooth вимкнено</string>
|
||||
<string name="overview_bluetooth_disabled_description">Bluetooth вимкнено, увімкніть його ;)</string>
|
||||
<string name="permission_bluetooth_connect_label">Bluetooth зʼєднання</string>
|
||||
<string name="permission_bluetooth_connect_description">Цей додаток потребує дозвіл \"Bluetooth зʼєднання\" щоб взаємодіяти зі сполученими пристроями та ініціювати нові зʼєднання.</string>
|
||||
<string name="permission_bluetooth_scan_label">Сканування Bluetooth</string>
|
||||
<string name="permission_bluetooth_scan_description">Дозвіл \"Сканування Bluetooth\" дозволяє цьому додатку виявляти та отримувати Bluetooth дані з пристроїв поблизу, таких як ваші AirPods.</string>
|
||||
<string name="permission_bluetooth_label">Bluetooth</string>
|
||||
<string name="permission_bluetooth_description">Цей додаток потребує дозвіл \"Bluetooth\" для зʼєднання зі сполученими Bluetooth пристроями.</string>
|
||||
<string name="permission_access_fine_location_label">Доступ до точного місцезнаходження</string>
|
||||
<string name="permission_access_fine_location_description">CAPod використовує дозвіл \"Точне місцезнаходження\" щоб отримувати дані Bluetooth Low Energy. Ваші навушники використовують технологію Bluetooth Low Energy technology щоб транслювати свій статус. Цей додаток НЕ використовує Bluetooth дані щоб визначати ваше місцеперебування.</string>
|
||||
<string name="permission_background_location_label">Доступ до місцезнаходження у тлі</string>
|
||||
<string name="permission_background_location_description">CAPod використовує фоновий доступ до геоданих для роботи таких функцій як \"Показувати спливаюче вікно\" та \"Автопідʼєднання\" коли додаток закритий. Фоновий доступ до геоданих дозволяє додатку отримувати дані Bluetooth Low Energy коли він працює у фоновому режимі. Цей додаток НЕ використовує Bluetooth дані щоб визначати ваше місцеперебування.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Вимкнути оптимізацію батареї</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">Оптимізація батареї перешкоджає цьому пристрою надійно отримувати дані Bluetooth під час перебування програми у тлі.</string>
|
||||
<string name="permission_required_title">Необхідні наступні дозволи:</string>
|
||||
<string name="permission_system_alert_window_label">Вікно системного повідомлення</string>
|
||||
<string name="settings_scanner_mode_lowpower_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>
|
||||
@@ -26,9 +40,13 @@
|
||||
<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>
|
||||
@@ -36,6 +54,7 @@
|
||||
<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="pods_case_unknown_state">Невідомий стан</string>
|
||||
<string name="last_seen_x">Востаннє був: %s</string>
|
||||
<string name="first_seen_x">Уперше був: %s</string>
|
||||
|
||||
@@ -1,2 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"></resources>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<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">不適用</string>
|
||||
<string name="general_error_label">錯誤</string>
|
||||
<string name="general_grant_permission_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="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">「藍牙掃描」權限允許這個應用程式發現附近的裝置並接收藍牙資料,您的 AirPods 需要如此。</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">CAPods 在應用程式關閉時使用「背景位置存取」來啟用諸如「顯示彈出式視窗」和「自動連線」等功能。背景位置存取允許這個應用程式在背景接收低功耗藍牙資料。這個應用程式不會使用藍牙資料來確定您的位置。</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="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>
|
||||
</resources>
|
||||
|
||||
@@ -58,6 +58,6 @@
|
||||
<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>
|
||||
<string name="permission_post_notifications_label">顯示通知</string>
|
||||
<string name="permission_post_notifications_description">"允許 CAPod 顯示關於您 AirPods 的通知,例如在連線時顯示它們的目前狀態。"</string>
|
||||
</resources>
|
||||
|
||||
@@ -65,6 +65,6 @@
|
||||
|
||||
<string name="last_seen_x">Last seen: %s</string>
|
||||
<string name="first_seen_x">First seen: %s</string>
|
||||
<string name="permission_post_notifications_label">Post notifications</string>
|
||||
<string name="permission_post_notifications_description">"Allow CAPod to show you notifications about your AirPods, e.g. their current status while connected."</string>
|
||||
<string name="permission_post_notifications_label">Show notifications</string>
|
||||
<string name="permission_post_notifications_description">"Allow CAPod to show notifications about your AirPods, e.g. their current status while connected."</string>
|
||||
</resources>
|
||||
@@ -9,6 +9,7 @@ apply(plugin = "androidx.navigation.safeargs.kotlin")
|
||||
|
||||
android {
|
||||
compileSdk = ProjectConfig.compileSdk
|
||||
namespace = "${ProjectConfig.packageName}"
|
||||
|
||||
defaultConfig {
|
||||
applicationId = ProjectConfig.packageName
|
||||
@@ -16,7 +17,7 @@ android {
|
||||
minSdk = ProjectConfig.minSdk
|
||||
targetSdk = ProjectConfig.targetSdk
|
||||
|
||||
versionCode = ProjectConfig.Version.code + 1 // Wear app
|
||||
versionCode = ProjectConfig.Version.code
|
||||
versionName = ProjectConfig.Version.name
|
||||
|
||||
testInstrumentationRunner = "eu.darken.capod.HiltTestRunner"
|
||||
@@ -102,12 +103,12 @@ android {
|
||||
|
||||
compileOptions {
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
jvmTarget = "17"
|
||||
freeCompilerArgs = freeCompilerArgs + listOf(
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
@@ -132,6 +133,8 @@ dependencies {
|
||||
addBaseAndroid()
|
||||
addBaseAndroidUi()
|
||||
|
||||
implementation("androidx.core:core-splashscreen:1.0.1")
|
||||
|
||||
addNavigation()
|
||||
|
||||
addTesting()
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package eu.darken.capod.wear.core
|
||||
|
||||
import android.content.Context
|
||||
import java.time.Instant
|
||||
import java.time.ZoneId
|
||||
import java.time.format.DateTimeFormatter
|
||||
import java.time.format.FormatStyle
|
||||
import java.util.Locale
|
||||
|
||||
data class UserTime(
|
||||
val time: Instant = Instant.now(),
|
||||
) {
|
||||
fun toFormatted(context: Context): String = DateTimeFormatter
|
||||
.ofLocalizedTime(FormatStyle.SHORT)
|
||||
.withLocale(Locale.getDefault())
|
||||
.withZone(ZoneId.systemDefault())
|
||||
.format(time)
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import eu.darken.capod.main.core.PermissionTool
|
||||
import eu.darken.capod.monitor.core.PodMonitor
|
||||
import eu.darken.capod.pods.core.DualPodDevice
|
||||
import eu.darken.capod.pods.core.SinglePodDevice
|
||||
import eu.darken.capod.wear.core.UserTime
|
||||
import eu.darken.capod.wear.ui.overview.cards.BluetoothDisabledVH
|
||||
import eu.darken.capod.wear.ui.overview.cards.MissingMainDeviceVH
|
||||
import eu.darken.capod.wear.ui.overview.cards.PermissionCardVH
|
||||
@@ -86,14 +87,20 @@ class OverviewFragmentVM @Inject constructor(
|
||||
device = podToShow,
|
||||
showDebug = isDebugMode,
|
||||
isMainPod = true,
|
||||
userTime = UserTime(),
|
||||
)
|
||||
|
||||
is SinglePodDevice -> SinglePodsCardVH.Item(
|
||||
now = now,
|
||||
device = podToShow,
|
||||
showDebug = isDebugMode,
|
||||
isMainPod = true,
|
||||
userTime = UserTime(),
|
||||
)
|
||||
|
||||
else -> MissingMainDeviceVH.Item(
|
||||
userTime = UserTime(),
|
||||
)
|
||||
else -> MissingMainDeviceVH.Item
|
||||
}
|
||||
items.add(pod)
|
||||
|
||||
|
||||
+6
-2
@@ -5,6 +5,7 @@ import eu.darken.capod.R
|
||||
import eu.darken.capod.common.lists.binding
|
||||
import eu.darken.capod.common.lists.differ.DifferItem
|
||||
import eu.darken.capod.databinding.OverviewNomaindeviceItemBinding
|
||||
import eu.darken.capod.wear.core.UserTime
|
||||
import eu.darken.capod.wear.ui.overview.OverviewAdapter
|
||||
|
||||
class MissingMainDeviceVH(parent: ViewGroup) :
|
||||
@@ -21,11 +22,14 @@ class MissingMainDeviceVH(parent: ViewGroup) :
|
||||
item: Item,
|
||||
payloads: List<Any>
|
||||
) -> Unit = binding(payload = true) { item ->
|
||||
userTime.text = item.userTime.toFormatted(context)
|
||||
|
||||
}
|
||||
|
||||
object Item : OverviewAdapter.Item {
|
||||
override val stableId: Long = Item::class.hashCode().toLong()
|
||||
data class Item(
|
||||
val userTime: UserTime,
|
||||
) : OverviewAdapter.Item {
|
||||
override val stableId: Long = this.hashCode().toLong()
|
||||
|
||||
override val payloadProvider: ((DifferItem, DifferItem) -> DifferItem?)
|
||||
get() = { old, new -> if (new::class.isInstance(old)) new else null }
|
||||
|
||||
@@ -9,6 +9,7 @@ import eu.darken.capod.common.lists.binding
|
||||
import eu.darken.capod.databinding.OverviewPodsDualItemBinding
|
||||
import eu.darken.capod.pods.core.*
|
||||
import eu.darken.capod.pods.core.apple.DualApplePods
|
||||
import eu.darken.capod.wear.core.UserTime
|
||||
import java.time.Instant
|
||||
|
||||
class DualPodsCardVH(parent: ViewGroup) :
|
||||
@@ -20,7 +21,10 @@ class DualPodsCardVH(parent: ViewGroup) :
|
||||
override val viewBinding = lazy { OverviewPodsDualItemBinding.bind(itemView) }
|
||||
|
||||
override val onBindData = binding(payload = true) { item: Item ->
|
||||
userTime.text = item.userTime.toFormatted(context)
|
||||
|
||||
val device = item.device
|
||||
|
||||
name.apply {
|
||||
val sb = StringBuilder(device.getLabel(context))
|
||||
if (device is HasPodStyle && item.showDebug) {
|
||||
@@ -127,5 +131,6 @@ class DualPodsCardVH(parent: ViewGroup) :
|
||||
override val device: DualPodDevice,
|
||||
override val showDebug: Boolean,
|
||||
override val isMainPod: Boolean,
|
||||
val userTime: UserTime,
|
||||
) : PodDeviceVH.Item
|
||||
}
|
||||
@@ -3,13 +3,12 @@ package eu.darken.capod.wear.ui.overview.cards.pods
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.lists.BindableVH
|
||||
import eu.darken.capod.common.lists.differ.DifferItem
|
||||
import eu.darken.capod.common.lists.modular.ModularAdapter
|
||||
import eu.darken.capod.wear.ui.overview.OverviewAdapter
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import eu.darken.capod.pods.core.getSignalQuality
|
||||
import eu.darken.capod.wear.ui.overview.OverviewAdapter
|
||||
import java.time.Instant
|
||||
|
||||
abstract class PodDeviceVH<D : PodDeviceVH.Item, B : ViewBinding>(
|
||||
@@ -19,7 +18,7 @@ abstract class PodDeviceVH<D : PodDeviceVH.Item, B : ViewBinding>(
|
||||
|
||||
fun Item.getReceptionText(): String = device.getSignalQuality(context)
|
||||
.let { if (showDebug) "$it ${device.seenCounter}" else it }
|
||||
.let { if (isMainPod) "$it\n(${getString(R.string.pods_yours)})" else it }
|
||||
.let { if (isMainPod) "$it\n(${getString(eu.darken.capod.common.R.string.pods_yours)})" else it }
|
||||
|
||||
interface Item : OverviewAdapter.Item {
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import eu.darken.capod.R
|
||||
import eu.darken.capod.common.lists.binding
|
||||
import eu.darken.capod.databinding.OverviewPodsSingleItemBinding
|
||||
import eu.darken.capod.pods.core.*
|
||||
import eu.darken.capod.wear.core.UserTime
|
||||
import java.time.Instant
|
||||
|
||||
class SinglePodsCardVH(parent: ViewGroup) :
|
||||
@@ -19,6 +20,8 @@ class SinglePodsCardVH(parent: ViewGroup) :
|
||||
override val viewBinding = lazy { OverviewPodsSingleItemBinding.bind(itemView) }
|
||||
|
||||
override val onBindData = binding(payload = true) { item: Item ->
|
||||
userTime.text = item.userTime.toFormatted(context)
|
||||
|
||||
val device = item.device
|
||||
|
||||
name.apply {
|
||||
@@ -75,5 +78,6 @@ class SinglePodsCardVH(parent: ViewGroup) :
|
||||
override val device: SinglePodDevice,
|
||||
override val showDebug: Boolean,
|
||||
override val isMainPod: Boolean,
|
||||
val userTime: UserTime,
|
||||
) : PodDeviceVH.Item
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="512dp"
|
||||
android:height="512dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:pathData="M400.08,358.82l-220.33,59a58.52,58.52 0,0 1,-71.68 -41.38l-5,-18.53a171.22,171.22 0,0 1,24.44 -141.76l-23.43,-23.5a25,25 0,0 1,0 -35.35l0.82,-0.82a24.87,24.87 0,0 1,35.24 0l22.27,22.34a170.85,170.85 0,0 1,62 -31.09l0.48,-0.13a172.54,172.54 0,0 1,71.4 -3.89l8.63,-31.85a25.14,25.14 0,0 1,30.7 -17.66l1.13,0.29A24.8,24.8 0,0 1,354.42 125l-9.23,34.07a172.66,172.66 0,0 1,91.7 111l4.58,17.08A58.54,58.54 0,0 1,400.08 358.82Z"
|
||||
android:fillColor="#41eb8e"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M279.56,314.16c-13.7,-8 -31.7,-7.91 -45.66,-0.68L212,351.37c0.68,15.16 9.41,30.14 24.29,38.79a49.92,49.92 0,0 0,14.87 5.76l-20.81,36.44a8.28,8.28 0,0 0,3 11.33l12.8,7.44a8.26,8.26 0,0 0,11.31 -3l41.73,-72.75h0C310.82,354.32 306.77,330 279.56,314.16ZM247.67,347.24a6,6 0,1 1,-2.16 -8.26A6,6 0,0 1,247.67 347.24Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M300.66,214.18a27.95,27.95 0,1 1,-19.8 34.24A28,28 0,0 1,300.66 214.18Z"
|
||||
android:fillColor="#26845c"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M194.53,242.62a27.95,27.95 0,1 1,-19.8 34.24A28,28 0,0 1,194.53 242.62Z"
|
||||
android:fillColor="#26845c"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M149.79,318.88l-36.3,-21.21a50.22,50.22 0,0 0,10 -12.43c8.56,-14.94 8.61,-32.3 1.59,-45.79l-38,-21.9c-15.72,0.7 -31.35,9.65 -39.22,23.41 -15.64,27.32 -6.94,50.45 13.74,62.85h0l72.64,42.25a8.26,8.26 0,0 0,11.31 -3l7.36,-12.85A8.31,8.31 0,0 0,149.79 318.88ZM100.3,251.53A6.06,6.06 0,1 1,98 243.28,6.07 6.07,0 0,1 100.3,251.53Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M187.92,204.08a29.52,29.52 0,0 1,-38.6 -15.52A29.15,29.15 0,0 1,165 150.28a30.38,30.38 0,0 1,4.68 -1.52l-16.36,-38.48L148.6,99.07l-4.77,-11.21 40,-16.75 9.54,22.42L176,100.79l27.58,64.87 0.14,0.34a28.56,28.56 0,0 1,1.24 3.65A29.16,29.16 0,0 1,187.92 204.08Z"
|
||||
android:fillColor="#ffda3e"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M259.45,46l-0.77,13.75 -10.63,-0.57L245.84,99l-0.13,2.29h-0.16A16.6,16.6 0,1 1,232.87 82l1.32,-23.6h0l0.39,-6.87 0.38,-6.88Z"
|
||||
android:fillColor="#ffcf3b"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M205.22,169.54l-0.26,0.11a28.56,28.56 0,0 0,-1.24 -3.65Z"
|
||||
android:fillColor="#e7b720"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="M95.05,247.69m-7.01,0a7.01,7.01 0,1 1,14.02 0a7.01,7.01 0,1 1,-14.02 0"
|
||||
android:fillColor="#231f20" />
|
||||
<path
|
||||
android:pathData="M242.42,343.4m-7.01,0a7.01,7.01 0,1 1,14.02 0a7.01,7.01 0,1 1,-14.02 0"
|
||||
android:fillColor="#231f20" />
|
||||
</vector>
|
||||
@@ -1,42 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="512dp"
|
||||
android:height="512dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:pathData="m256,13c134.21,0 243,108.79 243,243c0,134.21 -108.79,243 -243,243c-134.21,0 -243,-108.79 -243,-243c0,-134.21 108.79,-243 243,-243z"
|
||||
android:fillColor="#3f7aff" />
|
||||
<path
|
||||
android:pathData="m404.3,630.55l-93.18,24.97c-59.46,15.93 -120.58,-19.35 -136.51,-78.82l-18.52,-69.12c-6.81,-25.42 8.28,-51.56 33.7,-58.37l216.44,-58c25.42,-6.81 51.56,8.28 58.37,33.7l18.52,69.12c15.93,59.46 -19.35,120.58 -78.82,136.51zM255.69,692.33l-1.04,-0.28c-12.36,-3.27 -19.67,-15.89 -16.33,-28.19l13.54,-49.96c3.33,-12.3 16.05,-19.62 28.41,-16.35l1.04,0.28c12.36,3.27 19.67,15.89 16.33,28.19l-13.54,49.96c-3.33,12.3 -16.05,19.62 -28.41,16.35zM436.6,634.7l-36.62,-36.73c-9.01,-9.04 -9.03,-23.69 -0.04,-32.71l0.76,-0.76c9,-9.02 23.6,-9.01 32.61,0.04l36.62,36.73c9.01,9.04 9.03,23.69 0.04,32.71l-0.76,0.76c-9,9.02 -23.6,9.01 -32.61,-0.04z"
|
||||
android:fillColor="#41eb8e" />
|
||||
<path
|
||||
android:pathData="m229.33,167.8c88.82,-23.8 180.11,28.91 203.91,117.73l1.04,3.87c10.01,37.34 -12.15,75.73 -49.5,85.73l-186.4,49.95c-37.34,10.01 -75.73,-12.15 -85.73,-49.5l-1.04,-3.87c-23.8,-88.82 28.91,-180.11 117.73,-203.91zM335.69,116.4l1.09,0.29c12.88,3.41 20.51,16.57 17.03,29.39l-14.12,52.08c-3.48,12.82 -16.74,20.45 -29.62,17.04l-1.09,-0.29c-12.88,-3.41 -20.51,-16.57 -17.03,-29.39l14.12,-52.08c3.48,-12.82 16.74,-20.45 29.62,-17.04zM147.08,176.49l38.17,38.29c9.4,9.43 9.41,24.7 0.04,34.1l-0.79,0.79c-9.38,9.41 -24.6,9.39 -34,-0.04l-38.17,-38.29c-9.4,-9.43 -9.41,-24.7 -0.04,-34.1l0.79,-0.79c9.38,-9.41 24.6,-9.39 34,0.04z"
|
||||
android:fillColor="#41eb8e" />
|
||||
<path
|
||||
android:pathData="m171.1,170.45c14.47,-6.06 31.14,0.64 37.24,14.97c6.09,14.33 -0.7,30.87 -15.17,36.93c-14.47,6.06 -31.14,-0.64 -37.24,-14.97c-6.09,-14.33 0.7,-30.87 15.17,-36.93zM155.24,121.04l21.83,-9.15l32.8,77.13l-21.83,9.15l-32.8,-77.13zM159.84,131.85l-9.2,-21.63l38.57,-16.16l9.2,21.63l-38.57,16.16zM233.88,104.24c8.87,0.47 15.66,7.98 15.17,16.76c-0.49,8.79 -8.07,15.53 -16.94,15.06c-8.87,-0.47 -15.66,-7.98 -15.17,-16.76c0.49,-8.79 8.07,-15.53 16.94,-15.06zM238.18,75.21l13.38,0.71l-2.63,47.3l-13.38,-0.71l2.63,-47.3zM237.81,81.84l0.74,-13.26l23.64,1.25l-0.74,13.26l-23.64,-1.25z"
|
||||
android:fillColor="#ffcf3b" />
|
||||
<path
|
||||
android:pathData="m199.55,259.53c14.4,-3.86 29.2,4.67 33.06,19.06c3.85,14.38 -4.7,29.17 -19.1,33.03c-14.4,3.86 -29.2,-4.67 -33.06,-19.06c-3.85,-14.38 4.7,-29.17 19.1,-33.03z"
|
||||
android:strokeAlpha="0.8"
|
||||
android:fillColor="#1f6a50"
|
||||
android:fillAlpha="0.8" />
|
||||
<path
|
||||
android:pathData="m301.94,232.09c14.4,-3.86 29.2,4.67 33.06,19.06c3.85,14.38 -4.7,29.17 -19.1,33.03c-14.4,3.86 -29.2,-4.67 -33.06,-19.06c-3.85,-14.38 4.7,-29.17 19.1,-33.03z"
|
||||
android:strokeAlpha="0.8"
|
||||
android:fillColor="#1f6a50"
|
||||
android:fillAlpha="0.8" />
|
||||
<path
|
||||
android:pathData="m281.58,328.54c26.25,15.27 30.16,38.74 18.87,59.03l0.01,0.01l-40.26,70.19c-2.22,3.83 -7.1,5.13 -10.91,2.92l-12.35,-7.18c-3.81,-2.21 -5.1,-7.11 -2.88,-10.93l20.08,-35.15c-4.89,-1.04 -9.74,-2.87 -14.34,-5.55c-14.36,-8.35 -22.78,-22.8 -23.43,-37.43l21.17,-36.56c13.47,-6.97 30.83,-7.03 44.05,0.66z"
|
||||
android:fillColor="#f9f9f9"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="m248.73,352.49c2.77,1.61 3.7,5.18 2.08,7.96c-1.62,2.79 -5.17,3.75 -7.93,2.14c-2.77,-1.61 -3.7,-5.18 -2.08,-7.96c1.62,-2.79 5.17,-3.75 7.93,-2.14z"
|
||||
android:fillColor="#272727" />
|
||||
<path
|
||||
android:pathData="m131.01,300.65c-2.65,4.63 -5.93,8.64 -9.64,11.98l35.02,20.46c3.84,2.21 5.17,7.1 2.98,10.93l-7.1,12.39c-2.19,3.82 -7.08,5.13 -10.91,2.92l-70.08,-40.76l0.01,-0.01c-19.95,-11.96 -28.34,-34.28 -13.25,-60.64c7.6,-13.27 22.66,-21.9 37.83,-22.58l36.67,21.14c6.77,13.02 6.72,29.75 -1.54,44.17z"
|
||||
android:fillColor="#f9f9f9"
|
||||
android:fillType="evenOdd" />
|
||||
<path
|
||||
android:pathData="m106.46,260.17c2.8,1.61 3.78,5.17 2.19,7.95c-1.59,2.78 -5.15,3.72 -7.95,2.11c-2.8,-1.61 -3.78,-5.17 -2.19,-7.95c1.59,-2.78 5.15,-3.72 7.95,-2.11z"
|
||||
android:fillColor="#272727" />
|
||||
</vector>
|
||||
@@ -1,10 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:bottom="40dp"
|
||||
android:drawable="@drawable/splash_graphic"
|
||||
android:left="40dp"
|
||||
android:right="40dp"
|
||||
android:top="40dp" />
|
||||
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:drawable="@mipmap/ic_launcher"
|
||||
android:gravity="center" />
|
||||
</layer-list>
|
||||
@@ -1,34 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/permission_label"
|
||||
android:id="@+id/user_time"
|
||||
style="@style/UserTimeStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="12:23" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/title"
|
||||
style="@style/TextAppearance.MaterialComponents.Body1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:text="@string/overview_nomaindevice_label"
|
||||
app:layout_constraintBottom_toTopOf="@id/permission_description"
|
||||
app:layout_constraintBottom_toTopOf="@id/body"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_chainStyle="packed" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/permission_description"
|
||||
android:id="@+id/body"
|
||||
style="@style/TextAppearance.MaterialComponents.Body2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:text="@string/overview_nomaindevice_description"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/permission_label" />
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -7,14 +7,23 @@
|
||||
android:layout_margin="8dp"
|
||||
tools:context=".wear.ui.MainActivity">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/user_time"
|
||||
style="@style/UserTimeStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="12:23" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/device_icon"
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="16dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/name"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginBottom="2dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/devic_airpods_gen1_both" />
|
||||
|
||||
@@ -36,15 +45,15 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="8dp"
|
||||
android:gravity="center"
|
||||
app:lineHeight="14sp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:gravity="center"
|
||||
android:lines="2"
|
||||
android:maxLines="2"
|
||||
app:layout_constraintBottom_toTopOf="@id/barrier_top"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/name"
|
||||
app:lineHeight="14sp"
|
||||
tools:text="Music Active, Case Closed" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
@@ -267,7 +276,7 @@
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/last_seen"
|
||||
style="@style/TextAppearance.Material3.BodySmall"
|
||||
style="@style/TextAppearance.Material3.LabelSmall"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="32dp"
|
||||
|
||||
@@ -7,10 +7,21 @@
|
||||
android:layout_margin="8dp"
|
||||
tools:context=".wear.ui.MainActivity">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/user_time"
|
||||
style="@style/UserTimeStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="12:23" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/device_icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="16dp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toTopOf="@+id/name"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
@@ -15,4 +15,10 @@
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:ellipsize">end</item>
|
||||
</style>
|
||||
|
||||
<style name="UserTimeStyle" parent="TextAppearance.Material3.LabelMedium">
|
||||
<item name="android:singleLine">true</item>
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:ellipsize">marquee</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -29,9 +29,10 @@
|
||||
<item name="colorPrimaryInverse">@color/md_theme_dark_primaryInverse</item>
|
||||
</style>
|
||||
|
||||
<style name="AppThemeSplash" parent="Theme.SplashScreen">
|
||||
<item name="windowSplashScreenBackground">#3f7aff</item>
|
||||
<style name="AppThemeSplash" parent="Theme.SplashScreen.IconBackground">
|
||||
<item name="windowSplashScreenBackground">#000000</item>
|
||||
<item name="windowSplashScreenAnimatedIcon">@drawable/splash_screen</item>
|
||||
<item name="windowSplashScreenIconBackgroundColor">#000000</item>
|
||||
<item name="postSplashScreenTheme">@style/AppTheme</item>
|
||||
</style>
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ apply(plugin = "dagger.hilt.android.plugin")
|
||||
apply(plugin = "androidx.navigation.safeargs.kotlin")
|
||||
|
||||
android {
|
||||
|
||||
compileSdk = ProjectConfig.compileSdk
|
||||
namespace = "${ProjectConfig.packageName}"
|
||||
|
||||
defaultConfig {
|
||||
applicationId = ProjectConfig.packageName
|
||||
@@ -100,12 +100,12 @@ android {
|
||||
|
||||
compileOptions {
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
jvmTarget = "17"
|
||||
freeCompilerArgs = freeCompilerArgs + listOf(
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
||||
@@ -141,6 +141,8 @@ dependencies {
|
||||
addBaseAndroid()
|
||||
addBaseAndroidUi()
|
||||
|
||||
implementation("androidx.core:core-splashscreen:1.0.0-alpha02")
|
||||
|
||||
addNavigation()
|
||||
addBaseWorkManager()
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ class UpgradeControlFoss @Inject constructor(
|
||||
|
||||
override fun launchBillingFlow(activity: Activity) {
|
||||
MaterialAlertDialogBuilder(activity).apply {
|
||||
setIcon(R.drawable.ic_heart)
|
||||
setIcon(eu.darken.capod.common.R.drawable.ic_heart)
|
||||
setTitle(R.string.upgrade_capod_label)
|
||||
setMessage(R.string.upgrade_capod_description)
|
||||
setPositiveButton(R.string.foss_upgrade_donate_label) { _, _ ->
|
||||
@@ -68,6 +68,6 @@ class UpgradeControlFoss @Inject constructor(
|
||||
override val type: UpgradeRepo.Type = UpgradeRepo.Type.FOSS
|
||||
}
|
||||
|
||||
override fun getSponsorUrl(): String? = "https://github.com/sponsors/d4rken"
|
||||
override fun getSponsorUrl(): String = "https://github.com/sponsors/d4rken"
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="foss_upgrade_donate_label">दान करना</string>
|
||||
<string name="foss_upgrade_donate_label">दान करें</string>
|
||||
<string name="foss_upgrade_alreadydonated_label">मैंने पहले ही दान कर दिया है</string>
|
||||
<string name="foss_upgrade_no_money_label">मैं अपना सारा पैसा AirPods पर खर्च करता हूं</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="foss_upgrade_donate_label">Bağış</string>
|
||||
<string name="foss_upgrade_alreadydonated_label">Ben zaten bağışladım</string>
|
||||
<string name="foss_upgrade_no_money_label">Tüm paramı AirPod\'lara harcıyorum</string>
|
||||
<string name="foss_upgrade_donate_label">Bağış yap</string>
|
||||
<string name="foss_upgrade_alreadydonated_label">Zaten bağış yaptım</string>
|
||||
<string name="foss_upgrade_no_money_label">Tüm paramı AirPods\'a harcıyorum</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="foss_upgrade_donate_label">資助</string>
|
||||
<string name="foss_upgrade_alreadydonated_label">我已經資助了</string>
|
||||
<string name="foss_upgrade_no_money_label">我已經為 AirPods 傾家蕩產了</string>
|
||||
</resources>
|
||||
|
||||
@@ -73,7 +73,7 @@ class UpgradeRepoGplay @Inject constructor(
|
||||
|
||||
override fun launchBillingFlow(activity: Activity) {
|
||||
MaterialAlertDialogBuilder(activity).apply {
|
||||
setIcon(R.drawable.ic_heart)
|
||||
setIcon(eu.darken.capod.common.R.drawable.ic_heart)
|
||||
setTitle(R.string.upgrade_capod_label)
|
||||
setMessage(R.string.upgrade_capod_description)
|
||||
setPositiveButton(R.string.general_upgrade_action) { _, _ ->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="upgrades_gplay_unavailable_error">Google Play सेवाएं अनुपलब्ध हैं।</string>
|
||||
<string name="upgrades_no_purchases_found_check_account">कोई खरीदारी नहीं मिली. क्या आप सही खाते का उपयोग कर रहे हैं?</string>
|
||||
<string name="upgrades_no_purchases_found_check_account">कोई खरीदारी नहीं मिली, क्या आप सही खाते का उपयोग कर रहे हैं?</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="upgrades_gplay_unavailable_error">Google Play 服務無法使用。</string>
|
||||
<string name="upgrades_no_purchases_found_check_account">未找到訂單,確定帳戶無誤?</string>
|
||||
</resources>
|
||||
|
||||
@@ -6,7 +6,6 @@ import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import java.util.concurrent.locks.ReentrantLock
|
||||
@@ -41,7 +40,7 @@ class ClipboardHelper @Inject constructor(
|
||||
}
|
||||
|
||||
fun copyToClipboard(text: String) {
|
||||
val clip = ClipData.newPlainText(context.getString(R.string.app_name), text)
|
||||
val clip = ClipData.newPlainText(context.getString(eu.darken.capod.common.R.string.app_name), text)
|
||||
clipboard.setPrimaryClip(clip)
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ class RecorderService : Service2() {
|
||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||
.setSmallIcon(R.drawable.ic_baseline_bug_report_24)
|
||||
.setContentText("Idle")
|
||||
.setContentTitle(getString(R.string.app_name))
|
||||
.setContentTitle(getString(eu.darken.capod.common.R.string.app_name))
|
||||
.addAction(NotificationCompat.Action.Builder(0, getString(R.string.general_done_action), stopPi).build())
|
||||
|
||||
startForeground(NOTIFICATION_ID, builder.build())
|
||||
|
||||
@@ -8,6 +8,8 @@ import android.text.SpannableStringBuilder
|
||||
import android.view.View
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.viewModels
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import eu.darken.capod.BuildConfig
|
||||
@@ -115,18 +117,18 @@ class OverviewFragment : Fragment3(R.layout.main_fragment) {
|
||||
val baseTitle = when (info.type) {
|
||||
UpgradeRepo.Type.GPLAY -> {
|
||||
if (info.isPro) {
|
||||
getString(R.string.app_name_pro)
|
||||
getString(eu.darken.capod.common.R.string.app_name_pro)
|
||||
} else {
|
||||
gplay.isVisible = true
|
||||
getString(R.string.app_name)
|
||||
getString(eu.darken.capod.common.R.string.app_name)
|
||||
}
|
||||
}
|
||||
UpgradeRepo.Type.FOSS -> {
|
||||
if (info.isPro) {
|
||||
getString(R.string.app_name_foss)
|
||||
getString(eu.darken.capod.common.R.string.app_name_foss)
|
||||
} else {
|
||||
donate.isVisible = true
|
||||
getString(R.string.app_name)
|
||||
getString(eu.darken.capod.common.R.string.app_name)
|
||||
}
|
||||
}
|
||||
}.split(" ".toRegex())
|
||||
@@ -141,12 +143,13 @@ class OverviewFragment : Fragment3(R.layout.main_fragment) {
|
||||
}
|
||||
builder.append(colorString(requireContext(), color, baseTitle[1]))
|
||||
} else {
|
||||
getString(R.string.app_name)
|
||||
getString(eu.darken.capod.common.R.string.app_name)
|
||||
}
|
||||
}
|
||||
vm.launchUpgradeFlow.observe2 {
|
||||
it(requireActivity())
|
||||
}
|
||||
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
}
|
||||
|
||||
|
||||
@@ -7,9 +7,21 @@ import androidx.core.view.isInvisible
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.lists.binding
|
||||
import eu.darken.capod.databinding.OverviewPodsDualItemBinding
|
||||
import eu.darken.capod.pods.core.*
|
||||
import eu.darken.capod.pods.core.DualPodDevice
|
||||
import eu.darken.capod.pods.core.HasCase
|
||||
import eu.darken.capod.pods.core.HasChargeDetectionDual
|
||||
import eu.darken.capod.pods.core.HasDualMicrophone
|
||||
import eu.darken.capod.pods.core.HasEarDetectionDual
|
||||
import eu.darken.capod.pods.core.HasPodStyle
|
||||
import eu.darken.capod.pods.core.HasStateDetection
|
||||
import eu.darken.capod.pods.core.apple.DualApplePods
|
||||
import eu.darken.capod.pods.core.apple.DualApplePods.LidState
|
||||
import eu.darken.capod.pods.core.firstSeenFormatted
|
||||
import eu.darken.capod.pods.core.getBatteryDrawable
|
||||
import eu.darken.capod.pods.core.getBatteryLevelCase
|
||||
import eu.darken.capod.pods.core.getBatteryLevelLeftPod
|
||||
import eu.darken.capod.pods.core.getBatteryLevelRightPod
|
||||
import eu.darken.capod.pods.core.lastSeenFormatted
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
|
||||
@@ -42,8 +54,10 @@ class DualPodsCardVH(parent: ViewGroup) :
|
||||
podLeftIcon.setImageResource(device.leftPodIcon)
|
||||
podRightIcon.setImageResource(device.rightPodIcon)
|
||||
|
||||
lastSeen.text = context.getString(R.string.last_seen_x, device.lastSeenFormatted(item.now))
|
||||
firstSeen.text = context.getString(R.string.first_seen_x, device.firstSeenFormatted(item.now))
|
||||
lastSeen.text =
|
||||
context.getString(eu.darken.capod.common.R.string.last_seen_x, device.lastSeenFormatted(item.now))
|
||||
firstSeen.text =
|
||||
context.getString(eu.darken.capod.common.R.string.first_seen_x, device.firstSeenFormatted(item.now))
|
||||
firstSeen.isGone = Duration.between(device.seenFirstAt, device.seenLastAt).toMinutes() < 1
|
||||
|
||||
reception.text = item.getReceptionText()
|
||||
@@ -131,9 +145,9 @@ class DualPodsCardVH(parent: ViewGroup) :
|
||||
device.apply {
|
||||
if (this is DualApplePods) {
|
||||
podCaseLidLabel.text = when (caseLidState) {
|
||||
LidState.OPEN -> context.getString(R.string.pods_case_status_open_label)
|
||||
LidState.CLOSED -> context.getString(R.string.pods_case_status_closed_label)
|
||||
else -> context.getString(R.string.pods_case_unknown_state)
|
||||
LidState.OPEN -> context.getString(eu.darken.capod.common.R.string.pods_case_status_open_label)
|
||||
LidState.CLOSED -> context.getString(eu.darken.capod.common.R.string.pods_case_status_closed_label)
|
||||
else -> context.getString(eu.darken.capod.common.R.string.pods_case_unknown_state)
|
||||
}
|
||||
|
||||
val hideInfo = !listOf(LidState.OPEN, LidState.CLOSED).contains(caseLidState)
|
||||
|
||||
@@ -3,7 +3,6 @@ package eu.darken.capod.main.ui.overview.cards.pods
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.lists.BindableVH
|
||||
import eu.darken.capod.common.lists.differ.DifferItem
|
||||
import eu.darken.capod.common.lists.modular.ModularAdapter
|
||||
@@ -19,7 +18,7 @@ abstract class PodDeviceVH<D : PodDeviceVH.Item, B : ViewBinding>(
|
||||
|
||||
fun Item.getReceptionText(): String = device.getSignalQuality(context)
|
||||
.let { if (showDebug) "$it ${device.seenCounter}" else it }
|
||||
.let { if (isMainPod) "$it\n(${getString(R.string.pods_yours)})" else it }
|
||||
.let { if (isMainPod) "$it\n(${getString(eu.darken.capod.common.R.string.pods_yours)})" else it }
|
||||
|
||||
interface Item : OverviewAdapter.Item {
|
||||
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ class UnknownPodDeviceCardVH(parent: ViewGroup) :
|
||||
reception.text = item.getReceptionText()
|
||||
|
||||
details.text = when (item.device) {
|
||||
is ApplePods -> getString(R.string.pods_unknown_contact_dev)
|
||||
else -> getString(R.string.pods_unknown_label)
|
||||
is ApplePods -> getString(eu.darken.capod.common.R.string.pods_unknown_contact_dev)
|
||||
else -> getString(eu.darken.capod.common.R.string.pods_unknown_label)
|
||||
}
|
||||
|
||||
rawdata.text = device.rawDataHex.joinToString("\n")
|
||||
|
||||
@@ -2,7 +2,10 @@ package eu.darken.capod.main.ui.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ListView
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.preference.Preference
|
||||
@@ -15,6 +18,7 @@ import eu.darken.capod.common.viewbinding.viewBinding
|
||||
import eu.darken.capod.databinding.SettingsFragmentBinding
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SettingsFragment : Fragment2(R.layout.settings_fragment),
|
||||
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
|
||||
|
||||
+4
-4
@@ -1,19 +1,19 @@
|
||||
package eu.darken.capod.main.ui.settings.general
|
||||
|
||||
import android.bluetooth.BluetoothDevice
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.bluetooth.BluetoothDevice2
|
||||
|
||||
|
||||
class DeviceSelectionDialogFactory constructor(private val context: Context) {
|
||||
|
||||
fun create(
|
||||
devices: List<BluetoothDevice>,
|
||||
current: BluetoothDevice?,
|
||||
callback: (BluetoothDevice?) -> Unit
|
||||
devices: List<BluetoothDevice2>,
|
||||
current: BluetoothDevice2?,
|
||||
callback: (BluetoothDevice2?) -> Unit
|
||||
): AlertDialog {
|
||||
return MaterialAlertDialogBuilder(context).apply {
|
||||
setTitle(R.string.settings_maindevice_address_label)
|
||||
|
||||
-1
@@ -30,7 +30,6 @@ class GeneralSettingsFragmentVM @Inject constructor(
|
||||
val events = SingleLiveEvent<GeneralSettingsEvents>()
|
||||
|
||||
init {
|
||||
|
||||
generalSettings.monitorMode.flow
|
||||
.withPrevious()
|
||||
.filter { (old, new) ->
|
||||
|
||||
@@ -21,7 +21,19 @@ import eu.darken.capod.common.upgrade.isPro
|
||||
import eu.darken.capod.main.ui.MainActivity
|
||||
import eu.darken.capod.monitor.core.PodDeviceCache
|
||||
import eu.darken.capod.monitor.core.PodMonitor
|
||||
import eu.darken.capod.pods.core.*
|
||||
import eu.darken.capod.pods.core.DualPodDevice
|
||||
import eu.darken.capod.pods.core.HasCase
|
||||
import eu.darken.capod.pods.core.HasChargeDetectionDual
|
||||
import eu.darken.capod.pods.core.HasEarDetection
|
||||
import eu.darken.capod.pods.core.HasEarDetectionDual
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import eu.darken.capod.pods.core.PodFactory
|
||||
import eu.darken.capod.pods.core.SinglePodDevice
|
||||
import eu.darken.capod.pods.core.getBatteryDrawable
|
||||
import eu.darken.capod.pods.core.getBatteryLevelCase
|
||||
import eu.darken.capod.pods.core.getBatteryLevelHeadset
|
||||
import eu.darken.capod.pods.core.getBatteryLevelLeftPod
|
||||
import eu.darken.capod.pods.core.getBatteryLevelRightPod
|
||||
import finish2
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -135,7 +147,7 @@ class WidgetProvider : AppWidgetProvider() {
|
||||
|
||||
setOnClickPendingIntent(R.id.widget_root, pendingIntent)
|
||||
|
||||
setTextViewText(R.id.primary, context.getString(R.string.pods_unknown_label))
|
||||
setTextViewText(R.id.primary, context.getString(eu.darken.capod.common.R.string.pods_unknown_label))
|
||||
}
|
||||
|
||||
private fun createNoDeviceLayout(
|
||||
@@ -151,7 +163,7 @@ class WidgetProvider : AppWidgetProvider() {
|
||||
|
||||
setOnClickPendingIntent(R.id.widget_root, pendingIntent)
|
||||
|
||||
setTextViewText(R.id.primary, context.getString(R.string.overview_nomaindevice_label))
|
||||
setTextViewText(R.id.primary, context.getString(eu.darken.capod.common.R.string.overview_nomaindevice_label))
|
||||
}
|
||||
|
||||
private fun createDualPodLayout(
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package eu.darken.capod.monitor.core.worker
|
||||
|
||||
import android.app.NotificationManager
|
||||
import android.bluetooth.BluetoothDevice
|
||||
import android.content.Context
|
||||
import androidx.hilt.work.HiltWorker
|
||||
import androidx.work.CoroutineWorker
|
||||
@@ -9,6 +8,7 @@ import androidx.work.ForegroundInfo
|
||||
import androidx.work.WorkerParameters
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import eu.darken.capod.common.bluetooth.BluetoothDevice2
|
||||
import eu.darken.capod.common.bluetooth.BluetoothManager2
|
||||
import eu.darken.capod.common.coroutine.DispatcherProvider
|
||||
import eu.darken.capod.common.debug.Bugs
|
||||
@@ -30,8 +30,20 @@ import eu.darken.capod.reaction.core.autoconnect.AutoConnect
|
||||
import eu.darken.capod.reaction.core.playpause.PlayPause
|
||||
import eu.darken.capod.reaction.core.popup.PopUpReaction
|
||||
import eu.darken.capod.reaction.ui.popup.PopUpWindow
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.cancelChildren
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.catch
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.emptyFlow
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.flatMapLatest
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
|
||||
@HiltWorker
|
||||
@@ -130,7 +142,7 @@ class MonitorWorker @AssistedInject constructor(
|
||||
.flatMapLatest { arguments ->
|
||||
val monitorMode = arguments[0] as MonitorMode
|
||||
val mainAddress = arguments[1] as String?
|
||||
val devices = arguments[2] as Collection<BluetoothDevice>
|
||||
val devices = arguments[2] as Collection<BluetoothDevice2>
|
||||
|
||||
log(TAG) { "Monitor mode: $monitorMode" }
|
||||
when (monitorMode) {
|
||||
@@ -145,7 +157,7 @@ class MonitorWorker @AssistedInject constructor(
|
||||
log(TAG, WARN) { "Main device address not set, staying alive while any is connected" }
|
||||
}
|
||||
devices.any { it.address == mainAddress } -> {
|
||||
log(TAG) { "MainDevice is connected ($mainAddress), aborting any timeout." }
|
||||
log(TAG) { "Main device is connected ($mainAddress), aborting any timeout." }
|
||||
}
|
||||
else -> {
|
||||
log(TAG) { "No known Pods are connected, canceling worker soon." }
|
||||
|
||||
@@ -53,9 +53,9 @@ class MonitorNotifications @Inject constructor(
|
||||
setChannelId(NOTIFICATION_CHANNEL_ID)
|
||||
setContentIntent(openPi)
|
||||
priority = NotificationCompat.PRIORITY_LOW
|
||||
setSmallIcon(R.drawable.devic_earbuds_generic_both)
|
||||
setSmallIcon(eu.darken.capod.common.R.drawable.devic_earbuds_generic_both)
|
||||
setOngoing(true)
|
||||
setContentTitle(context.getString(R.string.app_name))
|
||||
setContentTitle(context.getString(eu.darken.capod.common.R.string.app_name))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,9 +64,9 @@ class MonitorNotifications @Inject constructor(
|
||||
return builder.apply {
|
||||
setCustomContentView(null)
|
||||
setStyle(NotificationCompat.BigTextStyle())
|
||||
setContentTitle(context.getString(R.string.pods_none_label_short))
|
||||
setSubText(context.getString(R.string.app_name))
|
||||
setSmallIcon(R.drawable.devic_earbuds_generic_both)
|
||||
setContentTitle(context.getString(eu.darken.capod.common.R.string.pods_none_label_short))
|
||||
setSubText(context.getString(eu.darken.capod.common.R.string.app_name))
|
||||
setSmallIcon(eu.darken.capod.common.R.drawable.devic_earbuds_generic_both)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package eu.darken.capod.reaction.ui
|
||||
|
||||
import android.bluetooth.BluetoothDevice
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.annotation.Keep
|
||||
@@ -11,6 +10,7 @@ import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.bluetooth.BluetoothDevice2
|
||||
import eu.darken.capod.common.uix.PreferenceFragment3
|
||||
import eu.darken.capod.common.upgrade.UpgradeRepo
|
||||
import eu.darken.capod.main.core.GeneralSettings
|
||||
@@ -36,7 +36,7 @@ class ReactionSettingsFragment : PreferenceFragment3() {
|
||||
override val preferenceFile: Int = R.xml.preferences_reactions
|
||||
|
||||
private var isPro: Boolean = false
|
||||
private var bondedDevices: List<BluetoothDevice> = emptyList()
|
||||
private var bondedDevices: List<BluetoothDevice2> = emptyList()
|
||||
private val autoConnectConditionPref by lazy { findPreference<ListPreference>(settings.autoConnectCondition.key)!! }
|
||||
|
||||
override fun onPreferencesCreated() {
|
||||
@@ -83,6 +83,11 @@ class ReactionSettingsFragment : PreferenceFragment3() {
|
||||
upgradeRepo.launchBillingFlow(requireActivity())
|
||||
preference.isChecked = false
|
||||
return true
|
||||
} else if (preference.key == reactionSettings.showPopUpOnConnection.key && !isPro) {
|
||||
preference as CheckBoxPreference
|
||||
upgradeRepo.launchBillingFlow(requireActivity())
|
||||
preference.isChecked = false
|
||||
return true
|
||||
}
|
||||
|
||||
return super.onPreferenceTreeClick(preference)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" />
|
||||
</vector>
|
||||
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16Z" />
|
||||
</vector>
|
||||
@@ -22,6 +22,8 @@
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:paddingBottom="48dp"
|
||||
android:clipToPadding="false"
|
||||
tools:listitem="@layout/overview_pods_dual_item"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/toolbar" />
|
||||
|
||||
@@ -4,17 +4,6 @@
|
||||
style="@style/PodWidget.Container"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/headphones_label"
|
||||
style="@style/PodWidget.TextPrimary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginBottom="2dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold"
|
||||
tools:text="AirPods Max" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -110,4 +99,14 @@
|
||||
android:src="@drawable/ic_baseline_power_24" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/headphones_label"
|
||||
style="@style/PodWidget.TextPrimary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold"
|
||||
tools:text="AirPods Max" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -37,10 +37,9 @@
|
||||
<string name="settings_maindevice_address_none">غير موجود</string>
|
||||
<string name="settings_maindevice_model_label">طِراز جهازك</string>
|
||||
<string name="settings_maindevice_model_description">طِراز جهازك الرئيسي. يساعد هذا التطبيق في التعرف على جهازك عندما لا يكون متصلاً بهاتفك.</string>
|
||||
<string name="settings_popup_caseopen_label">عرض إشعار منبثق</string>
|
||||
<string name="settings_popup_caseopen_description">عرض إشعار منبثق عند فتح علبة الجهاز (تجريبي).</string>
|
||||
<string name="settings_onepod_mode_label">وضعية السماعة الواحدة</string>
|
||||
<string name="settings_onepod_mode_description">ليس بالضرورة ارتداء كِلتا السمَّاعتين، ارتداء سمَّاعة واحدة يكفي لتحريك ردود الفعل.</string>
|
||||
<string name="settings_popup_caseopen_description">عرض إشعار منبثق عند فتح علبة الجهاز (تجريبي).</string>
|
||||
<string name="notification_channel_device_status_label">حالة الجهاز</string>
|
||||
<string name="debug_debuglog_size_label">الحجم</string>
|
||||
<string name="debug_debuglog_size_compressed_label">الحجم المضغوط</string>
|
||||
|
||||
@@ -33,10 +33,9 @@
|
||||
<string name="settings_maindevice_address_none">Heç biri</string>
|
||||
<string name="settings_maindevice_model_label">Cihazınızın modeli</string>
|
||||
<string name="settings_maindevice_model_description">Əsas cihazının modeli. Bu, telefonunuzla bağlantı qurulmadığı vaxtlarda tətbiqin cihazınızı tanımasına kömək edir.</string>
|
||||
<string name="settings_popup_caseopen_label">Açılan pəncərəni göstər</string>
|
||||
<string name="settings_popup_caseopen_description">Cihazın qutusu açılanda bir açılan pəncərə göstər (təcrübi).</string>
|
||||
<string name="settings_onepod_mode_label">Tək tərəf rejimi</string>
|
||||
<string name="settings_onepod_mode_description">Hər iki tərəfi də taxmağa ehtiyac yoxdur, reaksiyaları tətikləmək üçün tək tərəfi taxmaq yetərlidir.</string>
|
||||
<string name="settings_popup_caseopen_description">Cihazın qutusu açılanda bir açılan pəncərə göstər (təcrübi).</string>
|
||||
<string name="notification_channel_device_status_label">Cihaz vəziyyəti</string>
|
||||
<string name="debug_debuglog_size_label">Həcm</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Sıxışdırılmış həcm</string>
|
||||
|
||||
@@ -43,10 +43,9 @@
|
||||
<string name="settings_maindevice_address_none">Няма</string>
|
||||
<string name="settings_maindevice_model_label">Мадэль вашай прылады</string>
|
||||
<string name="settings_maindevice_model_description">Мадэль вашай прылады. Гэта дапамагае праграме апазнаць вашу прыладу, калі яна не падключана да вашага тэлефона.</string>
|
||||
<string name="settings_popup_caseopen_label">Паказваць апавяшчэнне</string>
|
||||
<string name="settings_popup_caseopen_description">Паказваць апавяшчэнне, калі футляр прылады адчынены (эксперыментальная функцыя).</string>
|
||||
<string name="settings_onepod_mode_label">Рэжым аднаго навушніка</string>
|
||||
<string name="settings_onepod_mode_description">Нашэнне абодвух навушнікаў не абавязкова, нашэнне аднаго навушніка цалкам дастаткова для запуску рэакцый.</string>
|
||||
<string name="settings_popup_caseopen_description">Паказваць апавяшчэнне, калі футляр прылады адчынены (эксперыментальная функцыя).</string>
|
||||
<string name="notification_channel_device_status_label">Статус прылады</string>
|
||||
<string name="debug_debuglog_size_label">Памер</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Сціснуты памер</string>
|
||||
@@ -95,5 +94,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">Трансляцыі даных BLE прымаюцца CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Безвынікова</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Не ўдалося выправіць непаладку. Не дапамагла ніводная камбінацыя параметраў сумяшчальнасці.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Ваш тэлефон наогул не атрымаў ніякіх даных BLE. Вы можаце паўтарыць гэты тэст у шматлюдным месцы, каб даведацца, ці могуць быць атрыманыя даныя з іншых крыніц (акрамя вашых навушнікаў). Няма атрыманых даных, якія паказваюць на праблему з аперацыйнай сістэмай вашага тэлефона.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Ваш тэлефон атрымаў даныя BLE, але яны паступаюць з прылады, якая не падтрымліваецца. Вашы навушнікі ўключаны? Ці падтрымлівае CAPod вашы навушнікі?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Паспрабаваць яшчэ раз</string>
|
||||
<string name="troubleshoot_action">Выпраўленне непаладак</string>
|
||||
</resources>
|
||||
|
||||
@@ -43,10 +43,9 @@
|
||||
<string name="settings_maindevice_address_none">Cap</string>
|
||||
<string name="settings_maindevice_model_label">El vostre model de dispositiu</string>
|
||||
<string name="settings_maindevice_model_description">El model del vostre dispositiu principal. Això ajuda l\'aplicació a reconèixer el vostre dispositiu quan no està connectat al vostre telèfon.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostra la finestra emergent</string>
|
||||
<string name="settings_popup_caseopen_description">Mostra una finestra emergent quan s\'obre la funda del dispositiu (experimental).</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_popup_caseopen_description">Mostra una finestra emergent quan s\'obre la funda del dispositiu (experimental).</string>
|
||||
<string name="notification_channel_device_status_label">Estat del dispositiu</string>
|
||||
<string name="debug_debuglog_size_label">Mida</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Mida comprimida</string>
|
||||
@@ -95,7 +94,6 @@
|
||||
<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 vostre 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 es reben dades que indiquen un problema amb el sistema operatiu del vostre 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>
|
||||
|
||||
@@ -43,10 +43,9 @@
|
||||
<string name="settings_maindevice_address_none">Žádná</string>
|
||||
<string name="settings_maindevice_model_label">Model vašeho zařízení</string>
|
||||
<string name="settings_maindevice_model_description">Model vašeho hlavního zařízení. To pomůže aplikaci rozpoznat vaše zařízení, když není připojeno k telefonu.</string>
|
||||
<string name="settings_popup_caseopen_label">Zobrazit vyskakovací okno</string>
|
||||
<string name="settings_popup_caseopen_description">Zobrazit vyskakovací okno, pokud je pouzdro zařízení otevřeno (experimentální).</string>
|
||||
<string name="settings_onepod_mode_label">Režim jednoho sluchátka</string>
|
||||
<string name="settings_onepod_mode_description">Není nutné nosit obě sluchátka, k vyvolání reakce stačí nosit jen jedno.</string>
|
||||
<string name="settings_popup_caseopen_description">Zobrazit vyskakovací okno, pokud je pouzdro zařízení otevřeno (experimentální).</string>
|
||||
<string name="notification_channel_device_status_label">Stav zařízení</string>
|
||||
<string name="debug_debuglog_size_label">Velikost</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Komprimovaná velikost</string>
|
||||
@@ -95,7 +94,6 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod přijímá reklamní vysílání BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Neúspěšné</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Řešení problémů se nezdařilo. Žádná kombinace možností kompatibility nepomohla.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefon nepřijal vůbec žádná data BLE. Tento test můžete zopakovat v přelidněném prostoru, abyste zjistili, zda lze přijímat i jiné zdroje dat (než vaše sluchátka). Nepřijímání dat ukazuje na problém s operačním systémem telefonu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefon přijal data BLE, ale data nepocházejí z žádného podporovaného zařízení. Jsou sluchátka zapnutá? Podporuje CAPod vaše sluchátka?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Zkusit znovu</string>
|
||||
<string name="troubleshoot_action">Vyřešit problém</string>
|
||||
|
||||
@@ -43,10 +43,12 @@
|
||||
<string name="settings_maindevice_address_none">Keine</string>
|
||||
<string name="settings_maindevice_model_label">Ihr Gerätemodell</string>
|
||||
<string name="settings_maindevice_model_description">Das Modell Ihres Hauptgeräts. Dies hilft der App, Ihr Gerät zu erkennen, wenn es nicht mit Ihrem Telefon verbunden ist.</string>
|
||||
<string name="settings_popup_caseopen_label">Popup zeigen</string>
|
||||
<string name="settings_popup_caseopen_description">Ein Popup anzeigen, wenn das Gerätegehäuse geöffnet wird (experimentell).</string>
|
||||
<string name="settings_onepod_mode_label">Ein-Pod-Modus</string>
|
||||
<string name="settings_onepod_mode_description">Das Tragen beider Pods ist nicht erforderlich. Das Tragen eines einzigen Pods reicht aus, um Reaktionen auszulösen.</string>
|
||||
<string name="settings_popup_caseopen_label">Hüllen popup anzeigen</string>
|
||||
<string name="settings_popup_caseopen_description">Ein Popup anzeigen, wenn das Gerätegehäuse geöffnet wird (experimentell).</string>
|
||||
<string name="settings_popup_connected_label">Verbindungs-Popup anzeigen</string>
|
||||
<string name="settings_popup_connected_description">Zeigt ein Popup an, wenn das Gerät zum ersten Mal eine Verbindung herstellt.</string>
|
||||
<string name="notification_channel_device_status_label">Geräte Status</string>
|
||||
<string name="debug_debuglog_size_label">Größe</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Komprimierte Größe</string>
|
||||
@@ -95,7 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">BLE-Werbesendungen werden von CAPod empfangen.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Erfolglos</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Fehlerbehebung fehlgeschlagen. Keine Kombination von Kompatibilitätsoptionen hat geholfen.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Ihr Telefon hat überhaupt keine BLE-Daten empfangen. Sie können diesen Test in einem überfüllten Bereich wiederholen, um zu sehen, ob Datenquellen (außer Ihren Kopfhörern) empfangen werden können. Es werden keine Daten empfangen, was auf ein Problem mit dem Betriebssystem Ihres Telefons hindeutet.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Dein Telefon hat überhaupt keine BLE-Daten empfangen. Du könntest diesen Test in einem überfüllten Bereich wiederholen, um zu sehen, ob Datenquellen (außer Ihren Kopfhörern) empfangen werden können. Es werden keine Daten empfangen, was auf ein Problem mit dem Betriebssystem Ihres Telefons hindeutet.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Ihr Telefon hat BLE-Daten empfangen, aber die Daten stammen von keinem unterstützten Gerät. Sind Ihre Kopfhörer eingeschaltet? Unterstützt CAPod Ihren Kopfhörer?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Versuchen Sie es erneut</string>
|
||||
<string name="troubleshoot_action">Fehlerbehebung</string>
|
||||
|
||||
@@ -37,10 +37,9 @@
|
||||
<string name="settings_maindevice_address_none">Καμία</string>
|
||||
<string name="settings_maindevice_model_label">Μοντέλο της συσκευής σας</string>
|
||||
<string name="settings_maindevice_model_description">Το μοντέλο της κύριας συσκευής σας. Αυτό βοηθά την εφαρμογή να αναγνωρίσει τη συσκευή σας όταν δεν είναι συνδεδεμένη στο τηλέφωνό σας.</string>
|
||||
<string name="settings_popup_caseopen_label">Εμφάνιση αναδυόμενου</string>
|
||||
<string name="settings_popup_caseopen_description">Εμφάνιση αναδυόμενου όταν η θήκη της συσκευής είναι ανοιχτή (πειραματικό).</string>
|
||||
<string name="settings_onepod_mode_label">Λειτουργία ενός pod</string>
|
||||
<string name="settings_onepod_mode_description">Δεν απαιτείται να φοράτε και τα δύο pods, αρκεί να φοράτε ένα μόνο pod για να ενεργοποιούνται αντιδράσεις.</string>
|
||||
<string name="settings_popup_caseopen_description">Εμφάνιση αναδυόμενου όταν η θήκη της συσκευής είναι ανοιχτή (πειραματικό).</string>
|
||||
<string name="notification_channel_device_status_label">Κατάσταση συσκευής</string>
|
||||
<string name="debug_debuglog_size_label">Μέγεθος</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Συμπιεσμένο μέγεθος</string>
|
||||
|
||||
@@ -7,72 +7,94 @@
|
||||
<string name="general_upgrade_action">Actualizar</string>
|
||||
<string name="general_check_action">Verificar</string>
|
||||
<string name="general_close_action">Cerrar</string>
|
||||
<string name="upgrade_capod_label">Actualitzar CAPod</string>
|
||||
<string name="upgrade_capod_description">Obtenga funciones adicionales y apoye al desarrollador.</string>
|
||||
<string name="upgrade_capod_label">Actualizar CAPod</string>
|
||||
<string name="upgrade_capod_description">Consigue características adicionales y apoya al desarrollador.</string>
|
||||
<string name="settings_monitor_mode_label">Modo monitor</string>
|
||||
<string name="settings_monitor_mode_description">Bajo qué circunstancias esta aplicación monitorea los datos Bluetooth.</string>
|
||||
<string name="settings_scanner_mode_label">Modo escáner</string>
|
||||
<string name="settings_scanner_mode_description">¿El escáner de datos Bluetooth Low Energy debe priorizar el rendimiento o ahorrar energía?</string>
|
||||
<string name="settings_autopause_label">Pausar automáticamente</string>
|
||||
<string name="settings_autopause_description">Pausa el audio cuando te quites el dispositivo de la oreja.</string>
|
||||
<string name="settings_scanner_mode_description">¿El escáner de datos del Bluetooth de baja energía debe priorizar el rendimiento o conservar la batería?</string>
|
||||
<string name="settings_autopause_label">Pausa automática</string>
|
||||
<string name="settings_autopause_description">Pausa el audio cuando retires el dispositivo del oído.</string>
|
||||
<string name="settings_showall_label">Mostrar todos los dispositivos</string>
|
||||
<string name="settings_showall_description">Muestra los dispositivos de otras personas que están cerca de ti.</string>
|
||||
<string name="settings_showall_description">Muestra los dispositivos de otras personas que están cerca.</string>
|
||||
<string name="settings_autopplay_label">Reproducción automática</string>
|
||||
<string name="settings_autoplay_description">Inicia la reproducción de audio cuando se use el dispositivo.</string>
|
||||
<string name="settings_autoplay_description">Inicia la reproducción del audio cuando se usa el dispositivo.</string>
|
||||
<string name="settings_fake_data_label">Información falsa</string>
|
||||
<string name="settings_fake_data_description">Mostrar datos falsos. Por ejemplo: simular un dispositivo que no existe.</string>
|
||||
<string name="settings_debug_label">Configuración de depuración</string>
|
||||
<string name="settings_debug_description">Configuraciones adicionales para ayudar a solucionar problemas con la aplicación.</string>
|
||||
<string name="settings_signal_minimum_label">Calidad de señal mínima</string>
|
||||
<string name="settings_signal_minimum_description">La calidad de señal mínima que debe tener un dispositivo para ser considerado suyo.</string>
|
||||
<string name="settings_autoconnect_label">Autoconectar</string>
|
||||
<string name="settings_fake_data_description">Mostrar los datos falsos, es decir, simular dispositivos que no existen.</string>
|
||||
<string name="settings_debug_label">Opciones de depuración</string>
|
||||
<string name="settings_debug_description">Ajustes adicionales para ayudar a solucionar los problemas con la aplicación.</string>
|
||||
<string name="settings_signal_minimum_label">Calidad mínima de la señal</string>
|
||||
<string name="settings_signal_minimum_description">La calidad mínima de la señal que debe tener un dispositivo para ser considerado tuyo.</string>
|
||||
<string name="settings_autoconnect_label">Conectar automáticamente</string>
|
||||
<string name="settings_autoconnect_description">Si Android no se conecta automáticamente, también podemos preguntarlo. Esto establecerá la configuración del modo de monitor en \'Siempre\'.</string>
|
||||
<string name="settings_autoconnect_condition_label">Condición de autoconexión</string>
|
||||
<string name="settings_autoconnect_condition_description">¿Cuándo debemos intentar conectarnos a su dispositivo?</string>
|
||||
<string name="settings_reaction_label">Reacciones</string>
|
||||
<string name="settings_reaction_description">Reaccionar a eventos y comportamientos.</string>
|
||||
<string name="settings_category_yourdevice_label">Tu dispositivo</string>
|
||||
<string name="settings_category_compatibility_options_title">Compatibilidad</string>
|
||||
<string name="settings_category_compatibility_options_description">No toques nada si todo funciona ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Desactivar el filtrado por hardware</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">No delegues el filtrado de los datos al sistema, en cambio obtén todos los datos y fíltralos dentro de la aplicación.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Deshabilitar el procesamiento por lotes del hardware</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">No permitas que el sistema recopile los datos BLE antes de enviárnoslos.</string>
|
||||
<string name="settings_maindevice_address_label">La dirección de su dispositivo</string>
|
||||
<string name="settings_maindevice_address_description">La dirección de su dispositivo emparejado. La aplicación usa esto para determinar cuándo está conectado a su teléfono.</string>
|
||||
<string name="settings_maindevice_address_none">Ninguno</string>
|
||||
<string name="settings_maindevice_model_label">El modelo de su dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">El modelo de su dispositivo principal. Esto ayuda a que la aplicación reconozca su dispositivo cuando no está conectado a su teléfono.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar ventanas emergentes</string>
|
||||
<string name="settings_popup_caseopen_description">Muestra una ventana emergente cuando se abre el estuche del dispositivo (experimental).</string>
|
||||
<string name="settings_onepod_mode_label">Modo un audífono</string>
|
||||
<string name="settings_onepod_mode_description">No es necesario usar ambos AirPods, usar un solo AirPod es suficiente para desencadenar reacciones.</string>
|
||||
<string name="settings_popup_caseopen_description">Muestra una ventana emergente cuando se abre el estuche del dispositivo (experimental).</string>
|
||||
<string name="notification_channel_device_status_label">Estado del dispositivo</string>
|
||||
<string name="debug_debuglog_size_label">Tamaño</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Tamaño comprimido</string>
|
||||
<string name="debug_notification_channel_label">Notificaciones depuradas</string>
|
||||
<string name="debug_notification_channel_label">Notificaciones de la depuración</string>
|
||||
<string name="debug_debuglog_file_label">Registro guardado</string>
|
||||
<string name="debug_debuglog_record_action">Grabar registro de depuracion</string>
|
||||
<string name="settings_support_installid_label">ID de instalación</string>
|
||||
<string name="settings_support_installid_desc">Los informes automáticos de errores son anónimos. Comparta su ID de instalación si el desarrollador necesita encontrar sus informes de error.</string>
|
||||
<string name="debug_debuglog_record_action">Registro de depuración</string>
|
||||
<string name="settings_support_installid_label">ID de la instalación</string>
|
||||
<string name="settings_support_installid_desc">Los informes automáticos de errores son anónimos. Comparte tu ID de la instalación si el desarrollador necesita encontrar tus informes de errores.</string>
|
||||
<string name="settings_support_label">Ayuda</string>
|
||||
<string name="settings_support_description">Si necesita ayuda.</string>
|
||||
<string name="issue_tracker_label">Rastreador de problemas</string>
|
||||
<string name="issue_tracker_description">Un rastreador público de problemas para informes de errores y solicitudes de funciones (solo en inglés).</string>
|
||||
<string name="discord_description">Un lugar para pasar el rato y hacer preguntas.</string>
|
||||
<string name="settings_support_description">Si necesitas ayuda.</string>
|
||||
<string name="issue_tracker_label">Gestor de incidencias</string>
|
||||
<string name="issue_tracker_description">Un gestor de incidencias público para los informes de errores y solicitudes de funciones (solo en inglés).</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
<string name="discord_description">Un lugar donde pasar el rato y hacer preguntas.</string>
|
||||
<string name="changelog_label">Registro de cambios</string>
|
||||
<string name="settings_label">Ajustes</string>
|
||||
<string name="settings_privacy_policy_label">Política de privacidad</string>
|
||||
<string name="settings_privacy_policy_desc">Manejo responsable de datos.</string>
|
||||
<string name="settings_privacy_policy_desc">Tratamiento responsable de los datos.</string>
|
||||
<string name="settings_licenses_label">Licencias</string>
|
||||
<string name="settings_category_other_label">Otros</string>
|
||||
<string name="settings_general_label">Ajustes</string>
|
||||
<string name="settings_general_description">Ajustes generales que afectan a toda la aplicación.</string>
|
||||
<string name="settings_acknowledgements_label">Agradecimientos</string>
|
||||
<string name="settings_debug_autoreports_label">Informes automáticos de errores</string>
|
||||
<string name="settings_debug_autoreports_description">Informa automáticamente de los problemas. Por ejemplo: detalles sobre un bloqueo de la aplicación para que pueda averiguar cómo solucionarlo.</string>
|
||||
<string name="settings_debug_mode_label">Modo depuración</string>
|
||||
<string name="settings_debug_mode_description">Muestra información adicional para solucionar problemas.</string>
|
||||
<string name="settings_debug_autoreports_description">Informa automáticamente de los problemas, por ejemplo, de los detalles de un fallo de la aplicación para que pueda averiguar cómo solucionarlo.</string>
|
||||
<string name="settings_debug_mode_label">Modo de depuración</string>
|
||||
<string name="settings_debug_mode_description">Mostrar información adicional para solucionar los problemas.</string>
|
||||
<string name="settings_blescanner_unfiltered_label">Datos BLE sin filtrar</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Elimina los filtros del escáner BLE para mostrar todos los datos BLE transmitidos. Útil para agregar soporte para nuevos tipos de auriculares.</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Elimina cualquier filtro del escáner BLE para mostrar todos los datos BLE emitidos. Útil para añadir compatibilidad con nuevos tipos de auriculares.</string>
|
||||
<string name="settings_compatibility_mode_label">Modo de compatibilidad</string>
|
||||
<string name="settings_compatibility_mode_description">Deshabilita las optimizaciones para mejorar la compatibilidad. Prueba esto si no ves ningún dato.</string>
|
||||
<string name="settings_compatibility_mode_description">Desactiva las optimizaciones para mejorar la compatibilidad. Prueba esto si no ves ningún dato.</string>
|
||||
<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">Jaime Muñoz(jmmartin_5@outlook.com)</string>
|
||||
<string name="widget_description">Un widget que muestra como estaba tu dispositivo.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Envío indirecto de datos</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Utiliza un método alternativo para recibir los datos BLE del sistema (emisión en lugar de devolución de llamada).</string>
|
||||
<string name="troubleshooter_title">Reparador de problemas</string>
|
||||
<string name="troubleshooter_ble_intro_title">Transmisiones Bluetooth de bajo consumo</string>
|
||||
<string name="troubleshooter_ble_intro_body1">Los AirPods (y auriculares similares) transmiten información de su estado mediante una tecnología BLE llamada \"anuncios\". Algunos teléfonos no implementan esta tecnología correctamente. CAPod puede intentar arreglar esto probando diferentes opciones de compatibilidad hasta que se reciban los datos. Inicia la reproducción de la música en tus auriculares y colócalos cerca de tu teléfono, luego comienza el proceso.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Empezar a resolver los problemas</string>
|
||||
<string name="troubleshooter_ble_process_title">Solución de los problemas en curso</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Cada paso dura entre 5 y 10 segundos</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Correcto</string>
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod recibe las emisiones de anuncios BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Incorrecto</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">La solución de problemas falló. Ninguna combinación de las opciones de compatibilidad ayudó.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Tu teléfono recibió los datos BLE, pero los datos no proceden de ningún dispositivo compatible. ¿Están encendidos tus auriculares? ¿Es CAPod compatible con tus auriculares?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Vuelve a intentarlo</string>
|
||||
<string name="troubleshoot_action">Reparador de los problemas</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<string name="settings_category_compatibility_options_description">Las jääda, kui kõik toimib ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Keela riistvara filtreerimine</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Süsteemis andmete filtreerimise asemel saate seda teha rakenduses.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Keela riistvara rühmitamine</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Keelake süsteemil rühmitada kogutud andmeid madalama energiatarbimisega Bluetoothi kohta enne meile saatmist.</string>
|
||||
<string name="widget_description">Viimast teadaolevat seadme seisu näitab vidin.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Kaudsete andmete edastamine</string>
|
||||
@@ -18,7 +19,6 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod võtab vastu madalama energiakuluga Bluetoothi kaudu reklaame.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Nurjus</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Parandamine nurjus. Ükski ühilduvuskombinatsioonidest ei toiminud.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefon ei võtnud vastu mingeid andmeid madalama energiakuluga Buetoothi kaudu. Üritage korrate rahvarohkes kohas, et näha, kas andmete allikaid (mis pole teie kõrvaklapid) saab kätte. Andmete saamise nurjumine viitab telefoni operatsioonisüsteemi veale.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefoni saabusid andmed madalama energiakuluga Bluetoothi kaudu aga andmed ei pärine ühestki ühilduvast seadmest. Kas CAPod ühildub teie kõrvaklapiga?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Proovi uuesti</string>
|
||||
<string name="troubleshoot_action">Lahendamine</string>
|
||||
|
||||
@@ -32,15 +32,20 @@
|
||||
<string name="settings_reaction_label">Réactions</string>
|
||||
<string name="settings_reaction_description">Réagir à des événements et à des comportements.</string>
|
||||
<string name="settings_category_yourdevice_label">Votre appareil</string>
|
||||
<string name="settings_category_compatibility_options_title">Options de compatibilité</string>
|
||||
<string name="settings_category_compatibility_options_description">Ne rien changer rien si tout fonctionne ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Désactiver le filtrage matériel</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Ne pas déléguer pas le filtrage des données au système, gardez plutôt toutes les données et filtres dans l\'appli.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Désactiver le groupage du matériel</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Avant de nous les transmettre, ne pas laisser le système regrouper les données BÉB recueillies.</string>
|
||||
<string name="settings_maindevice_address_label">L’adresse de votre appareil</string>
|
||||
<string name="settings_maindevice_address_description">L’adresse de votre appareil jumelé. L’appli l’utilise pour déterminer s’il est connecté à votre téléphone.</string>
|
||||
<string name="settings_maindevice_address_none">Aucune</string>
|
||||
<string name="settings_maindevice_model_label">Le modèle de votre appareil</string>
|
||||
<string name="settings_maindevice_model_description">Le modèle de votre appareil principal. Facilite la reconnaissance de votre appareil par l’appli s’il n’est pas connecté à votre téléphone.</string>
|
||||
<string name="settings_popup_caseopen_label">Afficher une notification</string>
|
||||
<string name="settings_popup_caseopen_description">Afficher une notification à l’ouverture de l’étui de l\'appareil (expérimental).</string>
|
||||
<string name="settings_onepod_mode_label">Mode à un seul AirPod</string>
|
||||
<string name="settings_onepod_mode_description">Il n’est pas nécessaire de porter deux AirPods, en porter un seul suffit à déclencher les réactions.</string>
|
||||
<string name="settings_popup_caseopen_description">Afficher une notification à l’ouverture de l’étui de l\'appareil (expérimental).</string>
|
||||
<string name="notification_channel_device_status_label">État de l’appareil</string>
|
||||
<string name="debug_debuglog_size_label">Taille</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Taille compressée</string>
|
||||
@@ -76,4 +81,20 @@
|
||||
<string name="help_translate_description">Aider à traduire cette appli dans votre langue préférée.</string>
|
||||
<string name="translators_thanks_title">Traducteurs</string>
|
||||
<string name="translators_thanks_description">AO</string>
|
||||
<string name="widget_description">Un widget qui affiche le dernier état connu de l’appareil.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Transmission indirecte des données</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Utiliser une méthode de remplacement pour recevoir les données BÉB du système (diffusion au lieu de rappel).</string>
|
||||
<string name="troubleshooter_title">Dépannage</string>
|
||||
<string name="troubleshooter_ble_intro_title">Diffusions à bas niveau d\'énergie de Bluetooth</string>
|
||||
<string name="troubleshooter_ble_intro_body1">Les AirPods (et autres casques d’écoute semblables) diffusent des renseignements d’état grâce à une technologie BÉB appelée « annonces ». Certains téléphones n’appliquent pas cette technologie correctement. CAPod peut tenter de corriger cela en essayant différentes options de compatibilité jusqu’à ce que les données soient reçues. Faites jouer un fichier son sur votre casque d’écoute, placez-le près de votre téléphone, puis lancer le processus.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Lancer le dépannage</string>
|
||||
<string name="troubleshooter_ble_process_title">Dépannage en cours</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Chaque étape prend de 5 à 10 secondes</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Dépannage effectué</string>
|
||||
<string name="troubleshooter_ble_result_success_body">Les diffusions d’annonces BÉB sont reçues par CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Échec du dépannage</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Le dépannage a échoué. Aucune des options de compatibilité n’a réglé la situation.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Votre téléphone a reçu des données, mais les données ne proviennent pas d’un appareil pris en charge. Votre casque d’écoute est-il en fonction ? CAPod prend-il votre casque d’écoute en charge ?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Réessayer</string>
|
||||
<string name="troubleshoot_action">Dépanner</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="general_share_action">साझा करना</string>
|
||||
<string name="general_share_action">साझा करें</string>
|
||||
<string name="general_done_action">पूर्ण</string>
|
||||
<string name="general_copy_action">प्रतिलिपि</string>
|
||||
<string name="general_thank_you_label">शुक्रिया</string>
|
||||
<string name="general_thank_you_label">धन्यवाद</string>
|
||||
<string name="notification_channel_device_status_label">उपकरण की स्थिति</string>
|
||||
<string name="settings_support_installid_desc">स्वचालित त्रुटि रिपोर्ट गुमनाम हैं। यदि डेवलपर को आपकी त्रुटि रिपोर्ट ढूंढ़ने की आवश्यकता हो, तो अपना इंस्टॉल आईडी साझा करें.</string>
|
||||
</resources>
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<string name="settings_monitor_mode_description">Milyen körülmények között figyeli ez az alkalmazás a Bluetooth-adatokat.</string>
|
||||
<string name="settings_scanner_mode_label">Szkenner mód</string>
|
||||
<string name="settings_autopause_label">Automatikus megszakítás</string>
|
||||
<string name="settings_autopause_description">Zene leállítása amikor kiveszed a füledből a fülest.</string>
|
||||
<string name="settings_showall_label">Az összes eszköz megjelenítése</string>
|
||||
<string name="settings_showall_description">Mutassa meg másoknak az Ön közelében lévő eszközeit.</string>
|
||||
<string name="settings_autopplay_label">Automatikus lejátszás</string>
|
||||
@@ -28,15 +29,17 @@
|
||||
<string name="settings_reaction_label">Reakciók</string>
|
||||
<string name="settings_reaction_description">Reagáljon az eseményekre és viselkedésekre.</string>
|
||||
<string name="settings_category_yourdevice_label">A Te eszközöd</string>
|
||||
<string name="settings_category_compatibility_options_title">Kompatibilitási opciók</string>
|
||||
<string name="settings_category_compatibility_options_description">Ehhez a cucchoz ne nyúlj ha minden jól műkődik ;)</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Ne hagyja, hogy a rendszer csoportosítsa az összegyűjtött BLE-adatokat, mielőtt továbbítja azokat nekünk.</string>
|
||||
<string name="settings_maindevice_address_label">A készüléked címe</string>
|
||||
<string name="settings_maindevice_address_description">A párosított eszköz címe. Az alkalmazás ezt használja annak meghatározására, hogy mikor csatlakozik a telefonhoz.</string>
|
||||
<string name="settings_maindevice_address_none">Semmi</string>
|
||||
<string name="settings_maindevice_model_label">Az Ön készülékének modellje</string>
|
||||
<string name="settings_maindevice_model_description">A fő eszköz modellje. Ez segít az alkalmazásnak felismerni az eszközt, amikor az nincs csatlakoztatva a telefonhoz.</string>
|
||||
<string name="settings_popup_caseopen_label">Előugró ablak megjelenítése</string>
|
||||
<string name="settings_popup_caseopen_description">Egy előugró ablak megjelenítése az eszköz házának kinyitásakor (kísérleti).</string>
|
||||
<string name="settings_onepod_mode_label">Egy fülhallgató mód</string>
|
||||
<string name="settings_onepod_mode_description">Nem szükséges mindkét fülhallgató viselése, elég egy, a működéshez.</string>
|
||||
<string name="settings_popup_caseopen_description">Egy előugró ablak megjelenítése az eszköz házának kinyitásakor (kísérleti).</string>
|
||||
<string name="notification_channel_device_status_label">Értesítési_állapot</string>
|
||||
<string name="debug_debuglog_size_label">Méret</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Tömörített_méret</string>
|
||||
@@ -66,6 +69,18 @@
|
||||
<string name="settings_debug_mode_description">További információk megjelenítése a problémák hibaelhárításához.</string>
|
||||
<string name="settings_blescanner_unfiltered_label">Szűretlen BLE adatok</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Távolítson el minden szűrőt a BLE szkennerből, hogy megjelenjen az összes adat. Hasznos új fejhallgató típusok támogatásához.</string>
|
||||
<string name="settings_compatibility_mode_label">Kompatibilitási mód</string>
|
||||
<string name="help_translate_label">Fordítás</string>
|
||||
<string name="help_translate_description">Segíts nekünk hogy az app le legyen fordítva a te nyelvedre is.</string>
|
||||
<string name="translators_thanks_title">Fordító</string>
|
||||
<string name="widget_description">A widget az utolsó ismert eszköz adatokat mutatja.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Közvetett adatszolgáltatás</string>
|
||||
<string name="troubleshooter_title">Hibaelhárító</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Hibaelhárítás indítása</string>
|
||||
<string name="troubleshooter_ble_process_title">Hibaelhárítás folyamatban</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Minden lépés 5-10 másodpercet vesz igénybe</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Sikeres</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Sikertelen</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Próbáld újra</string>
|
||||
<string name="troubleshoot_action">Hibaelhárító</string>
|
||||
</resources>
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<string name="general_upgrade_action">Tingkatkan</string>
|
||||
<string name="general_check_action">Memeriksa</string>
|
||||
<string name="general_close_action">Tutup</string>
|
||||
<string name="upgrade_capod_label">Perbaharui CAPod</string>
|
||||
<string name="upgrade_capod_description">Dapatkan fitur tambahan & bantu dukung pengembang.</string>
|
||||
<string name="settings_monitor_mode_label">Mode monitor</string>
|
||||
<string name="upgrade_capod_label">Perbarui CAPod</string>
|
||||
<string name="upgrade_capod_description">Dapatkan fitur tambahan dan dukung pengembang.</string>
|
||||
<string name="settings_monitor_mode_label">Modus pantau</string>
|
||||
<string name="settings_monitor_mode_description">Dalam keadaan apa aplikasi ini memonitor data Bluetooth.</string>
|
||||
<string name="settings_scanner_mode_label">Modus memindai</string>
|
||||
<string name="settings_scanner_mode_description">Haruskah pemindai data Bluetooth Hemat Energi memprioritaskan kinerja atau menghemat energi?</string>
|
||||
@@ -23,24 +23,29 @@
|
||||
<string name="settings_fake_data_description">Tampilkan data palsu, yaitu, mensimulasikan perangkat yang tidak ada.</string>
|
||||
<string name="settings_debug_label">Pengaturan debug</string>
|
||||
<string name="settings_debug_description">Pengaturan tambahan untuk membantu memecahkan masalah dengan aplikasi.</string>
|
||||
<string name="settings_signal_minimum_label">Kualitas sinyal minimum</string>
|
||||
<string name="settings_signal_minimum_description">Kualitas sinyal minimum yang harus dimiliki perangkat agar dianggap milik anda.</string>
|
||||
<string name="settings_signal_minimum_label">Minimal kualitas sinyal</string>
|
||||
<string name="settings_signal_minimum_description">Kualitas sinyal minimal yang diperlukan perangkat harus dipertimbangkan sebagai milik Anda.</string>
|
||||
<string name="settings_autoconnect_label">Sambung otomatis</string>
|
||||
<string name="settings_autoconnect_description">Jika Android tidak terhubung secara otomatis, kami juga dapat menanyakannya. Ini akan men-set pengaturan mode monitor ke \'Selalu\'.</string>
|
||||
<string name="settings_autoconnect_description">Jika Android tidak terhubung secara otomatis, kami juga dapat menanyakannya. Ini akan mengatur pengaturan modus monitor ke \'Selalu\'.</string>
|
||||
<string name="settings_autoconnect_condition_label">Kondisi koneksi otomatis</string>
|
||||
<string name="settings_autoconnect_condition_description">Kapan kami harus mencoba menyambung ke perangkat anda?</string>
|
||||
<string name="settings_reaction_label">Reaksi</string>
|
||||
<string name="settings_reaction_description">Bereaksi terhadap peristiwa dan kebiasaan.</string>
|
||||
<string name="settings_reaction_description">Bereaksi terhadap peristiwa dan perilaku.</string>
|
||||
<string name="settings_category_yourdevice_label">Perangkat anda</string>
|
||||
<string name="settings_category_compatibility_options_title">Opsi kompatibilitas</string>
|
||||
<string name="settings_category_compatibility_options_description">Jangan sentuh jika semuanya berfungsi ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Nonaktifkan pemfilteran perangkat keras</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Jangan mendelegasikan pemfilteran data ke sistem, alih-alih dapatkan semua data dan filter di dalam aplikasi.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Nonaktifkan pengelompokan perangkat keras</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Jangan biarkan grup sistem mengumpulkan data BLE sebelum meneruskannya kepada kami.</string>
|
||||
<string name="settings_maindevice_address_label">Alamat perangkat anda</string>
|
||||
<string name="settings_maindevice_address_description">Alamat perangkat anda yang telah terpasang. Aplikasi menggunakan ini untuk menentukan kapan terhubung ke ponsel anda.</string>
|
||||
<string name="settings_maindevice_address_none">Tidak ada</string>
|
||||
<string name="settings_maindevice_model_label">Model perangkat anda</string>
|
||||
<string name="settings_maindevice_model_description">Model perangkat utama anda. Ini membantu aplikasi mengenali perangkat anda saat tidak terhubung ke ponsel anda.</string>
|
||||
<string name="settings_popup_caseopen_label">Tampilkan popup</string>
|
||||
<string name="settings_popup_caseopen_description">Tampilkan popup saat kasing perangkat dibuka (eksperimental).</string>
|
||||
<string name="settings_onepod_mode_label">Mode satu pod</string>
|
||||
<string name="settings_onepod_mode_description">Menggunakan kedua pod tidak diperlukan, memakai satu pod sudah cukup untuk memicu reaksi.</string>
|
||||
<string name="settings_popup_caseopen_description">Tampilkan popup saat kasing perangkat dibuka (eksperimental).</string>
|
||||
<string name="notification_channel_device_status_label">Status perangkat</string>
|
||||
<string name="debug_debuglog_size_label">Ukuran</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Ukuran terkompresi</string>
|
||||
@@ -76,4 +81,20 @@
|
||||
<string name="help_translate_description">Bantu terjemahkan applikasi ini ke bahasa favorit anda.</string>
|
||||
<string name="translators_thanks_title">Penerjemah</string>
|
||||
<string name="translators_thanks_description">gelapkan</string>
|
||||
<string name="widget_description">Sebuah widget menampilkan terakhir status perangkat yang diketahui.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Pengiriman data tidak langsung</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Gunakan metode alternatif untuk menerima data BLE dari sistem (siarkan alih-alih panggilan balik).</string>
|
||||
<string name="troubleshooter_title">Pemecah masalah</string>
|
||||
<string name="troubleshooter_ble_intro_title">Siaran Bluetooth Hemat Energi</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPods (dan headphone serupa) menyiarkan informasi status menggunakan teknologi BLE yang disebut \"iklan\". Beberapa telepon tidak menerapkan teknologi ini dengan benar. CAPod dapat mencoba memperbaikinya dengan mencoba berbagai opsi kompatibilitas hingga data diterima. Mulai pemutaran musik di headphone Anda dan letakkan di dekat ponsel Anda, lalu mulai prosesnya.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Mulai pemecahan masalah</string>
|
||||
<string name="troubleshooter_ble_process_title">Pemecahan masalah sedang berlangsung</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Setiap langkah membutuhkan waktu 5–10 detik</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Sukses</string>
|
||||
<string name="troubleshooter_ble_result_success_body">Siaran iklan BLE diterima oleh CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Gagal</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Pemecahan masalah gagal. Tidak ada kombinasi opsi kompatibilitas yang membantu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telepon anda menerima data BLE, tetapi data tersebut tidak berasal dari perangkat yang didukung. Apakah headphone Anda dihidupkan? Apakah CAPod mendukung headphone Anda?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Coba lagi</string>
|
||||
<string name="troubleshoot_action">Memecahkan masalah</string>
|
||||
</resources>
|
||||
|
||||
@@ -32,15 +32,17 @@
|
||||
<string name="settings_reaction_label">Reazioni</string>
|
||||
<string name="settings_reaction_description">Reazione ad eventi o comportamenti.</string>
|
||||
<string name="settings_category_yourdevice_label">Il tuo dispositivo</string>
|
||||
<string name="settings_category_compatibility_options_title">Opzioni di compatibilità</string>
|
||||
<string name="settings_category_compatibility_options_description">Non toccare se funziona tutto ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Disabilita il filtro hardware</string>
|
||||
<string name="settings_maindevice_address_label">L\'indirizzo del tuo dispositivo</string>
|
||||
<string name="settings_maindevice_address_description">L\'indirizzo del dispositivo connesso. L\'applicazione usa questo per determinare quando il tuo dispositivo è connesso al telefono.</string>
|
||||
<string name="settings_maindevice_address_none">Niente</string>
|
||||
<string name="settings_maindevice_model_label">Il modello del tuo dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">Il modello del tuo dispositivo principale. Questo aiuta la applicazione a riconoscere il tuo dispositivo quando non è connesso al tuo telefono.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostra popup</string>
|
||||
<string name="settings_popup_caseopen_description">Mostra un popup quando la custodia del dispositivo è aperta (sperimentale).</string>
|
||||
<string name="settings_onepod_mode_label">Modalità singolo pod</string>
|
||||
<string name="settings_onepod_mode_description">Indossare entrambi i pod non è necessario, indossare un singolo pod è sufficiente per far funzionare le reazioni.</string>
|
||||
<string name="settings_popup_caseopen_description">Mostra un popup quando la custodia del dispositivo è aperta (sperimentale).</string>
|
||||
<string name="notification_channel_device_status_label">Stato dispositivo</string>
|
||||
<string name="debug_debuglog_size_label">Dimensione</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Dimensione compressa</string>
|
||||
@@ -76,4 +78,10 @@
|
||||
<string name="help_translate_description">Aiuta a tradurre l\'applicazione nella tua lingua preferita.</string>
|
||||
<string name="translators_thanks_title">Traduttori</string>
|
||||
<string name="translators_thanks_description">darken</string>
|
||||
<string name="troubleshooter_title">Risoluzione dei problemi</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Avvia la risoluzione dei problemi</string>
|
||||
<string name="troubleshooter_ble_process_title">Risoluzione dei problemi in corso</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Ogni passaggio richiede 5-10 secondi</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Riprova</string>
|
||||
<string name="troubleshoot_action">Risoluzione dei problemi</string>
|
||||
</resources>
|
||||
|
||||
@@ -32,15 +32,20 @@
|
||||
<string name="settings_reaction_label">תגובות</string>
|
||||
<string name="settings_reaction_description">להגיב לאירועים והתנהגויות.</string>
|
||||
<string name="settings_category_yourdevice_label">המכשיר שלך</string>
|
||||
<string name="settings_category_compatibility_options_title">מצב תאימות</string>
|
||||
<string name="settings_category_compatibility_options_description">אל תיגע אם הכל עובד ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">ביטול סינון בחומרה</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">אל תאציל סינון נתונים למערכת, במקום זאת קבל את כל הנתונים וסנן בתוך האפליקציה.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">ביטול אצוות חומרה</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">אל תאפשר לקבוצת המערכת אסיפת נתוני BLE לפני שתעביר אותם אלינו.</string>
|
||||
<string name="settings_maindevice_address_label">כתובת המכשיר שלך</string>
|
||||
<string name="settings_maindevice_address_description">הכתובת של המכשיר המחובר שלך. האפליקציה משתמשת בזה כדי לקבוע מתי היא מחוברת לטלפון שלך.</string>
|
||||
<string name="settings_maindevice_address_none">אף אחד</string>
|
||||
<string name="settings_maindevice_model_label">דגם המכשיר שלך</string>
|
||||
<string name="settings_maindevice_model_description">הדגם של המכשיר הראשי שלך. זה עוזר לאפליקציה לזהות את המכשיר שלך כשהוא לא מחובר לטלפון שלך.</string>
|
||||
<string name="settings_popup_caseopen_label">הצג הודעה</string>
|
||||
<string name="settings_popup_caseopen_description">הצג חלון הודעה כאשר מארז המכשיר נפתח (ניסיוני).</string>
|
||||
<string name="settings_onepod_mode_label">מצב אוזניה בודדת</string>
|
||||
<string name="settings_onepod_mode_description">אין צורך לענוד את שני האוזניות, לבישת אוזניה בודדת מספיקה כדי לעורר תגובות.</string>
|
||||
<string name="settings_popup_caseopen_description">הצג חלון הודעה כאשר מארז המכשיר נפתח (ניסיוני).</string>
|
||||
<string name="notification_channel_device_status_label">מצב המכשיר</string>
|
||||
<string name="debug_debuglog_size_label">מידה</string>
|
||||
<string name="debug_debuglog_size_compressed_label">גודל דחיסה</string>
|
||||
@@ -53,6 +58,7 @@
|
||||
<string name="settings_support_description">אם אתה צריך קצת עזרה.</string>
|
||||
<string name="issue_tracker_label">מאתר בעיות</string>
|
||||
<string name="issue_tracker_description">מעקב אחר בעיות ציבוריות לדיווחי באגים ובקשות לתכונות (באנגלית בלבד).</string>
|
||||
<string name="discord_label">דיסקורד</string>
|
||||
<string name="discord_description">מקום לבלות בו ולשאול שאלות.</string>
|
||||
<string name="changelog_label">יומן שינויים</string>
|
||||
<string name="settings_label">הגדרות</string>
|
||||
@@ -75,4 +81,20 @@
|
||||
<string name="help_translate_description">עזרו בתרגום אפליקציה זו לשפה המועדפת עליכם.</string>
|
||||
<string name="translators_thanks_title">מתרגמים</string>
|
||||
<string name="translators_thanks_description">AL_Cool_T</string>
|
||||
<string name="widget_description">ווידג\'ט המציג את מצב האחרון הידוע של המכשיר.</string>
|
||||
<string name="settings_compat_indirectcallback_title">העברה עקיפה של הנתונים</string>
|
||||
<string name="settings_compat_indirectcallback_summary">השתמש בשיטה חלופית כדי לקבל נתוני BLE מהמערכת (שידור במקום התקשרות חוזרת).</string>
|
||||
<string name="troubleshooter_title">פותר בעיות</string>
|
||||
<string name="troubleshooter_ble_intro_title">שידורי Bluetooth באנרגיה נמוכה</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPods (ואוזניות דומות) משדרות מידע באמצעות טכנולוגיית BLE הנקראת \"פרסומות\". טלפונים מסוימים אינם מיישמים את הטכנולוגיה הזו כהלכה. CAPod יכול לנסות לתקן זאת על ידי אפשרויות תאימות שונות עד לקבלת נתונים. התחל את השמעת מוזיקה באוזניות שלך והנח אותן קרוב לטלפון שלך, ולאחר מכן התחל את התהליך.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">התחל בפתרון בעיות</string>
|
||||
<string name="troubleshooter_ble_process_title">מתבצע פתרון בעיות</string>
|
||||
<string name="troubleshooter_ble_process_subtile">כל שלב לוקח 5-10 שניות</string>
|
||||
<string name="troubleshooter_ble_result_success_title">הצלחה</string>
|
||||
<string name="troubleshooter_ble_result_success_body">שידורי פרסומת BLE מתקבלים על ידי CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">לא מוצלח</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">פתרון הבעיות נכשל. שום שילוב של אפשרויות תאימות לא עזר.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">טלפון שלך קיבל נתוני BLE, אך הנתונים אינם מגיעים ממכשיר אשר נתמך. האם האוזניות שלך מופעלות? האם CAPod תומך באוזניות שלך?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">נסה שנית</string>
|
||||
<string name="troubleshoot_action">פתרון בעיות</string>
|
||||
</resources>
|
||||
|
||||
@@ -32,15 +32,18 @@
|
||||
<string name="settings_reaction_label">アクション</string>
|
||||
<string name="settings_reaction_description">イベントや行動に対して機能が動作します</string>
|
||||
<string name="settings_category_yourdevice_label">あなたのデバイス</string>
|
||||
<string name="settings_category_compatibility_options_title">互換性のオプション</string>
|
||||
<string name="settings_category_compatibility_options_description">正常に動く場合は触らないでください。 ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">ハードウェアフィルタリングを無効にする</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">データフィルタリングをシステムに任せません。アプリ内ですべてのデータとフィルターを取得します。</string>
|
||||
<string name="settings_maindevice_address_label">あなたのデバイスのアドレス</string>
|
||||
<string name="settings_maindevice_address_description">ペアリングされたデバイスのアドレス。 アプリはこれを使って、携帯電話にいつ接続されたかを判断します。</string>
|
||||
<string name="settings_maindevice_address_none">無し</string>
|
||||
<string name="settings_maindevice_model_label">あなたのデバイスのモデル</string>
|
||||
<string name="settings_maindevice_model_description">あなたが主に使うデバイスのモデルです。これにより、デバイスが機器に接続されていないときに、アプリがデバイスを認識しやすくなります。</string>
|
||||
<string name="settings_popup_caseopen_label">ポップアップ表示</string>
|
||||
<string name="settings_popup_caseopen_description">デバイスのケースが開いたときにポップアップを表示します (実験的)。</string>
|
||||
<string name="settings_onepod_mode_label">片耳モード</string>
|
||||
<string name="settings_onepod_mode_description">両方装着する必要はなく、1つだけを装着することで反応します。</string>
|
||||
<string name="settings_popup_caseopen_description">デバイスのケースが開いたときにポップアップを表示します (実験的)。</string>
|
||||
<string name="notification_channel_device_status_label">デバイスの状態</string>
|
||||
<string name="debug_debuglog_size_label">サイズ</string>
|
||||
<string name="debug_debuglog_size_compressed_label">圧縮サイズ</string>
|
||||
|
||||
@@ -37,10 +37,9 @@
|
||||
<string name="settings_maindevice_address_none">없음</string>
|
||||
<string name="settings_maindevice_model_label">내 기기 모델</string>
|
||||
<string name="settings_maindevice_model_description">사용하고 있는 기기의 모델입니다. 전화기에 기기가 연결되지 않았을 때 기기를 찾는 데 도움을 줍니다.</string>
|
||||
<string name="settings_popup_caseopen_label">팝업 보이기</string>
|
||||
<string name="settings_popup_caseopen_description">기기 케이스가 열렸을 때 팝업을 보여줍니다. (실험적)</string>
|
||||
<string name="settings_onepod_mode_label">한쪽 기기 모드</string>
|
||||
<string name="settings_onepod_mode_description">양쪽 기기를 모두 착용할 필요 없이, 앱에서 한 쪽만 있어도 반응하도록 합니다.</string>
|
||||
<string name="settings_popup_caseopen_description">기기 케이스가 열렸을 때 팝업을 보여줍니다. (실험적)</string>
|
||||
<string name="notification_channel_device_status_label">디바이스 상태</string>
|
||||
<string name="debug_debuglog_size_label">크기</string>
|
||||
<string name="debug_debuglog_size_compressed_label">압축된 크기</string>
|
||||
|
||||
@@ -43,10 +43,9 @@
|
||||
<string name="settings_maindevice_address_none">Tiada</string>
|
||||
<string name="settings_maindevice_model_label">Model peranti anda</string>
|
||||
<string name="settings_maindevice_model_description">Model peranti utama anda. Ini membantu apl mengenali peranti anda apabila ia tidak disambungkan ke telefon anda.</string>
|
||||
<string name="settings_popup_caseopen_label">Tunjukkan popup</string>
|
||||
<string name="settings_popup_caseopen_description">Tunjukkan popup apabila sarung peranti dibuka (percubaan).</string>
|
||||
<string name="settings_onepod_mode_label">Satu mod pod</string>
|
||||
<string name="settings_onepod_mode_description">Tidak perlu memakai kedua-dua pod, memakai satu pod sudah memadai untuk mencetuskan tindak balas.</string>
|
||||
<string name="settings_popup_caseopen_description">Tunjukkan popup apabila sarung peranti dibuka (percubaan).</string>
|
||||
<string name="notification_channel_device_status_label">Status peranti</string>
|
||||
<string name="debug_debuglog_size_label">Saiz</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Saiz termampat</string>
|
||||
@@ -95,7 +94,6 @@
|
||||
<string name="troubleshooter_ble_result_success_body">Siaran iklan BLE sedang diterima oleh CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Tidak berjaya</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Penyelesaian masalah gagal. Tiada gabungan pilihan keserasian dapat membantu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefon anda tidak menerima sebarang data BLE sama sekali. Anda boleh mencuba semula ujian ini di kawasan yang sesak untuk melihat sama ada sumber data (selain fon kepala anda) boleh diterima. Tiada data yang diterima menunjukkan masalah dengan sistem pengendalian telefon anda.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefon anda menerima data BLE, tetapi data itu tidak datang daripada mana-mana peranti yang disokong. Adakah fon kepala anda dihidupkan? Adakah CAPod menyokong fon kepala anda?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Cuba semula</string>
|
||||
<string name="troubleshoot_action">Selesaikan masalah</string>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<resources>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<style name="AppTheme" parent="Theme.Material3.Dark.NoActionBar">
|
||||
<item name="colorPrimary">@color/md_theme_dark_primary</item>
|
||||
@@ -27,6 +27,9 @@
|
||||
<item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
|
||||
<item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
|
||||
<item name="colorPrimaryInverse">@color/md_theme_dark_primaryInverse</item>
|
||||
|
||||
<item tools:targetApi="29" name="android:enforceNavigationBarContrast">true</item>
|
||||
<item tools:targetApi="29" name="android:navigationBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
@@ -37,15 +37,15 @@
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Hardware filtering uitzetten</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Data filtering niet aan het systeem toevertrouwen, in plaats daarvan alle data in de app ontvangen en filteren.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Hardware batching uitzetten</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Laat de systeemgroep geen BLE-gegevens verzamelen voordat deze naar ons wordt doorgestuurd.</string>
|
||||
<string name="settings_maindevice_address_label">Uw apparaatadres</string>
|
||||
<string name="settings_maindevice_address_description">Het adres van uw gekoppelde apparaat. De app gebruikt dit om te bepalen wanneer deze is verbonden met uw telefoon.</string>
|
||||
<string name="settings_maindevice_address_none">Geen</string>
|
||||
<string name="settings_maindevice_model_label">Uw apparaatmodel</string>
|
||||
<string name="settings_maindevice_model_description">Het model van uw hoofdapparaat. Dit helpt de app uw apparaat te herkennen wanneer het niet is verbonden met uw telefoon.</string>
|
||||
<string name="settings_popup_caseopen_label">Pop-up weergeven</string>
|
||||
<string name="settings_popup_caseopen_description">Een pop-up weergeven wanneer de behuizing van het apparaat wordt geopend (experimenteel).</string>
|
||||
<string name="settings_onepod_mode_label">Eén pod-modus</string>
|
||||
<string name="settings_onepod_mode_description">Het dragen van beide pods is niet vereist, het dragen van een enkele pod is voldoende om reacties uit te lokken.</string>
|
||||
<string name="settings_popup_caseopen_description">Een pop-up weergeven wanneer de behuizing van het apparaat wordt geopend (experimenteel).</string>
|
||||
<string name="notification_channel_device_status_label">Apparaatstatus</string>
|
||||
<string name="debug_debuglog_size_label">Grootte</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Gecomprimeerde grootte</string>
|
||||
@@ -85,4 +85,16 @@
|
||||
<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>
|
||||
<string name="troubleshooter_ble_intro_title">Bluetooth Low Energy-uitzendingen</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPods (en vergelijkbare hoofdtelefoons) zenden statusinformatie uit met behulp van een BLE-technologie die \"advertenties\" wordt genoemd. Sommige telefoons implementeren deze technologie niet correct. CAPod kan dit proberen op te lossen door verschillende compatibiliteitsopties uit te proberen totdat er gegevens zijn ontvangen. Start het afspelen van muziek op uw hoofdtelefoon en plaats deze dicht bij uw telefoon en start het proces.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Begin met probleemoplossing</string>
|
||||
<string name="troubleshooter_ble_process_title">Probleemoplossing wordt uitgevoerd</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Elke stap duurt 5-10 seconden</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Gelukt</string>
|
||||
<string name="troubleshooter_ble_result_success_body">BLE-advertentie-uitzendingen worden door CAPod ontvangen.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Mislukt</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Problemen oplossen mislukt. Geen enkele combinatie van compatibiliteitsopties heeft geholpen.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Je telefoon heeft BLE-gegevens ontvangen, maar de gegevens zijn niet afkomstig van een ondersteund apparaat. Staat je koptelefoon aan? Ondersteunt CAPod je koptelefoon?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Probeer opnieuw</string>
|
||||
<string name="troubleshoot_action">Problemen oplossen</string>
|
||||
</resources>
|
||||
|
||||
@@ -43,10 +43,9 @@
|
||||
<string name="settings_maindevice_address_none">Ingen</string>
|
||||
<string name="settings_maindevice_model_label">Enhetens modell</string>
|
||||
<string name="settings_maindevice_model_description">Modellen til hovedenheten din. Dette hjelper appen med å gjenkjenne enheten din når den ikke er koblet til telefonen.</string>
|
||||
<string name="settings_popup_caseopen_label">Vis popup</string>
|
||||
<string name="settings_popup_caseopen_description">Vis en popup når enhetens deksel åpnes (eksperimentelt).</string>
|
||||
<string name="settings_onepod_mode_label">En pod modus</string>
|
||||
<string name="settings_onepod_mode_description">Du trenger kun ha på deg en pod for å utløse reaksjoner, i stedet for begge.</string>
|
||||
<string name="settings_popup_caseopen_description">Vis en popup når enhetens deksel åpnes (eksperimentelt).</string>
|
||||
<string name="notification_channel_device_status_label">Enhetsstatus</string>
|
||||
<string name="debug_debuglog_size_label">Størrelse</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Komprimert størrelse</string>
|
||||
@@ -95,7 +94,6 @@
|
||||
<string name="troubleshooter_ble_result_success_body">BLE advertisement kringkastinger blir mottatt av CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Mislykket</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Feilsøking mislyktes. Ingen kombinasjoner av kompatibilitets-alternativer fungerte.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefonen din mottok ingen BLE-data i det hele tatt. Du kan prøve denne testen på nytt i et folksomt område for å se om datakilder (annet enn hodetelefonene dine) kan mottas. Ingen data mottatt peker mot et problem med telefonens operativsystem.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefonen din mottok BLE-data, men dataene kommer ikke fra en støttet enhet. Er hodetelefonene dine slått på? Støtter CAPod din type hodetelefoner?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Prøv igjen</string>
|
||||
<string name="troubleshoot_action">Feilsøk</string>
|
||||
|
||||
@@ -36,16 +36,16 @@
|
||||
<string name="settings_category_compatibility_options_description">Nie dotykaj, jeżeli wszystko działa ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Wyłącz sprzętowe filtrowanie</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Nie używaj systemu do filtrowania danych, zamiast tego pobieraj wszystkie dane i filtruj w aplikacji.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Nie pozwól, aby grupa systemowa zebrała dane BLE przed przekazaniem ich do nas.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Wyłącz sprzętowe zbieranie danych</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Nie pozwól, aby system zgrupował zebrane dane BLE przed przekazaniem ich do CAPod.</string>
|
||||
<string name="settings_maindevice_address_label">Adres twojego urządzenia</string>
|
||||
<string name="settings_maindevice_address_description">Adres twojego sparowanego urządzenia. Aplikacja korzysta z niego, aby ustalić czy jest połączone z twoim telefonem.</string>
|
||||
<string name="settings_maindevice_address_none">Brak</string>
|
||||
<string name="settings_maindevice_model_label">Model twojego urządzenia</string>
|
||||
<string name="settings_maindevice_model_description">Model twojego głównego urządzenia. Pomaga aplikacji rozpoznać twoje urządzenie, gdy nie jest połączone z telefonem.</string>
|
||||
<string name="settings_popup_caseopen_label">Wyświetlanie informacji</string>
|
||||
<string name="settings_popup_caseopen_description">Wyświetla informację, gdy obudowa urządzenia jest otwarta (eksperymentalnie).</string>
|
||||
<string name="settings_onepod_mode_label">Tryb jednego pod\'a</string>
|
||||
<string name="settings_onepod_mode_description">Noszenie obu pod\'ów nie jest wymagane. Wystarczy jeden, aby aktywować reakcje.</string>
|
||||
<string name="settings_popup_caseopen_description">Wyświetla informację, gdy obudowa urządzenia jest otwarta (eksperymentalnie).</string>
|
||||
<string name="notification_channel_device_status_label">Status urządzenia</string>
|
||||
<string name="debug_debuglog_size_label">Rozmiar</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Rozmiar skompresowanego</string>
|
||||
@@ -83,9 +83,10 @@
|
||||
<string name="translators_thanks_description">darken; K4r0lSz;</string>
|
||||
<string name="widget_description">Widżet pokazujący ostatni znany stan urządzenia.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Pośrednie dostarczanie danych</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Użyj alternatywnej metody odbierania danych BLE z systemu (transmisja zamiast oddzwaniania).</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Użyj alternatywnej metody odbierania danych BLE z systemu (transmisja zamiast połączenia zwrotnego).</string>
|
||||
<string name="troubleshooter_title">Rozwiązywanie problemów</string>
|
||||
<string name="troubleshooter_ble_intro_title">Transmisja Bluetooth Low Energy</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPods (i podobne słuchawki) transmitują informacje o stanie za pomocą technologii BLE zwanej „reklamami”. Niektóre telefony nie obsługują tej technologii poprawnie. CAPod może spróbować to naprawić, wypróbowując różne opcje zgodności, dopóki dane nie zostaną odebrane. Rozpocznij odtwarzanie muzyki na słuchawkach i umieść je blisko telefonu, a następnie rozpocznij proces.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Rozpocznij rozwiązywanie problemów</string>
|
||||
<string name="troubleshooter_ble_process_title">Rozwiązywanie problemów w toku</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Każdy etap zajmuje 5–10 sekund</string>
|
||||
@@ -93,6 +94,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">Audycje reklamowe BLE są odbierane przez CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Niepowodzenie</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Rozwiązywanie problemów nie powiodło się. Nie pomogła żadna kombinacja opcji kompatybilności.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Twój telefon odebrał dane BLE, jednak nie pochodzą one od obsługiwanego urządzenia. Czy twoje słuchawki są włączone? Czy CAPod obsługuje twoje słuchawki?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Spróbuj ponownie</string>
|
||||
<string name="troubleshoot_action">Rozwiązywanie problemów</string>
|
||||
</resources>
|
||||
|
||||
@@ -43,10 +43,9 @@
|
||||
<string name="settings_maindevice_address_none">Nenhum</string>
|
||||
<string name="settings_maindevice_model_label">Modelo do seu dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">O modelo do seu dispositivo principal. Isso ajuda o aplicativo a reconhecer seu dispositivo quando ele não está conectado ao seu telefone.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar pop-up</string>
|
||||
<string name="settings_popup_caseopen_description">Mostrar um pop-up quando o estojo do dispositivo for aberto (experimental).</string>
|
||||
<string name="settings_onepod_mode_label">Modo de um airpod</string>
|
||||
<string name="settings_onepod_mode_description">Não é necessário usar os dois airpods, usar um único airpod é suficiente para destravar reações.</string>
|
||||
<string name="settings_popup_caseopen_description">Mostrar um pop-up quando o estojo do dispositivo for aberto (experimental).</string>
|
||||
<string name="notification_channel_device_status_label">Status do dispositivo</string>
|
||||
<string name="debug_debuglog_size_label">Tamanho</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Tamanho compactado</string>
|
||||
@@ -95,7 +94,6 @@
|
||||
<string name="troubleshooter_ble_result_success_body">As transmissões de anúncios BLE estão sendo recebidas pelo CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Sem sucesso</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">A solução de problemas falhou. Nenhuma combinação de opções de compatibilidade ajudou.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Seu telefone não recebeu nenhum dado BLE. Você pode repetir este teste em uma área lotada para ver se as fontes de dados (além dos fones de ouvido) podem ser recebidas. Nenhum dado recebido aponta para um problema com o sistema operacional do seu telefone.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Seu telefone recebeu dados BLE, mas os dados não vêm de nenhum dispositivo compatível. Seus fones de ouvido estão ligados? O CAPod suporta seu fone de ouvido?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Tentar novamente</string>
|
||||
<string name="troubleshoot_action">Solucionar problemas</string>
|
||||
|
||||
@@ -32,15 +32,20 @@
|
||||
<string name="settings_reaction_label">Reações</string>
|
||||
<string name="settings_reaction_description">Reagir a eventos e comportamentos.</string>
|
||||
<string name="settings_category_yourdevice_label">O seu dispositivo</string>
|
||||
<string name="settings_category_compatibility_options_title">Opções de compatibilidade</string>
|
||||
<string name="settings_category_compatibility_options_description">Não altere se tudo funciona bem ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Desativar filtragem de hardware</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Não deixar o sistema filtrar os dados, em vez disso obter todos os dados e filtrar na aplicação.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Desativar lotes de hardware</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Não deixar o sistema agrupar dados BLE antes de reencaminhar para nós.</string>
|
||||
<string name="settings_maindevice_address_label">Endereço do seu dispositivo</string>
|
||||
<string name="settings_maindevice_address_description">O endereço do seu dispositivo emparelhado. A aplicação utiliza isto para determinar quando é que está conectado ao seu telemóvel.</string>
|
||||
<string name="settings_maindevice_address_none">Nenhum</string>
|
||||
<string name="settings_maindevice_model_label">Modelo do seu dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">O modelo do seu dispositivo principal. Isto ajuda a aplicação a reconhecer o seu dispositivo quando não está conectado ao seu telemóvel.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar pop-up</string>
|
||||
<string name="settings_popup_caseopen_description">Mostrar pop-up quando a caixa do dispositivo está aberta (experimental).</string>
|
||||
<string name="settings_onepod_mode_label">Modo de um pod</string>
|
||||
<string name="settings_onepod_mode_description">Usar os dois pods não é necessário, usar um único pod é suficiente para desencadear reações.</string>
|
||||
<string name="settings_popup_caseopen_description">Mostrar pop-up quando a caixa do dispositivo está aberta (experimental).</string>
|
||||
<string name="notification_channel_device_status_label">Estado do dispositivo</string>
|
||||
<string name="debug_debuglog_size_label">Tamanho</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Tamanho comprimido</string>
|
||||
@@ -69,11 +74,27 @@
|
||||
<string name="settings_debug_mode_label">Modo de debug</string>
|
||||
<string name="settings_debug_mode_description">Mostrar informações adicionais para resolver problemas.</string>
|
||||
<string name="settings_blescanner_unfiltered_label">Dados BLE sem filtro</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Remova qualquer filtro do scanner BLE para mostrar todos os dados BLE transmitidos. Útil para adicionar suporte para novos headphones.</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Remova qualquer filtro do digitalizador BLE para mostrar todos os dados BLE transmitidos. Útil para adicionar suporte para novos auscultadores.</string>
|
||||
<string name="settings_compatibility_mode_label">Modo de compatibilidade</string>
|
||||
<string name="settings_compatibility_mode_description">Desative as otimizações para melhorar a compatibilidade. Tente isso se não estiver a ver nenhum dado.</string>
|
||||
<string name="help_translate_label">Tradução</string>
|
||||
<string name="help_translate_description">Ajude a traduzir esta aplicação para o seu idioma favorito.</string>
|
||||
<string name="translators_thanks_title">Tradutores</string>
|
||||
<string name="translators_thanks_description">darken</string>
|
||||
<string name="widget_description">Um widget que apresenta o último estado conhecido do dispositivo.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Entrega de dados indireta</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Utilizar um método alternativo de receber dados BLE do sistema (transmissão em vez de retorno de chamada).</string>
|
||||
<string name="troubleshooter_title">Solucionador de problemas</string>
|
||||
<string name="troubleshooter_ble_intro_title">Transmissões de \'Bluetooth Low Energy\'</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPods (e auscultadores semelhantes) transmitem informações de estado utilizando uma tecnologia BLE chamada \"anúncios\". Alguns telefones não implementam essa tecnologia corretamente. O CAPod pode tentar corrigir isso ao tentar diferentes opções de compatibilidade até que os dados sejam recebidos. Inicie a reprodução de música nos seus headphones e coloque-os perto do telefone e inicie o processo.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Iniciar resolução de problemas</string>
|
||||
<string name="troubleshooter_ble_process_title">Resolução de problemas em progresso</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Cada passo demora 5 a 10 segundos</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Sucesso</string>
|
||||
<string name="troubleshooter_ble_result_success_body">As transmissões de anúncios BLE são recebidas pelo CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Sem sucesso</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">A resolução de problemas falhou. Nenhuma combinação de opções de compatibilidade funcionou.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">O seu telefone recebeu dados BLE, mas os dados não vêm de nenhum dispositivo compatível. Os seus auscultadores estão ligados? O CAPod é compatível com os seus auscultadores?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Tentar de novo</string>
|
||||
<string name="troubleshoot_action">Resolver problemas</string>
|
||||
</resources>
|
||||
|
||||
@@ -35,15 +35,17 @@
|
||||
<string name="settings_category_compatibility_options_title">Настройки совместимости</string>
|
||||
<string name="settings_category_compatibility_options_description">Не трогать, если всё работает :)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Отключить аппаратную фильтрацию</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Не делегировать фильтрация данных в систему, вместо этого получайте все данные и фильтр в приложение.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Отключить аппаратное пакетирование</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Не позволять системной группе собирать данные BLE до их пересылки нам.</string>
|
||||
<string name="settings_maindevice_address_label">Адрес Вашего устройства</string>
|
||||
<string name="settings_maindevice_address_description">Адрес Вашего сопряжённого устройства. Приложение использует его для определения подключения к Вашему телефону.</string>
|
||||
<string name="settings_maindevice_address_none">Нет</string>
|
||||
<string name="settings_maindevice_model_label">Модель Вашего устройства</string>
|
||||
<string name="settings_maindevice_model_description">Модель Вашего основного устройства. Это помогает приложению опознать Ваше устройство, когда оно не подключено к Вашему телефону.</string>
|
||||
<string name="settings_popup_caseopen_label">Всплывающие окна</string>
|
||||
<string name="settings_popup_caseopen_description">Показывать всплывающее окно, когда футляр открыт (эксперимент).</string>
|
||||
<string name="settings_onepod_mode_label">Режим одного наушника</string>
|
||||
<string name="settings_onepod_mode_description">Нет необходимости носить оба наушника, один наушник уже запускает реакции.</string>
|
||||
<string name="settings_popup_caseopen_description">Показывать всплывающее окно, когда футляр открыт (эксперимент).</string>
|
||||
<string name="notification_channel_device_status_label">Статус устройства</string>
|
||||
<string name="debug_debuglog_size_label">Размер</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Сжатый размер</string>
|
||||
@@ -80,4 +82,20 @@
|
||||
<string name="translators_thanks_title">Переводчики</string>
|
||||
<string name="translators_thanks_description">gaich
|
||||
AL_Cool_T</string>
|
||||
<string name="widget_description">Виджет показывающий последний известный статус устройства.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Косвенная доставка данных</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Использовать альтернативный метод для получения данных BLE системы (широковещательная рассылка вместо обратного вызова).</string>
|
||||
<string name="troubleshooter_title">Помощник</string>
|
||||
<string name="troubleshooter_ble_intro_title">Трансляции Bluetooth с низким энергопотреблением</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPods (и аналогичные наушники) передают информацию о состоянии с использованием технологию BLE, называемой «рекламой». Некоторые телефоны неправильно реализуют эту технологию. CAPod может попытаться исправить это, пробуя разные варианты совместимости, пока данные не будут получены. Запустите воспроизведение музыки в наушниках и поднесите их к телефону, затем запустите процесс.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Начать устранение неполадок</string>
|
||||
<string name="troubleshooter_ble_process_title">Выполняется устранение неполадок</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Каждый шаг занимает 5–10 секунд</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Успех</string>
|
||||
<string name="troubleshooter_ble_result_success_body">BLE рекламные трансляции принимаются на CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Неудачный</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Не удалось устранить неполадки. Ни одна комбинация параметров совместимости не помогала.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Ваш телефон получил BLE данные, но данные не поступают ни с одного поддерживаемого устройства. Ваши наушники включены? Поддерживает ли CAPod ваши наушники?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Попробуйте еще раз</string>
|
||||
<string name="troubleshoot_action">Устранение неполадок</string>
|
||||
</resources>
|
||||
|
||||
@@ -43,10 +43,9 @@
|
||||
<string name="settings_maindevice_address_none">Žiadna</string>
|
||||
<string name="settings_maindevice_model_label">Model vašeho zariadenia</string>
|
||||
<string name="settings_maindevice_model_description">Model vášho hlavného zariadenia. Pomáha to aplikácii rozpoznať vaše zariadenie, keď nie je pripojené k telefónu.</string>
|
||||
<string name="settings_popup_caseopen_label">Zobraziť kontextové okno</string>
|
||||
<string name="settings_popup_caseopen_description">Po otvorení puzdra zariadenia zobraziť kontextové okno (experimentálne).</string>
|
||||
<string name="settings_onepod_mode_label">Režim jedného slúchadla</string>
|
||||
<string name="settings_onepod_mode_description">Nosenie oboch slúchadiel nie je potrebné, na spustenie reakcií postačuje nosenie jedného slúchadla.</string>
|
||||
<string name="settings_popup_caseopen_description">Po otvorení puzdra zariadenia zobraziť kontextové okno (experimentálne).</string>
|
||||
<string name="notification_channel_device_status_label">Stav zariadenia</string>
|
||||
<string name="debug_debuglog_size_label">Veľkosť</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Komprimovaná veľkosť</string>
|
||||
@@ -95,7 +94,6 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod prijíma reklamné vysielanie BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Neúspešné</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Riešenie problémov zlyhalo. Nepomohla žiadna kombinácia možností kompatibility.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Váš telefón neprijal vôbec žiadne údaje BLE. Tento test môžete zopakovať v preplnenej oblasti a zistiť, či je možné prijímať zdroje údajov (iné ako vaše slúchadlá). Žiadne prijímané údaje neukazujú na problém s operačným systémom vášho telefónu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Váš telefón prijal údaje BLE, ale údaje nepochádzajú zo žiadneho podporovaného zariadenia. Máte zapnuté slúchadlá? Podporuje CAPod vaše slúchadlá?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Skúste znova</string>
|
||||
<string name="troubleshoot_action">Riešiť problém</string>
|
||||
|
||||
@@ -1,79 +1,100 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="general_share_action">Paylaş</string>
|
||||
<string name="general_done_action">Bitti</string>
|
||||
<string name="general_done_action">Tamam</string>
|
||||
<string name="general_copy_action">Kopyala</string>
|
||||
<string name="general_thank_you_label">Teşekkürler</string>
|
||||
<string name="general_upgrade_action">Güncelleme</string>
|
||||
<string name="general_thank_you_label">Katkı sağlayanlar.</string>
|
||||
<string name="general_upgrade_action">Güncelle</string>
|
||||
<string name="general_check_action">Kontrol et</string>
|
||||
<string name="general_close_action">Kapat</string>
|
||||
<string name="upgrade_capod_label">CAPod\'u Güncelle</string>
|
||||
<string name="upgrade_capod_description">Ek özellikler edinin ve geliştiriciyi destekleyin.</string>
|
||||
<string name="upgrade_capod_description">Ek özellikler edinir ve geliştiriciyi desteklersiniz.</string>
|
||||
<string name="settings_monitor_mode_label">İzleme modu</string>
|
||||
<string name="settings_monitor_mode_description">Bu uygulama hangi koşullar altında Bluetooth verilerini izler.</string>
|
||||
<string name="settings_monitor_mode_description">Uygulamanın hangi şartlar altında Bluetooth verilerini dinleyeceğine dair seçenekler.</string>
|
||||
<string name="settings_scanner_mode_label">Tarama modu</string>
|
||||
<string name="settings_scanner_mode_description">Bluetooth Düşük Enerjili veri tarayıcısı performansa öncelik vermeli mi yoksa enerji tasarrufu mu yapmalı?</string>
|
||||
<string name="settings_autopause_label">Otomatik duraklama</string>
|
||||
<string name="settings_autopause_description">Cihazı kulağınızdan çıkarırken sesi duraklatın.</string>
|
||||
<string name="settings_scanner_mode_description">Bluetooth Düşük Enerji veri tarayıcısının performansa mı yoksa enerji tasarrufuna mı öncelik vereceğine dair seçenekler.</string>
|
||||
<string name="settings_autopause_label">Otomatik duraklat</string>
|
||||
<string name="settings_autopause_description">Aygıtı kulağınızdan çıkarırken sesi duraklatır.</string>
|
||||
<string name="settings_showall_label">Tüm aygıtları göster</string>
|
||||
<string name="settings_showall_description">Yakınınızda bulunan diğer kişilerin cihazlarını gösterin.</string>
|
||||
<string name="settings_autopplay_label">Otomatik oynatma</string>
|
||||
<string name="settings_autoplay_description">Cihaz takıldığında ses çalmayı başlatın.</string>
|
||||
<string name="settings_fake_data_label">Sahte veriler</string>
|
||||
<string name="settings_fake_data_description">Sahte verileri göster, yani varolmayan cihazları simüle et.</string>
|
||||
<string name="settings_showall_description">Yakınınızdaki diğer kişilerin aygıtlarını gösterir.</string>
|
||||
<string name="settings_autopplay_label">Otomatik oynat</string>
|
||||
<string name="settings_autoplay_description">Aygıt takıldığında sesi oynatmaya başlar.</string>
|
||||
<string name="settings_fake_data_label">Sahte veri</string>
|
||||
<string name="settings_fake_data_description">Sahte veri gösterir ve örnek olarak var olmayan aygıtları taklit eder.</string>
|
||||
<string name="settings_debug_label">Hata ayıklama ayarları</string>
|
||||
<string name="settings_debug_description">Uygulamayla ilgili sorunları gidermeye yardımcı olacak ek ayarlar.</string>
|
||||
<string name="settings_signal_minimum_label">Minimum sinyal kalitesi</string>
|
||||
<string name="settings_signal_minimum_description">Bir cihazın sahip olması gereken minimum sinyal kalitesi size ait olarak kabul edilmelidir.</string>
|
||||
<string name="settings_autoconnect_label">Otomatik bağlantı</string>
|
||||
<string name="settings_autoconnect_description">Android otomatik olarak bağlanmazsa, biz de sorabiliriz. Bu, monitör modu ayarını \'Her zaman\' olarak ayarlayacaktır.</string>
|
||||
<string name="settings_autoconnect_condition_label">Otomatik bağlantı koşulu</string>
|
||||
<string name="settings_autoconnect_condition_description">Cihazınıza ne zaman bağlanmayı denemeliyiz?</string>
|
||||
<string name="settings_reaction_label">Reaksiyonlar</string>
|
||||
<string name="settings_reaction_description">Olaylara ve davranışlara tepki verin.</string>
|
||||
<string name="settings_category_yourdevice_label">Cihazınız</string>
|
||||
<string name="settings_maindevice_address_label">Cihaz adresiniz</string>
|
||||
<string name="settings_maindevice_address_description">Eşleştirilmiş cihazınızın adresi. Uygulama, telefonunuza ne zaman bağlanacağını belirlemek için bunu kullanır.</string>
|
||||
<string name="settings_signal_minimum_description">Bir aygıtın size ait olduğunun anlaşılması için sahip olması gereken minimum sinyal kalitesi.</string>
|
||||
<string name="settings_autoconnect_label">Otomatik bağlan</string>
|
||||
<string name="settings_autoconnect_description">Android otomatik olarak bağlanmazsa, bizde sorabiliriz. Monitör modu ayarı \'Her Zaman\' olarak ayarlanacaktır.</string>
|
||||
<string name="settings_autoconnect_condition_label">Otomatik bağlantı şartı</string>
|
||||
<string name="settings_autoconnect_condition_description">Aygıtınıza ne zaman bağlanmayı denemeliyiz?</string>
|
||||
<string name="settings_reaction_label">Tepkiler</string>
|
||||
<string name="settings_reaction_description">Olaylar ve etkileşimlere verilen tepkiler.</string>
|
||||
<string name="settings_category_yourdevice_label">Aygıtınız</string>
|
||||
<string name="settings_category_compatibility_options_title">Uyumluluk seçenekleri</string>
|
||||
<string name="settings_category_compatibility_options_description">Her şey çalışıyorsa lütfen dokunmayın ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Donanım filtrelemeyi kapat</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Veri filtrelemeyi sisteme devretmez, bunun yerine tüm verileri alır ve uygulama içinde filtreler.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Donanımsal toplu işlemeyi kapat</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Sistem grubunun BLE verilerini bize iletmeden toplamasına izin vermez.</string>
|
||||
<string name="settings_maindevice_address_label">Aygıt adresiniz</string>
|
||||
<string name="settings_maindevice_address_description">Eşleştirilmiş aygıtın adresi. Uygulama, telefonunuza ne zaman bağlandığını belirlemek için bunu kullanır.</string>
|
||||
<string name="settings_maindevice_address_none">Hiçbiri</string>
|
||||
<string name="settings_maindevice_model_label">Cihazınızın modeli</string>
|
||||
<string name="settings_maindevice_model_description">Ana cihazınızın modeli. Bu, telefonunuza bağlı olmadığında uygulamanın cihazınızı tanımasına yardımcı olur.</string>
|
||||
<string name="settings_popup_caseopen_label">Pop-up\'ı göster</string>
|
||||
<string name="settings_popup_caseopen_description">Cihaz kasası açıldığında bir açılır pencere göster (deneysel).</string>
|
||||
<string name="settings_onepod_mode_label">Tek bölme modu</string>
|
||||
<string name="settings_onepod_mode_description">Her iki bölmeyi de takmak gerekli değildir, tek bir pod takmak reaksiyonları tetiklemek için yeterlidir.</string>
|
||||
<string name="notification_channel_device_status_label">Cihaz durumu</string>
|
||||
<string name="settings_maindevice_model_label">Aygıt modeliniz</string>
|
||||
<string name="settings_maindevice_model_description">Ana aygıtın modeli. Bu, uygulamanın telefonunuza bağlı olmadığında aygıtınızı tanımasına yardımcı olur.</string>
|
||||
<string name="settings_onepod_mode_label">Tek kulaklık modu</string>
|
||||
<string name="settings_onepod_mode_description">Her iki kulaklığı da takmak gerekli değildir, tek bir kulaklık takmak eylemleri tetiklemek için yeterlidir.</string>
|
||||
<string name="settings_popup_caseopen_description">Şarj kutusu açıldığında açılır bir pencere gösterir (deneysel).</string>
|
||||
<string name="notification_channel_device_status_label">Aygıt durumu</string>
|
||||
<string name="debug_debuglog_size_label">Boyut</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Sıkıştırılmış boyut</string>
|
||||
<string name="debug_notification_channel_label">Hata ayıklama bildirimleri</string>
|
||||
<string name="debug_debuglog_file_label">Kaydedilen günlük dosyası</string>
|
||||
<string name="debug_debuglog_file_label">Kayıtlı günlük dosyası</string>
|
||||
<string name="debug_debuglog_record_action">Hata ayıklama günlüğünü kaydet</string>
|
||||
<string name="settings_support_installid_label">Yükleme Kimliği</string>
|
||||
<string name="settings_support_installid_desc">Otomatik hata raporları anonimdir. Geliştiricinin hata raporlarınızı bulması gerekiyorsa yükleme kimliğinizi paylaşın.</string>
|
||||
<string name="settings_support_installid_label">Kurulum Kimliği</string>
|
||||
<string name="settings_support_installid_desc">Otomatik hata raporları anonimdir. Geliştiricinin hata raporlarınızı bulması gerekiyorsa kurulum kimliğinizi paylaşabilirsiniz.</string>
|
||||
<string name="settings_support_label">Destek</string>
|
||||
<string name="settings_support_description">Yardıma ihtiyacın olursa.</string>
|
||||
<string name="issue_tracker_label">Sorun izleyicisi</string>
|
||||
<string name="issue_tracker_description">Hata raporları ve özellik istekleri için genel bir sorun izleyicisi (yalnızca İngilizce).</string>
|
||||
<string name="issue_tracker_label">Sorun izleyici</string>
|
||||
<string name="issue_tracker_description">Hata raporları ve yeni özellik talepleri için genel bir sorun izleyici (yalnızca İngilizce).</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
<string name="discord_description">Takılıp soru sormak için bir yer.</string>
|
||||
<string name="changelog_label">Değişiklik Günlüğü</string>
|
||||
<string name="discord_description">Takılmak ve soru sormak için bir yer.</string>
|
||||
<string name="changelog_label">Sürüm günlüğü</string>
|
||||
<string name="settings_label">Ayarlar</string>
|
||||
<string name="settings_privacy_policy_label">Gizlilik ilkesi</string>
|
||||
<string name="settings_privacy_policy_desc">Verileri sorumlu bir şekilde işle.</string>
|
||||
<string name="settings_licenses_label">Lisans</string>
|
||||
<string name="settings_privacy_policy_label">Gizlilik politikası</string>
|
||||
<string name="settings_privacy_policy_desc">Verileri sorumlu bir şekilde işler.</string>
|
||||
<string name="settings_licenses_label">Lisanslar</string>
|
||||
<string name="settings_category_other_label">Diğer</string>
|
||||
<string name="settings_general_label">Ayarlar</string>
|
||||
<string name="settings_general_description">Tüm uygulamayı etkileyen genel düzenlemeler.</string>
|
||||
<string name="settings_acknowledgements_label">Teşekkür</string>
|
||||
<string name="settings_general_description">Uygulamayı etkileyen genel ince ayarlar.</string>
|
||||
<string name="settings_acknowledgements_label">Teşekkürler</string>
|
||||
<string name="settings_debug_autoreports_label">Otomatik hata raporları</string>
|
||||
<string name="settings_debug_autoreports_description">Sorunları otomatik olarak bildirir, örneğin bir uygulama çökmesiyle ilgili ayrıntılar, böylece nasıl düzelteceğimi bulabilirim.</string>
|
||||
<string name="settings_debug_autoreports_description">Sorunları otomatik olarak bildirir, ör. uygulama çökmesiyle ilgili ayrıntılı bilgiler. Böylece nasıl düzelteceğimi bulabilirim.</string>
|
||||
<string name="settings_debug_mode_label">Hata ayıklama modu</string>
|
||||
<string name="settings_debug_mode_description">Sorunları gidermek için ek bilgiler gösterin.</string>
|
||||
<string name="settings_debug_mode_description">Sorunları gidermek için ek bilgileri gösterir.</string>
|
||||
<string name="settings_blescanner_unfiltered_label">Filtrelenmemiş BLE verileri</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Yayınlanan tüm BLE verilerini göstermek için BLE tarayıcısından tüm filtreleri kaldırın. Yeni kulaklık türlerine destek eklemek için kullanışlıdır.</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Yayınlanan tüm BLE verilerini göstermek için BLE tarayıcısından tüm filtreleri kaldırır. Yeni kulaklık türlerini desteklemek için kullanışlıdır.</string>
|
||||
<string name="settings_compatibility_mode_label">Uyumluluk modu</string>
|
||||
<string name="settings_compatibility_mode_description">Uyumluluğu artırmak için iyileştirmeleri devre dışı bırakın. Herhangi bir veri görmüyorsanız bunu deneyin.</string>
|
||||
<string name="help_translate_label">Tercüme</string>
|
||||
<string name="help_translate_description">Bu uygulamayı en sevdiğiniz dile çevirmeye yardımcı olun.</string>
|
||||
<string name="settings_compatibility_mode_description">Uyumluluğu iyileştirmek için optimizasyonları devre dışı bırakın. Herhangi bir veri görmüyorsanız bunu deneyin.</string>
|
||||
<string name="help_translate_label">Çeviri</string>
|
||||
<string name="help_translate_description">Uygulamayı favori dilinize tercüme etmeye yardımcı olun.</string>
|
||||
<string name="translators_thanks_title">Çevirmenler</string>
|
||||
<string name="translators_thanks_description">karanlık</string>
|
||||
<string name="translators_thanks_description">darken</string>
|
||||
<string name="widget_description">Bilinen son cihaz durumunu gösteren bir pencere öğesi (widget).</string>
|
||||
<string name="settings_compat_indirectcallback_title">Dolaylı veri teslimi</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Sistemden BLE verilerini almak için alternatif bir yöntem kullanır (geri arama yerine yayın yapar).</string>
|
||||
<string name="troubleshooter_title">Sorun giderici</string>
|
||||
<string name="troubleshooter_ble_intro_title">Bluetooth Düşük Enerji Yayınları</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPod\'lar (ve benzeri kulaklıklar), durum bilgilerini \"reklamlar\" adı verilen bir BLE teknolojisi kullanarak yayınlar. Bazı telefonlar bu teknolojiyi doğru uygulamamaktadır. CAPod, veriler alınana kadar farklı uyumluluk seçeneklerini deneyerek bunu düzeltmeye çalışabilir. Kulaklığınızda müzik çalmaya başlayın ve kulaklıkları telefonunuzun yakınına yerleştirin, ardından işleme başlayın.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Sorun gidericiyi başlat</string>
|
||||
<string name="troubleshooter_ble_process_title">Sorun giderme devam ediyor</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Her adım 5-10 saniye sürer</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Başarılı</string>
|
||||
<string name="troubleshooter_ble_result_success_body">BLE reklam yayınları CAPod tarafından alınmaktadır.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Başarısız</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Sorun giderme başarısız oldu. Uyumluluk seçeneklerinin hiçbir kombinasyonu yardımcı olmadı.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefonunuz BLE verilerini aldı, ancak veriler desteklenen herhangi bir aygıttan gelmiyor. Kulaklığınız açık mı? CAPod kulaklığınızı destekliyor mu?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Tekrar deneyin</string>
|
||||
<string name="troubleshoot_action">Sorun giderme</string>
|
||||
</resources>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<string name="general_thank_you_label">Дякуємо</string>
|
||||
<string name="general_upgrade_action">Оновити</string>
|
||||
<string name="general_check_action">Перевірити</string>
|
||||
<string name="general_close_action">Зачинити</string>
|
||||
<string name="general_close_action">Закрити</string>
|
||||
<string name="upgrade_capod_label">Оновити CAPod</string>
|
||||
<string name="upgrade_capod_description">Отримайте додаткові функції та підтримайте розробника.</string>
|
||||
<string name="settings_monitor_mode_label">Режим відстеження</string>
|
||||
@@ -16,41 +16,85 @@
|
||||
<string name="settings_autopause_label">Автопауза</string>
|
||||
<string name="settings_autopause_description">Зупинка відтворення аудіо, коли навушник прибрано з Вашого вуха.</string>
|
||||
<string name="settings_showall_label">Показувати усі пристрої</string>
|
||||
<string name="settings_showall_description">Відображення пристроїв інших людей побизу Вас.</string>
|
||||
<string name="settings_showall_description">Показ пристроїв інших людей поблизу Вас.</string>
|
||||
<string name="settings_autopplay_label">Автовідтворення</string>
|
||||
<string name="settings_autoplay_description">Почати відтворення коли ви одягли навушники.</string>
|
||||
<string name="settings_fake_data_label">Підроблені дані</string>
|
||||
<string name="settings_fake_data_description">Показувати підроблені дані, коли, наприклад, імітуються пристрої яких не існує.</string>
|
||||
<string name="settings_debug_label">Налаштування налагодження</string>
|
||||
<string name="settings_debug_description">Додаткові налаштування для допомоги у розвʼязанні проблем з додатком.</string>
|
||||
<string name="settings_signal_minimum_label">Мінімальна якість сигналу</string>
|
||||
<string name="settings_signal_minimum_description">Мінімальний рівень сигналу, щоб вважалося що пристрій ваш.</string>
|
||||
<string name="settings_autoconnect_label">Автопід\'єднання</string>
|
||||
<string name="settings_autoconnect_description">Якщо Android не підʼєднує навушники автоматично, додаток може попросити зробити це. Ця опція встановить \"Режим відстеження\" в стан \"Завжди\".</string>
|
||||
<string name="settings_autoconnect_condition_label">Умова автопід\'єднання</string>
|
||||
<string name="settings_autoconnect_condition_description">Коли слід здійснювати спробу під\'єднання до Вашого пристрою?</string>
|
||||
<string name="settings_reaction_label">Реакції</string>
|
||||
<string name="settings_reaction_description">Реагування на події та дії.</string>
|
||||
<string name="settings_category_yourdevice_label">Ваш пристрій</string>
|
||||
<string name="settings_category_compatibility_options_title">Опції сумісності</string>
|
||||
<string name="settings_category_compatibility_options_description">Не чіпай, якщо все працює ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Вимкнути апаратну фільтрацію</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Не доручати фільтрацію даних системі, замість цього отримувати всі дані та фільтрувати в додатку.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Вимкнути апаратне пакетування</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Не дозволяти системі групувати зібрані дані BLE, перш ніж пересилати їх нам.</string>
|
||||
<string name="settings_maindevice_address_label">Адреса Вашого пристрою</string>
|
||||
<string name="settings_maindevice_address_description">Адреса Вашого приєднаного пристрою. Програма використовує її для визначення, коли його під\'єднано до Вашого телефону.</string>
|
||||
<string name="settings_maindevice_address_none">Немає</string>
|
||||
<string name="settings_maindevice_model_label">Модель Вашого пристрою</string>
|
||||
<string name="settings_maindevice_model_description">Модель вашого пристрою. Це допомагає розпізнати ваш пристрій коли він не підʼєднаний до вашого телефону.</string>
|
||||
<string name="settings_onepod_mode_label">Режим одного навушника</string>
|
||||
<string name="settings_onepod_mode_description">Одягання обох навушників не є необхідним, одягання одного навушника цілком достатньо для запуску реагування.</string>
|
||||
<string name="settings_popup_caseopen_description">Показувати спливаюче вікно при відкритті футляра пристрою (експериментально).</string>
|
||||
<string name="notification_channel_device_status_label">Статус пристрою</string>
|
||||
<string name="debug_debuglog_size_label">Розмір</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Стиснутий розмір</string>
|
||||
<string name="debug_notification_channel_label">Повідомлення зневадження</string>
|
||||
<string name="debug_debuglog_file_label">Журнал зневадження</string>
|
||||
<string name="debug_debuglog_record_action">Зберегти журнал зневадження</string>
|
||||
<string name="settings_support_installid_label">ID інсталяції</string>
|
||||
<string name="settings_support_installid_desc">Автоматичні звіти про помилки є анонімними. Поділіться своїм ID інсталяції, якщо розробнику потрібно знайти ваші звіти про помилки.</string>
|
||||
<string name="settings_support_label">Підтримка</string>
|
||||
<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>
|
||||
<string name="settings_privacy_policy_label">Політика конфіденційності</string>
|
||||
<string name="settings_privacy_policy_desc">Відповідальне ставлення до даних.</string>
|
||||
<string name="settings_licenses_label">Ліцензії</string>
|
||||
<string name="settings_category_other_label">Інше</string>
|
||||
<string name="settings_general_label">Налаштування</string>
|
||||
<string name="settings_general_description">Загальні функції, що впливають на всю програму.</string>
|
||||
<string name="settings_acknowledgements_label">Подяки</string>
|
||||
<string name="settings_debug_autoreports_label">Автоматичні звіти про помилки</string>
|
||||
<string name="settings_debug_autoreports_description">Автоматично повідомляти про проблеми, наприклад, деталі про збій програми, щоб я міг зрозуміти, як це виправити.</string>
|
||||
<string name="settings_debug_mode_label">Режим налагодження</string>
|
||||
<string name="settings_debug_mode_description">Відображення додаткової інформації щодо помилок.</string>
|
||||
<string name="settings_blescanner_unfiltered_label">Нефільтровані дані BLE</string>
|
||||
<string name="settings_blescanner_unfiltered_description">Видалити всі фільтри зі сканера BLE, щоб показувати всі передані дані BLE. Корисно для додавання підтримки нових типів навушників.</string>
|
||||
<string name="settings_compatibility_mode_label">Режим сумісності</string>
|
||||
<string name="settings_compatibility_mode_description">Вимкнути оптимізацію для покращення сумісності. Спробуйте це, якщо ви не бачите жодних даних.</string>
|
||||
<string name="help_translate_label">Переклад</string>
|
||||
<string name="help_translate_description">Допоможи перекласти цей додаток вашою улюбленою мовою.</string>
|
||||
<string name="translators_thanks_title">Перекладачі</string>
|
||||
<string name="translators_thanks_description">Ievgen Gil</string>
|
||||
<string name="translators_thanks_description">Yevhen Fastiuk (Євген Фастюк), Ievgen Gil (Євген Гіль)</string>
|
||||
<string name="widget_description">Віджет, який показує останній відомий стан пристрою.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Непряме доставлення даних</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Використовувати альтернативний спосіб отримання даних BLE від системи (трансляція замість зворотного виклику).</string>
|
||||
<string name="troubleshooter_title">Засіб усунення несправностей</string>
|
||||
<string name="troubleshooter_ble_intro_title">Трансляція Bluetooth Low Energy</string>
|
||||
<string name="troubleshooter_ble_intro_body1">AirPods (і подібні навушники) транслюють інформацію про їх стан, використовуючи BLE технологію, яка називається \"рекламування\". Деякі смартфони не реалізовують цю технологію коректно. CAPod може спробувати усунути цю проблему, спробувавши різні опції сумісності, доки не отримає необхідні дані від пристрою. Увімкніть відтворення музики на ваших навушниках, покладіть їх поруч із смартфоном і розпочніть процес.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Почати виправлення неполадок</string>
|
||||
<string name="troubleshooter_ble_process_title">Триває виправлення неполадок</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Кожен крок займає 5–10 секунд</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Успішно</string>
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod приймає трансляцію BLE-реклами.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Невдало</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Не вдалося виправити неполадки. Жодна комбінація варіантів сумісності не допомогла.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Ваш смартфон отримав BLE дані, проте вони не від одного з підтримуваних пристроїв. Ваші навушники увімкнено? CAPod підтримує цей тип навушників?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Спробувати знову</string>
|
||||
<string name="troubleshoot_action">Вирішення проблем</string>
|
||||
</resources>
|
||||
|
||||
@@ -37,10 +37,9 @@
|
||||
<string name="settings_maindevice_address_none">Không có</string>
|
||||
<string name="settings_maindevice_model_label">Kiểu thiết bị của bạn</string>
|
||||
<string name="settings_maindevice_model_description">Kiểu thiết bị chính của bạn. Điều này giúp ứng dụng nhận ra thiết bị của bạn khi thiết bị không được kết nối với điện thoại của bạn.</string>
|
||||
<string name="settings_popup_caseopen_label">Hiển thị popup</string>
|
||||
<string name="settings_popup_caseopen_description">Hiển thị cửa sổ bật lên khi hộp thiết bị được mở (thử nghiệm).</string>
|
||||
<string name="settings_onepod_mode_label">Chế độ 1 tai nghe</string>
|
||||
<string name="settings_onepod_mode_description">Không cần đeo cả hai, chỉ đeo một tai nghe là đủ để kích hoạt phản ứng.</string>
|
||||
<string name="settings_popup_caseopen_description">Hiển thị cửa sổ bật lên khi hộp thiết bị được mở (thử nghiệm).</string>
|
||||
<string name="notification_channel_device_status_label">Trạng thái thiết bị</string>
|
||||
<string name="debug_debuglog_size_label">Kích thước</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Kích thước nén</string>
|
||||
|
||||
@@ -32,15 +32,16 @@
|
||||
<string name="settings_reaction_label">动作</string>
|
||||
<string name="settings_reaction_description">响应事件和行为的动作。</string>
|
||||
<string name="settings_category_yourdevice_label">您的设备</string>
|
||||
<string name="settings_category_compatibility_options_title">兼容性选项</string>
|
||||
<string name="settings_category_compatibility_options_description">如果一切正常,请不要修改 ;)</string>
|
||||
<string name="settings_maindevice_address_label">您的设备地址</string>
|
||||
<string name="settings_maindevice_address_description">已配对设备的地址,本应用通过它来确定其连接到您手机的时间</string>
|
||||
<string name="settings_maindevice_address_none">无</string>
|
||||
<string name="settings_maindevice_model_label">您的设备型号</string>
|
||||
<string name="settings_maindevice_model_description">您的主设备的型号。这有助于应用程序在设备未连接到您的手机时识别该设备。</string>
|
||||
<string name="settings_popup_caseopen_label">显示弹窗</string>
|
||||
<string name="settings_popup_caseopen_description">设备充电仓打开时显示弹窗(实验性)</string>
|
||||
<string name="settings_onepod_mode_label">单耳模式</string>
|
||||
<string name="settings_onepod_mode_description">不需要同时佩戴两支耳机,单支即可引发反应</string>
|
||||
<string name="settings_popup_caseopen_description">设备充电仓打开时显示弹窗(实验性)</string>
|
||||
<string name="notification_channel_device_status_label">设备状态</string>
|
||||
<string name="debug_debuglog_size_label">大小</string>
|
||||
<string name="debug_debuglog_size_compressed_label">压缩后大小</string>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user