mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
Improve device profile creation UI and fix navigation bar overlaps
- Fix navigation bar overlap issues in profile creation and list screens - Add proper edge-to-edge handling with dynamic padding for navigation bars - Improve paired device selection with "None" option and clear functionality - Add localized error messages for key validation with proper placeholders - Centralize default signal quality value in DeviceProfile companion object - Add unsaved changes detection and confirmation dialogs - Enhance drag handle touch target size with FrameLayout wrapper - Restore device address in profile editing and improve change tracking - Localize all user-facing strings following project guidelines
This commit is contained in:
@@ -38,9 +38,8 @@ object BuildConfigWrap {
|
||||
|
||||
val VERSION_CODE: Long = BuildConfig.VERSION_CODE.toLong()
|
||||
val VERSION_NAME: String = BuildConfig.VERSION_NAME
|
||||
val GIT_SHA: String = "unknown" // TODO: Re-add GITSHA to build configuration
|
||||
|
||||
val VERSION_DESCRIPTION_LONG: String = "v$VERSION_NAME ($VERSION_CODE) [$GIT_SHA] ${FLAVOR}_$BUILD_TYPE"
|
||||
val VERSION_DESCRIPTION_SHORT: String = "v$VERSION_NAME [$GIT_SHA] $FLAVOR"
|
||||
val VERSION_DESCRIPTION_LONG: String = "v$VERSION_NAME ($VERSION_CODE) ${FLAVOR}_$BUILD_TYPE"
|
||||
val VERSION_DESCRIPTION_SHORT: String = "v$VERSION_NAME $FLAVOR"
|
||||
val VERSION_DESCRIPTION_TINY: String = "v$VERSION_NAME"
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package eu.darken.capod.common.navigation
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
import androidx.navigation.NavArgs
|
||||
import androidx.navigation.NavArgsLazy
|
||||
import java.io.Serializable
|
||||
|
||||
// TODO Remove with "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0-alpha/stable"
|
||||
inline fun <reified Args : NavArgs> SavedStateHandle.navArgs() = NavArgsLazy(Args::class) {
|
||||
Bundle().apply {
|
||||
keys().forEach {
|
||||
when (val value = get<Any>(it)) {
|
||||
is Serializable -> putSerializable(it, value)
|
||||
is Parcelable -> putParcelable(it, value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,10 @@ class DualPodsCardVH(parent: ViewGroup) :
|
||||
|
||||
override val onBindData = binding(payload = true) { item: Item ->
|
||||
val device = item.device
|
||||
name.apply {
|
||||
|
||||
name.text = device.meta.profile?.label ?: "?"
|
||||
|
||||
deviceType.apply {
|
||||
val sb = StringBuilder(device.getLabel(context))
|
||||
if (device is HasPodStyle && item.showDebug) {
|
||||
val style = device.podStyle
|
||||
|
||||
@@ -11,9 +11,11 @@ import eu.darken.capod.pods.core.HasChargeDetection
|
||||
import eu.darken.capod.pods.core.HasEarDetection
|
||||
import eu.darken.capod.pods.core.SinglePodDevice
|
||||
import eu.darken.capod.pods.core.apple.ApplePods
|
||||
import eu.darken.capod.pods.core.firstSeenFormatted
|
||||
import eu.darken.capod.pods.core.getBatteryDrawable
|
||||
import eu.darken.capod.pods.core.getBatteryLevelHeadset
|
||||
import eu.darken.capod.pods.core.lastSeenFormatted
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
|
||||
class SinglePodsCardVH(parent: ViewGroup) :
|
||||
@@ -27,13 +29,16 @@ class SinglePodsCardVH(parent: ViewGroup) :
|
||||
override val onBindData = binding(payload = true) { item: Item ->
|
||||
val device = item.device
|
||||
|
||||
name.apply {
|
||||
text = device.getLabel(context)
|
||||
}
|
||||
name.text = device.meta.profile?.label ?: "?"
|
||||
deviceType.text = device.getLabel(context)
|
||||
|
||||
deviceIcon.setImageResource(device.iconRes)
|
||||
|
||||
lastSeen.text = device.lastSeenFormatted(item.now)
|
||||
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))
|
||||
firstSeen.isGone = Duration.between(device.seenFirstAt, device.seenLastAt).toMinutes() < 1
|
||||
|
||||
reception.text = item.getReceptionText()
|
||||
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
package eu.darken.capod.main.ui.settings.general
|
||||
|
||||
import android.content.Context
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.UIConverter
|
||||
|
||||
class AirPodKeyInputDialog(private val context: Context) {
|
||||
fun create(
|
||||
mode: Mode,
|
||||
current: String,
|
||||
onKey: (String) -> Unit,
|
||||
onGuide: () -> Unit,
|
||||
): AlertDialog {
|
||||
val inputEditText = TextInputEditText(context).apply {
|
||||
setText(current)
|
||||
}
|
||||
val inputLayout =
|
||||
TextInputLayout(context, null, com.google.android.material.R.attr.textInputOutlinedStyle).apply {
|
||||
hint = context.getString(
|
||||
R.string.general_example_label,
|
||||
"FE-D0-1C-54-11-81-BC-BC-87-D2-C4-3F-31-64-5F-EE"
|
||||
)
|
||||
addView(inputEditText)
|
||||
val padding = UIConverter.convertDpToPixels(context, 24f)
|
||||
setPadding(padding, padding / 2, padding, 0)
|
||||
}
|
||||
|
||||
val dialog = MaterialAlertDialogBuilder(context).apply {
|
||||
setView(inputLayout)
|
||||
when (mode) {
|
||||
Mode.IRK -> {
|
||||
setTitle(R.string.settings_maindevice_identitykey_label)
|
||||
setMessage(R.string.settings_maindevice_identitykey_explanation)
|
||||
}
|
||||
|
||||
Mode.ENC -> {
|
||||
setTitle(R.string.settings_maindevice_encryptionkey_label)
|
||||
setMessage(R.string.settings_maindevice_encryptionkey_explanation)
|
||||
}
|
||||
}
|
||||
|
||||
setPositiveButton(R.string.general_save_action) { _, _ -> onKey(inputEditText.text.toString()) }
|
||||
setNegativeButton(R.string.general_cancel_action) { _, _ -> }
|
||||
setNeutralButton(R.string.general_guide_action) { _, _ -> onGuide() }
|
||||
}.create()
|
||||
|
||||
dialog.setOnShowListener {
|
||||
val saveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
|
||||
|
||||
val keyRegex = Regex("^([0-9A-F]{2}-){15}[0-9A-F]{2}$")
|
||||
fun validateInput() {
|
||||
val isValid = inputEditText.text.toString().matches(keyRegex)
|
||||
saveButton.isEnabled = isValid || inputEditText.length() == 0
|
||||
}
|
||||
inputEditText.doOnTextChanged { _, _, _, _ -> validateInput() }
|
||||
validateInput()
|
||||
}
|
||||
return dialog
|
||||
}
|
||||
|
||||
enum class Mode {
|
||||
IRK,
|
||||
ENC,
|
||||
;
|
||||
}
|
||||
}
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
package eu.darken.capod.main.ui.settings.general
|
||||
|
||||
import android.content.Context
|
||||
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(private val context: Context) {
|
||||
|
||||
fun create(
|
||||
devices: List<BluetoothDevice2>,
|
||||
current: BluetoothDevice2?,
|
||||
callback: (BluetoothDevice2?) -> Unit
|
||||
): AlertDialog = MaterialAlertDialogBuilder(context).apply {
|
||||
setTitle(R.string.settings_maindevice_address_label)
|
||||
|
||||
val pairing = devices
|
||||
.map { (it.name ?: "?") to it.address }
|
||||
.plus(context.getString(R.string.settings_maindevice_address_none) to "")
|
||||
|
||||
setSingleChoiceItems(
|
||||
pairing.map { it.first }.toTypedArray(),
|
||||
pairing.indexOfFirst { it.second == current?.address }
|
||||
) { dialog, which ->
|
||||
val selected = devices.firstOrNull { it.address == pairing[which].second }
|
||||
callback(selected)
|
||||
dialog.dismiss()
|
||||
}
|
||||
|
||||
}.create()
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package eu.darken.capod.main.ui.settings.general
|
||||
|
||||
sealed class GeneralSettingsEvents {
|
||||
object SelectDeviceAddressEvent : GeneralSettingsEvents()
|
||||
}
|
||||
@@ -37,10 +37,6 @@ class GeneralSettingsFragment : PreferenceFragment3() {
|
||||
|
||||
private val monitorModePref by lazy { findPreference<ListPreference>(generalSettings.monitorMode.key)!! }
|
||||
private val scanModePref by lazy { findPreference<ListPreference>(generalSettings.scannerMode.key)!! }
|
||||
private val mainDeviceAddressPref by lazy { findPreference<Preference>(generalSettings.mainDeviceAddress.key)!! }
|
||||
private val mainDeviceModelPref by lazy { findPreference<Preference>(generalSettings.mainDeviceModel.key)!! }
|
||||
private val mainDeviceIdentityKeyPref by lazy { findPreference<Preference>(generalSettings.mainDeviceIdentityKey.key)!! }
|
||||
private val mainDeviceEncryptionKeyPref by lazy { findPreference<Preference>(generalSettings.mainDeviceEncryptionKey.key)!! }
|
||||
|
||||
override fun onPreferencesCreated() {
|
||||
monitorModePref.apply {
|
||||
@@ -51,67 +47,9 @@ class GeneralSettingsFragment : PreferenceFragment3() {
|
||||
entries = ScannerMode.entries.map { getString(it.labelRes) }.toTypedArray()
|
||||
entryValues = ScannerMode.entries.map { settings.scannerMode.rawWriter(it) as String }.toTypedArray()
|
||||
}
|
||||
mainDeviceIdentityKeyPref.setOnPreferenceClickListener {
|
||||
AirPodKeyInputDialog(requireContext()).create(
|
||||
mode = AirPodKeyInputDialog.Mode.IRK,
|
||||
current = generalSettings.mainDeviceIdentityKey.value?.toHex() ?: "",
|
||||
onKey = { raw ->
|
||||
generalSettings.mainDeviceIdentityKey.value = raw.fromHex().takeIf { it.isNotEmpty() }
|
||||
},
|
||||
onGuide = { webpageTool.open("https://github.com/d4rken-org/capod/wiki/airpod-Keys") }
|
||||
).show()
|
||||
true
|
||||
}
|
||||
mainDeviceEncryptionKeyPref.setOnPreferenceClickListener {
|
||||
AirPodKeyInputDialog(requireContext()).create(
|
||||
mode = AirPodKeyInputDialog.Mode.ENC,
|
||||
current = generalSettings.mainDeviceEncryptionKey.value?.toHex() ?: "",
|
||||
onKey = { raw ->
|
||||
generalSettings.mainDeviceEncryptionKey.value = raw.fromHex().takeIf { it.isNotEmpty() }
|
||||
},
|
||||
onGuide = { webpageTool.open("https://github.com/d4rken-org/capod/wiki/airpod-Keys") }
|
||||
).show()
|
||||
true
|
||||
}
|
||||
|
||||
super.onPreferencesCreated()
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
vm.state.observe2 { state ->
|
||||
mainDeviceAddressPref.setOnPreferenceClickListener {
|
||||
val dialog = DeviceSelectionDialogFactory(requireContext()).create(
|
||||
state.devices,
|
||||
state.devices.firstOrNull { it.address == generalSettings.mainDeviceAddress.value }
|
||||
) { selected ->
|
||||
generalSettings.mainDeviceAddress.value = selected?.address
|
||||
}
|
||||
dialog.show()
|
||||
true
|
||||
}
|
||||
mainDeviceEncryptionKeyPref.isEnabled = state.hasIdentityKey
|
||||
}
|
||||
|
||||
vm.events.observe2 {
|
||||
when (it) {
|
||||
GeneralSettingsEvents.SelectDeviceAddressEvent -> mainDeviceAddressPref.performClick()
|
||||
}
|
||||
}
|
||||
|
||||
mainDeviceModelPref.setOnPreferenceClickListener {
|
||||
val dialog = ModelSelectionDialogFactory(requireContext()).create(
|
||||
PodDevice.Model.entries,
|
||||
generalSettings.mainDeviceModel.value
|
||||
) { selected ->
|
||||
generalSettings.mainDeviceModel.value = selected
|
||||
}
|
||||
dialog.show()
|
||||
true
|
||||
}
|
||||
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onDisplayPreferenceDialog(preference: Preference) {
|
||||
if (PercentSliderPreference.onDisplayPreferenceDialog(this, preference)) return
|
||||
|
||||
|
||||
-37
@@ -2,56 +2,19 @@ package eu.darken.capod.main.ui.settings.general
|
||||
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
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.logging.logTag
|
||||
import eu.darken.capod.common.flow.withPrevious
|
||||
import eu.darken.capod.common.livedata.SingleLiveEvent
|
||||
import eu.darken.capod.common.uix.ViewModel3
|
||||
import eu.darken.capod.main.core.GeneralSettings
|
||||
import eu.darken.capod.main.core.MonitorMode
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.onStart
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class GeneralSettingsFragmentVM @Inject constructor(
|
||||
@Suppress("unused") private val handle: SavedStateHandle,
|
||||
dispatcherProvider: DispatcherProvider,
|
||||
bluetoothManager: BluetoothManager2,
|
||||
private val generalSettings: GeneralSettings,
|
||||
) : ViewModel3(dispatcherProvider) {
|
||||
|
||||
val events = SingleLiveEvent<GeneralSettingsEvents>()
|
||||
|
||||
init {
|
||||
generalSettings.monitorMode.flow
|
||||
.withPrevious()
|
||||
.filter { (old, new) ->
|
||||
old != new && new == MonitorMode.AUTOMATIC && generalSettings.mainDeviceAddress.value == null
|
||||
}
|
||||
.onEach { events.postValue(GeneralSettingsEvents.SelectDeviceAddressEvent) }
|
||||
.launchInViewModel()
|
||||
}
|
||||
|
||||
val state = combine(
|
||||
bluetoothManager.bondedDevices().onStart { emit(emptySet()) },
|
||||
generalSettings.mainDeviceIdentityKey.flow
|
||||
) { bondedDevices, identityKey ->
|
||||
State(
|
||||
devices = bondedDevices.toList(),
|
||||
hasIdentityKey = identityKey != null
|
||||
)
|
||||
}.asLiveData2()
|
||||
|
||||
data class State(
|
||||
val devices: List<BluetoothDevice2>,
|
||||
val hasIdentityKey: Boolean
|
||||
)
|
||||
|
||||
companion object {
|
||||
private val TAG = logTag("Settings", "General", "VM")
|
||||
}
|
||||
|
||||
-36
@@ -1,36 +0,0 @@
|
||||
package eu.darken.capod.main.ui.settings.general
|
||||
|
||||
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.pods.core.PodDevice
|
||||
|
||||
|
||||
class ModelSelectionDialogFactory constructor(private val context: Context) {
|
||||
|
||||
fun create(
|
||||
models: List<PodDevice.Model>,
|
||||
current: PodDevice.Model,
|
||||
callback: (PodDevice.Model) -> Unit
|
||||
): AlertDialog {
|
||||
return MaterialAlertDialogBuilder(context).apply {
|
||||
setTitle(R.string.settings_maindevice_model_label)
|
||||
|
||||
val pairing = models
|
||||
.map { it.label to it }
|
||||
|
||||
setSingleChoiceItems(
|
||||
pairing.map { it.first }.toTypedArray(),
|
||||
pairing.indexOfFirst { it.second == current },
|
||||
DialogInterface.OnClickListener { dialog, which ->
|
||||
val selected = pairing[which].second
|
||||
callback(selected)
|
||||
dialog.dismiss()
|
||||
}
|
||||
)
|
||||
|
||||
}.create()
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,11 @@
|
||||
package eu.darken.capod.pods.core.apple
|
||||
|
||||
import eu.darken.capod.common.bluetooth.BleScanResult
|
||||
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.asLog
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import eu.darken.capod.profiles.core.AppleDeviceProfile
|
||||
import eu.darken.capod.profiles.core.DeviceProfilesRepo
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import eu.darken.capod.pods.core.apple.misc.UnknownAppleDevice
|
||||
import eu.darken.capod.pods.core.apple.protocol.ContinuityProtocol
|
||||
@@ -14,6 +13,8 @@ import eu.darken.capod.pods.core.apple.protocol.ProximityMessage
|
||||
import eu.darken.capod.pods.core.apple.protocol.ProximityPairing
|
||||
import eu.darken.capod.pods.core.apple.protocol.ProximityPayload
|
||||
import eu.darken.capod.pods.core.apple.protocol.RPAChecker
|
||||
import eu.darken.capod.profiles.core.AppleDeviceProfile
|
||||
import eu.darken.capod.profiles.core.DeviceProfilesRepo
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
@@ -62,23 +63,29 @@ class AppleFactory @Inject constructor(
|
||||
val proximityMessage = getMessage(scanResult) ?: return@withLock null
|
||||
|
||||
var isIRKMatch = false
|
||||
val profile = profilesRepo.profiles.first()
|
||||
.filterIsInstance<AppleDeviceProfile>()
|
||||
.firstOrNull {
|
||||
if (it.identityKey != null && rpaChecker.verify(scanResult.address, it.identityKey)) {
|
||||
isIRKMatch = true
|
||||
return@firstOrNull true
|
||||
}
|
||||
// TODO more checks heuristicbased
|
||||
return@firstOrNull false
|
||||
}
|
||||
val candidates = profilesRepo.profiles.first().filterIsInstance<AppleDeviceProfile>()
|
||||
var profile = candidates.firstOrNull {
|
||||
it.identityKey != null && rpaChecker.verify(scanResult.address, it.identityKey)
|
||||
}
|
||||
if (profile != null) {
|
||||
isIRKMatch = true
|
||||
log(TAG, VERBOSE) { "Got IRK match for from $profile for $scanResult" }
|
||||
}
|
||||
|
||||
val factory = podFactories.firstOrNull { it.isResponsible(proximityMessage) } ?: unknownAppleFactory
|
||||
|
||||
// TODO more checks heuristicbased
|
||||
if (profile == null) {
|
||||
profile = candidates.firstOrNull { it.model == factory.deviceModel }
|
||||
log(TAG, VERBOSE) { "Got no IRK match for from $profile for $scanResult" }
|
||||
}
|
||||
|
||||
val payload = ProximityPayload(
|
||||
public = ProximityPayload.Public(
|
||||
proximityMessage.data.take(9).toUByteArray()
|
||||
),
|
||||
private = run {
|
||||
if (profile == null) return@run null
|
||||
if (!isIRKMatch || profile == null) return@run null
|
||||
if (proximityMessage.data.size != ProximityPairing.PAIRING_MESSAGE_LENGTH) return@run null
|
||||
|
||||
val encKey = profile.encryptionKey?.takeIf { it.isNotEmpty() }
|
||||
@@ -91,9 +98,8 @@ class AppleFactory @Inject constructor(
|
||||
},
|
||||
)
|
||||
|
||||
val factory = podFactories.firstOrNull { it.isResponsible(proximityMessage) }
|
||||
|
||||
return@withLock (factory ?: unknownAppleFactory).create(
|
||||
factory.create(
|
||||
scanResult = scanResult,
|
||||
payload = payload,
|
||||
meta = ApplePods.AppleMeta(
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package eu.darken.capod.pods.core.apple
|
||||
|
||||
import eu.darken.capod.common.bluetooth.BleScanResult
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import eu.darken.capod.pods.core.apple.history.KnownDevice
|
||||
import eu.darken.capod.pods.core.apple.protocol.ProximityMessage
|
||||
import eu.darken.capod.pods.core.apple.protocol.ProximityPayload
|
||||
|
||||
interface ApplePodsFactory {
|
||||
val deviceModel: PodDevice.Model
|
||||
fun isResponsible(message: ProximityMessage): Boolean
|
||||
fun create(scanResult: BleScanResult, payload: ProximityPayload, meta: ApplePods.AppleMeta): ApplePods
|
||||
|
||||
|
||||
@@ -42,6 +42,8 @@ data class AirPodsGen1(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_GEN1
|
||||
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ data class AirPodsGen2(
|
||||
private val repo: PodHistoryRepo
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_GEN2
|
||||
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ data class AirPodsGen3(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_GEN3
|
||||
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ data class AirPodsGen4(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_GEN4
|
||||
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ data class AirPodsGen4Anc(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_GEN4_ANC
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ data class AirPodsMax(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_MAX
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ data class AirPodsMaxUsbc(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_MAX_USBC
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ data class AirPodsPro(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_PRO
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ data class AirPodsPro2(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_PRO2
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ data class AirPodsPro2Usbc(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.AIRPODS_PRO2_USBC
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ data class BeatsFitPro(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.BEATS_FIT_PRO
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ data class BeatsFlex(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.BEATS_FLEX
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ data class BeatsSolo3(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.BEATS_SOLO_3
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ data class BeatsStudio3(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.BEATS_STUDIO_3
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().dirty == DEVICE_CODE_DIRTY && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ data class BeatsX(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.BEATS_X
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ data class PowerBeats3(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.POWERBEATS_3
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ data class PowerBeats4(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.POWERBEATS_4
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ data class PowerBeatsPro(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.POWERBEATS_PRO
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ data class PowerBeatsPro2(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.POWERBEATS_PRO2
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
getModelInfo().full == DEVICE_CODE && length == ProximityPairing.PAIRING_MESSAGE_LENGTH
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ data class FakeAirPodsGen1(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.FAKE_AIRPODS_GEN1
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
// Official message length is 19HEX, i.e. binary 25, did they copy this wrong?
|
||||
getModelInfo().full == DEVICE_CODE && length == 19
|
||||
|
||||
@@ -42,7 +42,7 @@ data class FakeAirPodsGen2(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.FAKE_AIRPODS_GEN2
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
// Official message length is 19HEX, i.e. binary 25, did they copy this wrong?
|
||||
getModelInfo().full == DEVICE_CODE && length == 19
|
||||
|
||||
@@ -44,7 +44,7 @@ data class FakeAirPodsGen3(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.FAKE_AIRPODS_GEN3
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
// Official message length is 19HEX, i.e. binary 25, did they copy this wrong?
|
||||
getModelInfo().full == DEVICE_CODE && length == 19
|
||||
|
||||
@@ -62,7 +62,7 @@ data class FakeAirPodsPro(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.FAKE_AIRPODS_PRO
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
// Official message length is 19HEX, i.e. binary 25, did they copy this wrong?
|
||||
getModelInfo().full == DEVICE_CODE && length == 19
|
||||
|
||||
@@ -66,7 +66,7 @@ data class FakeAirPodsPro2(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.FAKE_AIRPODS_PRO2
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = message.run {
|
||||
// Official message length is 19HEX, i.e. binary 25, did they copy this wrong?
|
||||
getModelInfo().full == DEVICE_CODE && length == 19
|
||||
|
||||
@@ -35,6 +35,7 @@ data class UnknownAppleDevice(
|
||||
class Factory @Inject constructor(
|
||||
private val repo: PodHistoryRepo,
|
||||
) : ApplePodsFactory {
|
||||
override val deviceModel: PodDevice.Model = PodDevice.Model.UNKNOWN
|
||||
override fun isResponsible(message: ProximityMessage): Boolean = true
|
||||
|
||||
override fun create(
|
||||
|
||||
@@ -15,7 +15,7 @@ data class AppleDeviceProfile(
|
||||
@Json(name = "label") override val label: String,
|
||||
@Json(name = "priority") override val priority: Int = 0,
|
||||
@Json(name = "model") override val model: PodDevice.Model = PodDevice.Model.UNKNOWN,
|
||||
@Json(name = "minimumSignalQuality") override val minimumSignalQuality: Float? = 0.20f,
|
||||
@Json(name = "minimumSignalQuality") override val minimumSignalQuality: Float? = DeviceProfile.DEFAULT_MINIMUM_SIGNAL_QUALITY,
|
||||
@Json(name = "identityKey") val identityKey: IdentityResolvingKey? = null,
|
||||
@Json(name = "encryptionKey") val encryptionKey: ProximityEncryptionKey? = null,
|
||||
@Json(name = "address") override val address: String? = null,
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package eu.darken.capod.profiles.core
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
|
||||
import eu.darken.capod.common.serialization.NameBasedPolyJsonAdapterFactory
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import kotlin.jvm.java
|
||||
|
||||
sealed interface DeviceProfile : Parcelable {
|
||||
val id: ProfileId
|
||||
@@ -13,8 +15,9 @@ sealed interface DeviceProfile : Parcelable {
|
||||
val address: String?
|
||||
|
||||
companion object {
|
||||
val MOSHI_FACTORY: NameBasedPolyJsonAdapterFactory<DeviceProfile> =
|
||||
NameBasedPolyJsonAdapterFactory.of(DeviceProfile::class.java)
|
||||
.withSubtype(AppleDeviceProfile::class.java, "identityKey")
|
||||
const val DEFAULT_MINIMUM_SIGNAL_QUALITY = 0.20f
|
||||
|
||||
val MOSHI_FACTORY = PolymorphicJsonAdapterFactory.of(DeviceProfile::class.java, "type")
|
||||
.withSubtype(AppleDeviceProfile::class.java, "apple")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package eu.darken.capod.profiles.core
|
||||
|
||||
import com.squareup.moshi.Json
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
@JsonClass(generateAdapter = true)
|
||||
data class DeviceProfilesContainer(
|
||||
@Json(name = "profiles") val profiles: List<DeviceProfile> = emptyList()
|
||||
)
|
||||
@@ -3,6 +3,7 @@ package eu.darken.capod.profiles.core
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@@ -11,33 +12,33 @@ class DeviceProfilesRepo @Inject constructor(
|
||||
private val settings: DeviceProfilesSettings,
|
||||
) {
|
||||
|
||||
val profiles: Flow<List<DeviceProfile>> = settings.profiles.flow
|
||||
val profiles: Flow<List<DeviceProfile>> = settings.profiles.flow.map { it.profiles }
|
||||
|
||||
fun addProfile(profile: DeviceProfile) {
|
||||
val currentProfiles = settings.profiles.value
|
||||
val updatedProfiles = currentProfiles + profile
|
||||
settings.profiles.value = updatedProfiles
|
||||
val currentContainer = settings.profiles.value
|
||||
val updatedProfiles = currentContainer.profiles + profile
|
||||
settings.profiles.value = DeviceProfilesContainer(updatedProfiles)
|
||||
log(VERBOSE) { "Added device profile: ${profile.label}" }
|
||||
}
|
||||
|
||||
fun updateProfile(profile: DeviceProfile) {
|
||||
val currentProfiles = settings.profiles.value
|
||||
val updatedProfiles = currentProfiles.map {
|
||||
val currentContainer = settings.profiles.value
|
||||
val updatedProfiles = currentContainer.profiles.map {
|
||||
if (it.id == profile.id) profile else it
|
||||
}
|
||||
settings.profiles.value = updatedProfiles
|
||||
settings.profiles.value = DeviceProfilesContainer(updatedProfiles)
|
||||
log(VERBOSE) { "Updated device profile: ${profile.label}" }
|
||||
}
|
||||
|
||||
fun removeProfile(profileId: String) {
|
||||
val currentProfiles = settings.profiles.value
|
||||
val updatedProfiles = currentProfiles.filter { it.id != profileId }
|
||||
settings.profiles.value = updatedProfiles
|
||||
val currentContainer = settings.profiles.value
|
||||
val updatedProfiles = currentContainer.profiles.filter { it.id != profileId }
|
||||
settings.profiles.value = DeviceProfilesContainer(updatedProfiles)
|
||||
log(VERBOSE) { "Removed device profile with ID: $profileId" }
|
||||
}
|
||||
|
||||
fun reorderProfiles(profiles: List<DeviceProfile>) {
|
||||
settings.profiles.value = profiles.toList()
|
||||
settings.profiles.value = DeviceProfilesContainer(profiles.toList())
|
||||
log(VERBOSE) { "Reordered ${profiles.size} device profiles" }
|
||||
}
|
||||
}
|
||||
@@ -20,11 +20,9 @@ class DeviceProfilesSettings @Inject constructor(
|
||||
|
||||
override val preferences: SharedPreferences = context.getSharedPreferences("device_profiles", Context.MODE_PRIVATE)
|
||||
|
||||
private val listType = Types.newParameterizedType(List::class.java, DeviceProfile::class.java)
|
||||
|
||||
val profiles = preferences.createFlowPreference<List<DeviceProfile>>(
|
||||
val profiles = preferences.createFlowPreference<DeviceProfilesContainer>(
|
||||
"profiles",
|
||||
emptyList(),
|
||||
DeviceProfilesContainer(),
|
||||
moshi
|
||||
)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ class DeviceManagerFragment : Fragment3(R.layout.device_manager_fragment) {
|
||||
|
||||
@Inject
|
||||
lateinit var adapter: DeviceManagerAdapter
|
||||
|
||||
|
||||
private var isDragging = false
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
@@ -52,16 +52,11 @@ class DeviceManagerFragment : Fragment3(R.layout.device_manager_fragment) {
|
||||
|
||||
ui.apply {
|
||||
list.setupDefaults(adapter, dividers = false)
|
||||
|
||||
toolbar.setNavigationOnClickListener {
|
||||
vm.onBackPressed()
|
||||
}
|
||||
|
||||
fab.setOnClickListener {
|
||||
vm.onAddDevice()
|
||||
}
|
||||
|
||||
// Setup drag-to-reorder for profiles
|
||||
toolbar.setNavigationOnClickListener { vm.onBackPressed() }
|
||||
|
||||
fab.setOnClickListener { vm.onAddDevice() }
|
||||
|
||||
val itemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(
|
||||
ItemTouchHelper.UP or ItemTouchHelper.DOWN, 0
|
||||
) {
|
||||
@@ -72,35 +67,33 @@ class DeviceManagerFragment : Fragment3(R.layout.device_manager_fragment) {
|
||||
): Boolean {
|
||||
val fromPosition = viewHolder.adapterPosition
|
||||
val toPosition = target.adapterPosition
|
||||
|
||||
|
||||
// Only allow reordering of profile items, not empty state cards
|
||||
if (adapter.data[fromPosition] is DeviceProfileVH.Item &&
|
||||
adapter.data[toPosition] is DeviceProfileVH.Item) {
|
||||
if (adapter.data[fromPosition] is DeviceProfileVH.Item &&
|
||||
adapter.data[toPosition] is DeviceProfileVH.Item
|
||||
) {
|
||||
return adapter.moveItem(fromPosition, toPosition)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
// No swipe to dismiss
|
||||
}
|
||||
|
||||
|
||||
override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
|
||||
super.onSelectedChanged(viewHolder, actionState)
|
||||
when (actionState) {
|
||||
ItemTouchHelper.ACTION_STATE_DRAG -> {
|
||||
isDragging = true
|
||||
}
|
||||
|
||||
ItemTouchHelper.ACTION_STATE_IDLE -> {
|
||||
if (isDragging) {
|
||||
// Drag finished, save new order
|
||||
vm.onProfilesReordered(adapter.getItems())
|
||||
isDragging = false
|
||||
}
|
||||
if (isDragging) vm.onProfilesReordered(adapter.getItems())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun isLongPressDragEnabled(): Boolean = true
|
||||
override fun isItemViewSwipeEnabled(): Boolean = false
|
||||
})
|
||||
@@ -108,9 +101,8 @@ class DeviceManagerFragment : Fragment3(R.layout.device_manager_fragment) {
|
||||
}
|
||||
|
||||
vm.listItems.observe2(ui) { items ->
|
||||
if (!isDragging) {
|
||||
adapter.update(items)
|
||||
}
|
||||
adapter.update(items)
|
||||
isDragging = false
|
||||
}
|
||||
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
@@ -22,11 +22,11 @@ class DeviceProfileVH(parent: ViewGroup) :
|
||||
deviceIcon.setImageResource(profile.model.iconRes)
|
||||
deviceName.text = profile.label
|
||||
deviceDetails.text = buildString {
|
||||
profile.address?.let {
|
||||
append(it.toString())
|
||||
append(" • ")
|
||||
}
|
||||
append(profile.model.name)
|
||||
profile.address?.let {
|
||||
append(" • ")
|
||||
append(it)
|
||||
}
|
||||
}
|
||||
|
||||
itemView.setOnClickListener { item.onItemClick(profile) }
|
||||
|
||||
+122
-20
@@ -1,13 +1,16 @@
|
||||
package eu.darken.capod.profiles.ui
|
||||
package eu.darken.capod.profiles.ui.creation
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.util.TypedValue
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
@@ -39,8 +42,30 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
insetsPadding(ui.toolbar, top = true)
|
||||
}
|
||||
|
||||
// Handle bottom padding for NestedScrollView to avoid navigation bar overlap
|
||||
ViewCompat.setOnApplyWindowInsetsListener(ui.scrollView) { view, insets ->
|
||||
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
val basePadding = TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP, 16f,
|
||||
resources.displayMetrics
|
||||
).toInt()
|
||||
view.setPadding(
|
||||
view.paddingLeft,
|
||||
view.paddingTop,
|
||||
view.paddingRight,
|
||||
basePadding + systemBars.bottom
|
||||
)
|
||||
insets
|
||||
}
|
||||
|
||||
ui.apply {
|
||||
toolbar.setNavigationOnClickListener { vm.onBackPressed() }
|
||||
toolbar.setNavigationOnClickListener {
|
||||
if (vm.hasUnsavedChanges()) {
|
||||
showUnsavedChangesConfirmation()
|
||||
} else {
|
||||
vm.onBackPressed()
|
||||
}
|
||||
}
|
||||
toolbar.setOnMenuItemClickListener { item ->
|
||||
when (item.itemId) {
|
||||
R.id.action_save -> {
|
||||
@@ -66,14 +91,54 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
vm.updateMinimumSignalQuality(value / 100f)
|
||||
}
|
||||
|
||||
// Key validation regex - matches dialog format: "FE-D0-1C-54-11-81-BC-BC-87-D2-C4-3F-31-64-5F-EE"
|
||||
val keyRegex = Regex("^([0-9A-F]{2}-){15}[0-9A-F]{2}$")
|
||||
val exampleKey = "FE-D0-1C-54-11-81-BC-BC-87-D2-C4-3F-31-64-5F-EE"
|
||||
|
||||
identityKeyInput.doOnTextChanged { text, _, _, _ ->
|
||||
val keyText = text?.toString() ?: ""
|
||||
vm.updateIdentityKey(keyText.fromHex().takeIf { it.isNotEmpty() })
|
||||
when {
|
||||
keyText.isEmpty() -> {
|
||||
identityKeyInputLayout.error = null
|
||||
vm.updateIdentityKey(null)
|
||||
}
|
||||
keyText.matches(keyRegex) -> {
|
||||
identityKeyInputLayout.error = null
|
||||
try {
|
||||
vm.updateIdentityKey(keyText.fromHex())
|
||||
} catch (e: Exception) {
|
||||
// Fallback - should not happen with regex validation
|
||||
identityKeyInputLayout.error = getString(R.string.profiles_key_invalid_format)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
identityKeyInputLayout.error = getString(R.string.profiles_key_expected_format, exampleKey)
|
||||
// Don't update ViewModel with invalid input
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encryptionKeyInput.doOnTextChanged { text, _, _, _ ->
|
||||
val keyText = text?.toString() ?: ""
|
||||
vm.updateEncryptionKey(keyText.fromHex().takeIf { it.isNotEmpty() })
|
||||
when {
|
||||
keyText.isEmpty() -> {
|
||||
encryptionKeyInputLayout.error = null
|
||||
vm.updateEncryptionKey(null)
|
||||
}
|
||||
keyText.matches(keyRegex) -> {
|
||||
encryptionKeyInputLayout.error = null
|
||||
try {
|
||||
vm.updateEncryptionKey(keyText.fromHex())
|
||||
} catch (e: Exception) {
|
||||
// Fallback - should not happen with regex validation
|
||||
encryptionKeyInputLayout.error = getString(R.string.profiles_key_invalid_format)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
encryptionKeyInputLayout.error = getString(R.string.profiles_key_expected_format, exampleKey)
|
||||
// Don't update ViewModel with invalid input
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
identityKeyGuideButton.setOnClickListener {
|
||||
@@ -85,7 +150,6 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
}
|
||||
|
||||
// Set hints using same format as AirPodKeyInputDialog
|
||||
val exampleKey = "FE-D0-1C-54-11-81-BC-BC-87-D2-C4-3F-31-64-5F-EE"
|
||||
identityKeyInputLayout.hint = getString(R.string.general_example_label, exampleKey)
|
||||
encryptionKeyInputLayout.hint = getString(R.string.general_example_label, exampleKey)
|
||||
|
||||
@@ -97,14 +161,21 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
val selectedModel = vm.availableModels[position]
|
||||
vm.updateModel(selectedModel)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
vm.bondedDevices.observe2(ui) { devices ->
|
||||
val deviceAdapter = DeviceArrayAdapter(requireContext(), devices)
|
||||
deviceInput.setAdapter(deviceAdapter)
|
||||
deviceInput.setOnItemClickListener { _, _, position, _ ->
|
||||
val selectedDevice = devices[position]
|
||||
vm.updateSelectedDevice(selectedDevice)
|
||||
if (position == 0) {
|
||||
// "None" option selected
|
||||
vm.updateSelectedDevice(null)
|
||||
} else {
|
||||
// Regular device selected (position - 1 to account for "None" option)
|
||||
val selectedDevice = devices[position - 1]
|
||||
vm.updateSelectedDevice(selectedDevice)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,11 +224,13 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
}
|
||||
|
||||
vm.selectedDevice.observe2(ui) { device ->
|
||||
device?.let {
|
||||
val deviceText = "${it.name ?: "Unknown Device"} (${it.address})"
|
||||
if (deviceInput.text?.toString() != deviceText) {
|
||||
deviceInput.setText(deviceText, false)
|
||||
}
|
||||
val deviceText = if (device != null) {
|
||||
"${device.name ?: getString(R.string.pods_unknown_label)} (${device.address})"
|
||||
} else {
|
||||
getString(R.string.profiles_paired_device_none)
|
||||
}
|
||||
if (deviceInput.text?.toString() != deviceText) {
|
||||
deviceInput.setText(deviceText, false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,15 +247,29 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
|
||||
private fun showDeleteConfirmation() {
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.device_profiles_delete_title)
|
||||
.setMessage(R.string.device_profiles_delete_message)
|
||||
.setPositiveButton(R.string.device_profiles_delete_action) { _, _ ->
|
||||
.setTitle(R.string.profiles_delete_title)
|
||||
.setMessage(R.string.profiles_delete_message)
|
||||
.setPositiveButton(R.string.profiles_delete_action) { _, _ ->
|
||||
vm.deleteProfile()
|
||||
}
|
||||
.setNegativeButton(R.string.general_cancel_action, null)
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun showUnsavedChangesConfirmation() {
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.general_unsaved_changes_title)
|
||||
.setMessage(R.string.general_unsaved_changes_message)
|
||||
.setPositiveButton(R.string.general_save_and_exit_action) { _, _ ->
|
||||
vm.saveProfile()
|
||||
}
|
||||
.setNegativeButton(R.string.general_discard_action) { _, _ ->
|
||||
vm.discardChanges()
|
||||
}
|
||||
.setNeutralButton(R.string.general_keep_editing_action, null)
|
||||
.show()
|
||||
}
|
||||
|
||||
private class ModelArrayAdapter(
|
||||
context: Context,
|
||||
models: List<PodDevice.Model>
|
||||
@@ -212,8 +299,16 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
|
||||
private class DeviceArrayAdapter(
|
||||
context: Context,
|
||||
devices: List<BluetoothDevice2>
|
||||
) : ArrayAdapter<BluetoothDevice2>(context, R.layout.paired_device_dropdown_item, devices) {
|
||||
private val devices: List<BluetoothDevice2>
|
||||
) : ArrayAdapter<String>(context, R.layout.paired_device_dropdown_item) {
|
||||
|
||||
init {
|
||||
// Add "None" as first item, then all device names
|
||||
add(context.getString(R.string.profiles_paired_device_none))
|
||||
devices.forEach { device ->
|
||||
add("${device.name ?: context.getString(R.string.pods_unknown_label)} (${device.address})")
|
||||
}
|
||||
}
|
||||
|
||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
return createView(position, convertView, parent)
|
||||
@@ -224,14 +319,21 @@ class DeviceProfileCreationFragment : Fragment3(R.layout.device_profile_creation
|
||||
}
|
||||
|
||||
private fun createView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
val device = getItem(position)!!
|
||||
val view = convertView ?: LayoutInflater.from(context).inflate(R.layout.paired_device_dropdown_item, parent, false)
|
||||
|
||||
val nameView = view.findViewById<TextView>(R.id.device_name)
|
||||
val addressView = view.findViewById<TextView>(R.id.device_address)
|
||||
|
||||
nameView.text = device.name ?: "Unknown Device"
|
||||
addressView.text = device.address
|
||||
if (position == 0) {
|
||||
// "None" option
|
||||
nameView.text = context.getString(R.string.profiles_paired_device_none)
|
||||
addressView.text = context.getString(R.string.profiles_paired_device_none_description)
|
||||
} else {
|
||||
// Regular device (position - 1 to account for "None" option)
|
||||
val device = devices[position - 1]
|
||||
nameView.text = device.name ?: context.getString(R.string.pods_unknown_label)
|
||||
addressView.text = device.address
|
||||
}
|
||||
|
||||
return view
|
||||
}
|
||||
+122
-6
@@ -1,20 +1,25 @@
|
||||
package eu.darken.capod.profiles.ui
|
||||
package eu.darken.capod.profiles.ui.creation
|
||||
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
import androidx.lifecycle.asLiveData
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
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.logging.log
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.uix.ViewModel3
|
||||
import eu.darken.capod.profiles.core.AppleDeviceProfile
|
||||
import eu.darken.capod.profiles.core.DeviceProfilesRepo
|
||||
import eu.darken.capod.pods.core.PodDevice
|
||||
import eu.darken.capod.pods.core.apple.protocol.IdentityResolvingKey
|
||||
import eu.darken.capod.pods.core.apple.protocol.ProximityEncryptionKey
|
||||
import eu.darken.capod.profiles.core.DeviceProfile
|
||||
import eu.darken.capod.profiles.core.ProfileId
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.catch
|
||||
import kotlinx.coroutines.flow.combine
|
||||
@@ -25,13 +30,14 @@ import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class DeviceProfileCreationFragmentVM @Inject constructor(
|
||||
@ApplicationContext private val context: Context,
|
||||
handle: SavedStateHandle,
|
||||
dispatcherProvider: DispatcherProvider,
|
||||
private val deviceProfilesRepo: DeviceProfilesRepo,
|
||||
private val bluetoothManager: BluetoothManager2,
|
||||
) : ViewModel3(dispatcherProvider = dispatcherProvider) {
|
||||
|
||||
private val profileId: String? = handle.get<String>("profileId")
|
||||
private val profileId: String? = handle.get<ProfileId>("profileId")
|
||||
val isEditMode: Boolean = profileId != null
|
||||
|
||||
private val _name = MutableStateFlow("")
|
||||
@@ -39,13 +45,24 @@ class DeviceProfileCreationFragmentVM @Inject constructor(
|
||||
private val _identityKey = MutableStateFlow<IdentityResolvingKey?>(null)
|
||||
private val _encryptionKey = MutableStateFlow<ProximityEncryptionKey?>(null)
|
||||
private val _selectedDevice = MutableStateFlow<BluetoothDevice2?>(null)
|
||||
private val _minimumSignalQuality = MutableStateFlow(0.20f)
|
||||
private val _minimumSignalQuality = MutableStateFlow(DeviceProfile.DEFAULT_MINIMUM_SIGNAL_QUALITY)
|
||||
|
||||
// Track initial values for unsaved changes detection
|
||||
private val initialName = MutableStateFlow("")
|
||||
private val initialSelectedModel = MutableStateFlow<PodDevice.Model?>(null)
|
||||
private val initialIdentityKey = MutableStateFlow<IdentityResolvingKey?>(null)
|
||||
private val initialEncryptionKey = MutableStateFlow<ProximityEncryptionKey?>(null)
|
||||
private val initialSelectedDevice = MutableStateFlow<BluetoothDevice2?>(null)
|
||||
private val initialMinimumSignalQuality = MutableStateFlow(DeviceProfile.DEFAULT_MINIMUM_SIGNAL_QUALITY)
|
||||
|
||||
private val _nameError = MutableStateFlow<String?>(null)
|
||||
|
||||
init {
|
||||
if (isEditMode && profileId != null) {
|
||||
loadProfile(profileId)
|
||||
} else {
|
||||
// Prefill with localizable default for new profiles
|
||||
_name.value = context.getString(R.string.profiles_name_default)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +81,43 @@ class DeviceProfileCreationFragmentVM @Inject constructor(
|
||||
.map { it.toList() }
|
||||
.asLiveData()
|
||||
|
||||
private val hasUnsavedChangesFlow = combine(
|
||||
_name, _selectedModel, _identityKey, _encryptionKey, _selectedDevice, _minimumSignalQuality,
|
||||
initialName, initialSelectedModel, initialIdentityKey, initialEncryptionKey, initialSelectedDevice, initialMinimumSignalQuality
|
||||
) { flows ->
|
||||
val currentName = flows[0] as String
|
||||
val currentModel = flows[1] as PodDevice.Model?
|
||||
val currentIdentityKey = flows[2] as IdentityResolvingKey?
|
||||
val currentEncryptionKey = flows[3] as ProximityEncryptionKey?
|
||||
val currentDevice = flows[4] as BluetoothDevice2?
|
||||
val currentSignalQuality = flows[5] as Float
|
||||
|
||||
val initName = flows[6] as String
|
||||
val initModel = flows[7] as PodDevice.Model?
|
||||
val initIdentityKey = flows[8] as IdentityResolvingKey?
|
||||
val initEncryptionKey = flows[9] as ProximityEncryptionKey?
|
||||
val initDevice = flows[10] as BluetoothDevice2?
|
||||
val initSignalQuality = flows[11] as Float
|
||||
|
||||
if (isEditMode) {
|
||||
// For edit mode, check if any current values differ from initial
|
||||
currentName != initName ||
|
||||
currentModel != initModel ||
|
||||
currentIdentityKey != initIdentityKey ||
|
||||
currentEncryptionKey != initEncryptionKey ||
|
||||
currentDevice?.address != initDevice?.address ||
|
||||
currentSignalQuality != initSignalQuality
|
||||
} else {
|
||||
// For create mode, check if any values have been entered
|
||||
currentName.isNotBlank() ||
|
||||
currentModel != null ||
|
||||
currentIdentityKey != null ||
|
||||
currentEncryptionKey != null ||
|
||||
currentDevice != null ||
|
||||
currentSignalQuality != DeviceProfile.DEFAULT_MINIMUM_SIGNAL_QUALITY
|
||||
}
|
||||
}
|
||||
|
||||
private val isFormValid = combine(
|
||||
_name,
|
||||
_selectedModel,
|
||||
@@ -74,7 +128,32 @@ class DeviceProfileCreationFragmentVM @Inject constructor(
|
||||
nameError == null
|
||||
}
|
||||
|
||||
val canSave: LiveData<Boolean> = isFormValid.asLiveData()
|
||||
val canSave: LiveData<Boolean> = combine(
|
||||
isFormValid,
|
||||
hasUnsavedChangesFlow
|
||||
) { valid, hasChanges ->
|
||||
valid && hasChanges
|
||||
}.asLiveData()
|
||||
|
||||
fun hasUnsavedChanges(): Boolean {
|
||||
return if (isEditMode) {
|
||||
// For edit mode, check if any current values differ from initial
|
||||
_name.value != initialName.value ||
|
||||
_selectedModel.value != initialSelectedModel.value ||
|
||||
_identityKey.value != initialIdentityKey.value ||
|
||||
_encryptionKey.value != initialEncryptionKey.value ||
|
||||
_selectedDevice.value?.address != initialSelectedDevice.value?.address ||
|
||||
_minimumSignalQuality.value != initialMinimumSignalQuality.value
|
||||
} else {
|
||||
// For create mode, check if any values have been entered
|
||||
_name.value.isNotBlank() ||
|
||||
_selectedModel.value != null ||
|
||||
_identityKey.value != null ||
|
||||
_encryptionKey.value != null ||
|
||||
_selectedDevice.value != null ||
|
||||
_minimumSignalQuality.value != DeviceProfile.DEFAULT_MINIMUM_SIGNAL_QUALITY
|
||||
}
|
||||
}
|
||||
|
||||
fun updateName(name: String) {
|
||||
_name.value = name
|
||||
@@ -112,13 +191,39 @@ class DeviceProfileCreationFragmentVM @Inject constructor(
|
||||
val profiles = deviceProfilesRepo.profiles.first()
|
||||
val profile = profiles.find { it.id == profileId }
|
||||
if (profile != null) {
|
||||
// Set current values
|
||||
_name.value = profile.label
|
||||
_selectedModel.value = profile.model
|
||||
_minimumSignalQuality.value = profile.minimumSignalQuality ?: 0.20f
|
||||
_minimumSignalQuality.value = profile.minimumSignalQuality ?: DeviceProfile.DEFAULT_MINIMUM_SIGNAL_QUALITY
|
||||
|
||||
if (profile is AppleDeviceProfile) {
|
||||
_identityKey.value = profile.identityKey
|
||||
_encryptionKey.value = profile.encryptionKey
|
||||
|
||||
// Restore selected device if address is available
|
||||
profile.address?.let { address ->
|
||||
launch {
|
||||
try {
|
||||
val bondedDevices = bluetoothManager.bondedDevices().first()
|
||||
val matchingDevice = bondedDevices.find { it.address == address }
|
||||
_selectedDevice.value = matchingDevice
|
||||
initialSelectedDevice.value = matchingDevice
|
||||
log(TAG) { "Restored selected device: ${matchingDevice?.name} ($address)" }
|
||||
} catch (e: Exception) {
|
||||
log(TAG) { "Failed to restore selected device: $e" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set initial values for change tracking
|
||||
initialName.value = profile.label
|
||||
initialSelectedModel.value = profile.model
|
||||
initialMinimumSignalQuality.value = profile.minimumSignalQuality ?: DeviceProfile.DEFAULT_MINIMUM_SIGNAL_QUALITY
|
||||
|
||||
if (profile is AppleDeviceProfile) {
|
||||
initialIdentityKey.value = profile.identityKey
|
||||
initialEncryptionKey.value = profile.encryptionKey
|
||||
}
|
||||
|
||||
log(TAG) { "Profile loaded: ${profile.label}" }
|
||||
@@ -159,7 +264,8 @@ class DeviceProfileCreationFragmentVM @Inject constructor(
|
||||
model = model,
|
||||
minimumSignalQuality = _minimumSignalQuality.value,
|
||||
identityKey = _identityKey.value,
|
||||
encryptionKey = _encryptionKey.value
|
||||
encryptionKey = _encryptionKey.value,
|
||||
address = _selectedDevice.value?.address
|
||||
)
|
||||
|
||||
if (isEditMode) {
|
||||
@@ -194,6 +300,16 @@ class DeviceProfileCreationFragmentVM @Inject constructor(
|
||||
|
||||
fun onBackPressed() {
|
||||
log(TAG) { "onBackPressed()" }
|
||||
if (hasUnsavedChanges()) {
|
||||
// Let the fragment handle the confirmation dialog
|
||||
// The fragment will call either discardChanges() or saveProfile()
|
||||
} else {
|
||||
popBackStack()
|
||||
}
|
||||
}
|
||||
|
||||
fun discardChanges() {
|
||||
log(TAG) { "discardChanges()" }
|
||||
popBackStack()
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import eu.darken.capod.common.uix.PreferenceFragment3
|
||||
import eu.darken.capod.common.upgrade.UpgradeRepo
|
||||
import eu.darken.capod.main.core.GeneralSettings
|
||||
import eu.darken.capod.main.core.MonitorMode
|
||||
import eu.darken.capod.main.ui.settings.general.DeviceSelectionDialogFactory
|
||||
import eu.darken.capod.reaction.core.ReactionSettings
|
||||
import eu.darken.capod.reaction.core.autoconnect.AutoConnectCondition
|
||||
import javax.inject.Inject
|
||||
@@ -62,21 +61,10 @@ class ReactionSettingsFragment : PreferenceFragment3() {
|
||||
return true
|
||||
} else if (preference.key == reactionSettings.autoConnect.key) {
|
||||
preference as TwoStatePreference
|
||||
|
||||
if (!isPro) {
|
||||
upgradeRepo.launchBillingFlow(requireActivity())
|
||||
preference.isChecked = false
|
||||
return true
|
||||
} else if (generalSettings.mainDeviceAddress.value == null) {
|
||||
DeviceSelectionDialogFactory(requireContext()).create(
|
||||
devices = bondedDevices,
|
||||
current = bondedDevices.firstOrNull { it.address == generalSettings.mainDeviceAddress.value }
|
||||
) { selected ->
|
||||
generalSettings.mainDeviceAddress.value = selected?.address
|
||||
if (selected != null) preference.isChecked = true
|
||||
}.show()
|
||||
preference.isChecked = false
|
||||
return true
|
||||
}
|
||||
} else if (preference.key == reactionSettings.showPopUpOnCaseOpen.key && !isPro) {
|
||||
preference as TwoStatePreference
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
<TextView
|
||||
android:id="@+id/device_name"
|
||||
android:layout_width="match_parent"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?textAppearanceSubtitle1"
|
||||
android:textStyle="bold"
|
||||
@@ -52,15 +54,22 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drag_handle"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/device_profiles_drag_handle_description"
|
||||
android:src="@drawable/ic_baseline_drag_handle_24"
|
||||
android:alpha="0.6" />
|
||||
<FrameLayout
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginStart="8dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drag_handle"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/profiles_drag_handle_description"
|
||||
android:src="@drawable/ic_baseline_drag_handle_24"
|
||||
android:alpha="0.6" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/device_profiles_empty_title"
|
||||
android:text="@string/profiles_empty_title"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -32,7 +32,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="@string/device_profiles_empty_description"
|
||||
android:text="@string/profiles_empty_description"
|
||||
app:layout_constraintBottom_toTopOf="@id/add_profile_action"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
@@ -44,7 +44,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:text="@string/device_profiles_add_action"
|
||||
android:text="@string/profiles_add_action"
|
||||
app:icon="@drawable/ic_baseline_add_24"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
@@ -15,10 +15,11 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:menu="@menu/device_profile_creation_menu"
|
||||
app:navigationIcon="@drawable/ic_baseline_arrow_back_24"
|
||||
app:title="@string/device_profiles_create_title"
|
||||
app:title="@string/profiles_create_title"
|
||||
app:titleMarginStart="16dp" />
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scroll_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
@@ -46,21 +47,35 @@
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/device_profiles_basic_info_title"
|
||||
android:textAppearance="?attr/textAppearanceSubtitle1"
|
||||
android:textStyle="bold" />
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:src="@drawable/ic_baseline_settings_24"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/profiles_basic_info_title"
|
||||
style="@style/TextAppearance.Material3.TitleMedium" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:text="@string/device_profiles_basic_info_description"
|
||||
android:textAppearance="?attr/textAppearanceCaption"
|
||||
android:textColor="?android:attr/textColorTertiary" />
|
||||
android:text="@string/profiles_basic_info_description"
|
||||
style="@style/TextAppearance.Material3.BodySmall" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/name_input_layout"
|
||||
@@ -68,7 +83,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:hint="@string/device_profiles_name_label">
|
||||
android:hint="@string/profiles_name_label">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/name_input"
|
||||
@@ -85,7 +100,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:hint="@string/device_profiles_model_label">
|
||||
android:hint="@string/profiles_model_label">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/model_input"
|
||||
@@ -102,7 +117,7 @@
|
||||
style="@style/Widget.Material3.TextInputLayout.FilledBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/device_profiles_paired_device_label">
|
||||
android:hint="@string/profiles_paired_device_label">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/device_input"
|
||||
@@ -132,30 +147,44 @@
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:src="@drawable/ic_baseline_signal_cellular_alt_24"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/profiles_signal_quality_title"
|
||||
style="@style/TextAppearance.Material3.TitleMedium" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/device_profiles_signal_quality_title"
|
||||
android:textAppearance="?attr/textAppearanceSubtitle1"
|
||||
android:textStyle="bold" />
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/profiles_signal_quality_description"
|
||||
style="@style/TextAppearance.Material3.BodySmall" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/signal_quality_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="20%"
|
||||
android:textAppearance="?attr/textAppearanceBody2"
|
||||
android:textColor="?android:attr/textColorSecondary" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:text="@string/device_profiles_signal_quality_description"
|
||||
android:textAppearance="?attr/textAppearanceCaption"
|
||||
android:textColor="?android:attr/textColorTertiary" />
|
||||
android:layout_marginBottom="8dp"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:textStyle="bold"
|
||||
android:gravity="center" />
|
||||
|
||||
<com.google.android.material.slider.Slider
|
||||
android:id="@+id/signal_quality_slider"
|
||||
@@ -190,23 +219,19 @@
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:src="@drawable/ic_key_24"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/settings_maindevice_identitykey_label"
|
||||
android:textAppearance="?attr/textAppearanceSubtitle1"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/identity_key_guide_button"
|
||||
style="@style/Widget.Material3.Button.TextButton.Icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/general_guide_action"
|
||||
android:textSize="12sp"
|
||||
app:icon="@drawable/ic_baseline_question_mark_24"
|
||||
app:iconSize="16dp" />
|
||||
android:text="@string/profiles_identitykey_label"
|
||||
style="@style/TextAppearance.Material3.TitleMedium" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -215,9 +240,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:text="@string/settings_maindevice_identitykey_explanation"
|
||||
android:textAppearance="?attr/textAppearanceCaption"
|
||||
android:textColor="?android:attr/textColorTertiary" />
|
||||
android:text="@string/profiles_maindevice_identitykey_explanation"
|
||||
style="@style/TextAppearance.Material3.BodySmall" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/identity_key_input_layout"
|
||||
@@ -235,6 +259,18 @@
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/identity_key_guide_button"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton.Icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/general_guide_action"
|
||||
android:textSize="12sp"
|
||||
app:icon="@drawable/ic_baseline_question_mark_24"
|
||||
app:iconSize="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
@@ -259,23 +295,19 @@
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:src="@drawable/ic_key_outline_24"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/settings_maindevice_encryptionkey_label"
|
||||
android:textAppearance="?attr/textAppearanceSubtitle1"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/encryption_key_guide_button"
|
||||
style="@style/Widget.Material3.Button.TextButton.Icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/general_guide_action"
|
||||
android:textSize="12sp"
|
||||
app:icon="@drawable/ic_baseline_question_mark_24"
|
||||
app:iconSize="16dp" />
|
||||
android:text="@string/profiles_maindevice_encryptionkey_label"
|
||||
style="@style/TextAppearance.Material3.TitleMedium" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -284,9 +316,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:text="@string/settings_maindevice_encryptionkey_explanation"
|
||||
android:textAppearance="?attr/textAppearanceCaption"
|
||||
android:textColor="?android:attr/textColorTertiary" />
|
||||
android:text="@string/profiles_maindevice_encryptionkey_explanation"
|
||||
style="@style/TextAppearance.Material3.BodySmall" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/encryption_key_input_layout"
|
||||
@@ -304,6 +335,18 @@
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/encryption_key_guide_button"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton.Icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/general_guide_action"
|
||||
android:textSize="12sp"
|
||||
app:icon="@drawable/ic_baseline_question_mark_24"
|
||||
app:iconSize="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
@@ -35,11 +35,26 @@
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintBottom_toTopOf="@+id/last_seen"
|
||||
android:maxLines="1"
|
||||
app:layout_constraintBottom_toTopOf="@+id/device_type"
|
||||
app:layout_constraintEnd_toStartOf="@id/reception"
|
||||
app:layout_constraintStart_toEndOf="@id/device_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="My headphones" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/device_type"
|
||||
style="@style/TextAppearance.Material3.LabelSmall"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@+id/last_seen"
|
||||
app:layout_constraintEnd_toEndOf="@id/name"
|
||||
app:layout_constraintStart_toStartOf="@id/name"
|
||||
app:layout_constraintTop_toBottomOf="@id/name"
|
||||
tools:text="Apple AirPods Pro" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
@@ -47,10 +62,11 @@
|
||||
style="@style/TextAppearance.Material3.LabelMedium"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/first_seen"
|
||||
app:layout_constraintEnd_toEndOf="@id/name"
|
||||
app:layout_constraintStart_toStartOf="@id/name"
|
||||
app:layout_constraintTop_toBottomOf="@id/name"
|
||||
app:layout_constraintTop_toBottomOf="@id/device_type"
|
||||
app:layout_goneMarginBottom="8dp"
|
||||
tools:text="Last seen: 3s ago" />
|
||||
|
||||
|
||||
@@ -35,24 +35,52 @@
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintBottom_toTopOf="@+id/last_seen"
|
||||
android:maxLines="1"
|
||||
app:layout_constraintBottom_toTopOf="@+id/device_type"
|
||||
app:layout_constraintEnd_toStartOf="@id/reception"
|
||||
app:layout_constraintStart_toEndOf="@id/device_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Apple AirPods Max" />
|
||||
tools:text="My headphones" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/device_type"
|
||||
style="@style/TextAppearance.Material3.LabelSmall"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@+id/last_seen"
|
||||
app:layout_constraintEnd_toEndOf="@id/name"
|
||||
app:layout_constraintStart_toStartOf="@id/name"
|
||||
app:layout_constraintTop_toBottomOf="@id/name"
|
||||
tools:text="Apple AirPods Max"/>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/last_seen"
|
||||
style="@style/TextAppearance.Material3.LabelMedium"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/first_seen"
|
||||
app:layout_constraintEnd_toEndOf="@id/name"
|
||||
app:layout_constraintStart_toStartOf="@id/name"
|
||||
app:layout_constraintTop_toBottomOf="@id/device_type"
|
||||
app:layout_goneMarginBottom="8dp"
|
||||
tools:text="Last seen: 3s ago" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/first_seen"
|
||||
style="@style/TextAppearance.Material3.LabelMedium"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/barrier_top"
|
||||
app:layout_constraintEnd_toEndOf="@id/name"
|
||||
app:layout_constraintStart_toStartOf="@id/name"
|
||||
app:layout_constraintTop_toBottomOf="@id/name"
|
||||
tools:text="3s ago" />
|
||||
app:layout_constraintTop_toBottomOf="@id/last_seen"
|
||||
tools:text="First seen: 3s ago" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/reception"
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
<item
|
||||
android:id="@+id/action_delete"
|
||||
android:icon="@drawable/ic_baseline_delete_24"
|
||||
android:title="@string/device_profiles_delete_action"
|
||||
android:title="@string/profiles_delete_action"
|
||||
android:visible="false"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_save"
|
||||
android:icon="@drawable/ic_baseline_save_24"
|
||||
android:title="@string/device_profiles_save_action"
|
||||
android:title="@string/profiles_save_action"
|
||||
app:showAsAction="always" />
|
||||
|
||||
</menu>
|
||||
@@ -57,7 +57,7 @@
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/deviceProfileCreationFragment"
|
||||
android:name="eu.darken.capod.profiles.ui.DeviceProfileCreationFragment"
|
||||
android:name="eu.darken.capod.profiles.ui.creation.DeviceProfileCreationFragment"
|
||||
android:label="DeviceProfileCreationFragment"
|
||||
tools:layout="@layout/device_profile_creation_fragment">
|
||||
<argument
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Geen</string>
|
||||
<string name="settings_maindevice_model_label">Jou toestelmodel</string>
|
||||
<string name="settings_maindevice_model_description">Die model van jou hoof toestel. Dit help die toepassing om jou toestel te herken wanneer dit nie aan jou foon gekoppel is nie.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Identiteitsleutel</string>
|
||||
<string name="settings_maindevice_identitykey_description">Jou toestel se Identiteit Oplossingsleutel (IRK), wat CAPod help om dit tussen nabygeleë toestelle te identifiseer.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods verander gereeld hul Bluetooth-adres vir privaatheid. Die IRK help CAPod om jou toestel te herken. Jy benodig eenmalige toegang tot \'n MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Enkripsiesleutel</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Jou toestel se enkripsiesleutel, wat CAPod toelaat om gedetailleerde statusinligting te herwin.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods stuur \'n statusboodskap, waarvan \'n deel geïnkripteer is. Die enkripsiesleutel laat CAPod toe om die volle boodskap te dekripteer. Jy benodig eenmalige toegang tot \'n MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Identiteitsleutel</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Jou toestel se Identiteit Oplossingsleutel (IRK), wat CAPod help om dit tussen nabygeleë toestelle te identifiseer.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods verander gereeld hul Bluetooth-adres vir privaatheid. Die IRK help CAPod om jou toestel te herken. Jy benodig eenmalige toegang tot \'n MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Enkripsiesleutel</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Jou toestel se enkripsiesleutel, wat CAPod toelaat om gedetailleerde statusinligting te herwin.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods stuur \'n statusboodskap, waarvan \'n deel geïnkripteer is. Die enkripsiesleutel laat CAPod toe om die volle boodskap te dekripteer. Jy benodig eenmalige toegang tot \'n MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Een-pod-modus</string>
|
||||
<string name="settings_onepod_mode_description">Die dra van albei pods is nie nodig nie, die dra van \'n enkele pod is voldoende om reaksies te aktiveer.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">ምንም</string>
|
||||
<string name="settings_maindevice_model_label">የመሳሪያዎ ሞዴል</string>
|
||||
<string name="settings_maindevice_model_description">የዋና መሳሪያዎ ሞዴል። ይህ መተግበሪያው ከስልክዎ ጋር ባልተገናኘ ጊዜ መሳሪያዎን እንዲያውቅ ይረዳል።</string>
|
||||
<string name="settings_maindevice_identitykey_label">የማንነት ቁልፍ</string>
|
||||
<string name="settings_maindevice_identitykey_description">የመሳሪያዎ የማንነት መፍቻ ቁልፍ (IRK)፣ ይህም CAPod በአቅራቢያ ካሉ መሳሪያዎች መካከል እንዲለየው ይረዳል።</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">ኤርፖዶች ለግላዊነት ሲሉ የብሉቱዝ አድራሻቸውን በተደጋጋሚ ይለውጣሉ። IRK CAPod መሳሪያዎን እንዲያውቅ ይረዳል። የአንድ ጊዜ የማክቡክ መዳረሻ ያስፈልግዎታል።</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">የምስጠራ ቁልፍ</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">የመሳሪያዎ የምስጠራ ቁልፍ፣ ይህም CAPod ዝርዝር የሁኔታ መረጃ እንዲያገኝ ያስችለዋል።</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">ኤርፖዶች የሁኔታ መልእክት ይልካሉ፣ ከፊሉ የተመሰጠረ ነው። የምስጠራ ቁልፉ CAPod ሙሉውን መልእክት እንዲፈታ ያስችለዋል። የአንድ ጊዜ የማክቡክ መዳረሻ ያስፈልግዎታል።</string>
|
||||
<string name="profiles_identitykey_label">የማንነት ቁልፍ</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">የመሳሪያዎ የማንነት መፍቻ ቁልፍ (IRK)፣ ይህም CAPod በአቅራቢያ ካሉ መሳሪያዎች መካከል እንዲለየው ይረዳል።</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">ኤርፖዶች ለግላዊነት ሲሉ የብሉቱዝ አድራሻቸውን በተደጋጋሚ ይለውጣሉ። IRK CAPod መሳሪያዎን እንዲያውቅ ይረዳል። የአንድ ጊዜ የማክቡክ መዳረሻ ያስፈልግዎታል።</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">የምስጠራ ቁልፍ</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">የመሳሪያዎ የምስጠራ ቁልፍ፣ ይህም CAPod ዝርዝር የሁኔታ መረጃ እንዲያገኝ ያስችለዋል።</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">ኤርፖዶች የሁኔታ መልእክት ይልካሉ፣ ከፊሉ የተመሰጠረ ነው። የምስጠራ ቁልፉ CAPod ሙሉውን መልእክት እንዲፈታ ያስችለዋል። የአንድ ጊዜ የማክቡክ መዳረሻ ያስፈልግዎታል።</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">ባለአንድ ፖድ ሁነታ</string>
|
||||
<string name="settings_onepod_mode_description">ሁለቱንም ፖዶች መልበስ አያስፈልግም፣ አንድ ነጠላ ፖድ መልበስ ግብረመልሶችን ለማስነሳት በቂ ነው።</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">لا شيء</string>
|
||||
<string name="settings_maindevice_model_label">طراز جهازك</string>
|
||||
<string name="settings_maindevice_model_description">طراز جهازك الرئيسي. يساعد هذا التطبيق في التعرف على جهازك عندما لا يكون متصلاً بهاتفك.</string>
|
||||
<string name="settings_maindevice_identitykey_label">مفتاح الهوية</string>
|
||||
<string name="settings_maindevice_identitykey_description">مفتاح حل هوية جهازك (IRK)، والذي يساعد CAPod في التعرف عليه بين الأجهزة القريبة.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">تغير AirPods عنوان البلوتوث الخاص بها بشكل متكرر للخصوصية. يساعد IRK CAPod في التعرف على جهازك. تحتاج إلى الوصول لمرة واحدة إلى جهاز MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">مفتاح التشفير</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">مفتاح تشفير جهازك، والذي يسمح لـ CAPod باسترداد معلومات الحالة التفصيلية.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">ترسل AirPods رسالة حالة، جزء منها مشفر. يسمح مفتاح التشفير لـ CAPod بفك تشفير الرسالة الكاملة. تحتاج إلى الوصول لمرة واحدة إلى جهاز MacBook.</string>
|
||||
<string name="profiles_identitykey_label">مفتاح الهوية</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">مفتاح حل هوية جهازك (IRK)، والذي يساعد CAPod في التعرف عليه بين الأجهزة القريبة.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">تغير AirPods عنوان البلوتوث الخاص بها بشكل متكرر للخصوصية. يساعد IRK CAPod في التعرف على جهازك. تحتاج إلى الوصول لمرة واحدة إلى جهاز MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">مفتاح التشفير</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">مفتاح تشفير جهازك، والذي يسمح لـ CAPod باسترداد معلومات الحالة التفصيلية.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">ترسل AirPods رسالة حالة، جزء منها مشفر. يسمح مفتاح التشفير لـ CAPod بفك تشفير الرسالة الكاملة. تحتاج إلى الوصول لمرة واحدة إلى جهاز MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">وضع سماعة واحدة</string>
|
||||
<string name="settings_onepod_mode_description">ليس مطلوبًا ارتداء كلتا السماعتين، فارتداء سماعة واحدة كافٍ لتشغيل ردود الفعل.</string>
|
||||
<string name="settings_popup_caseopen_label">إظهار نافذة منبثقة للعلبة</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<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ızın modeli. Bu, tətbiqin telefonunuza qoşulmadığı zaman cihazınızı tanımasına kömək edir.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Kimlik Açarı</string>
|
||||
<string name="settings_maindevice_identitykey_description">Cihazınızın Kimlik Həlletmə Açarı (IRK), CAPod-un onu yaxınlıqdakı cihazlar arasında tanımasına kömək edir.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods məxfilik üçün Bluetooth ünvanlarını tez-tez dəyişir. IRK CAPod-un cihazınızı tanımasına kömək edir. MacBook-a birdəfəlik girişiniz olmalıdır.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Şifrələmə Açarı</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Cihazınızın şifrələmə açarı, CAPod-un ətraflı status məlumatlarını əldə etməsinə imkan verir.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods status mesajı göndərir, bunun bir hissəsi şifrələnir. Şifrələmə açarı CAPod-un tam mesajı deşifrə etməsinə imkan verir. MacBook-a birdəfəlik girişiniz olmalıdır.</string>
|
||||
<string name="profiles_identitykey_label">Kimlik Açarı</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Cihazınızın Kimlik Həlletmə Açarı (IRK), CAPod-un onu yaxınlıqdakı cihazlar arasında tanımasına kömək edir.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods məxfilik üçün Bluetooth ünvanlarını tez-tez dəyişir. IRK CAPod-un cihazınızı tanımasına kömək edir. MacBook-a birdəfəlik girişiniz olmalıdır.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Şifrələmə Açarı</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Cihazınızın şifrələmə açarı, CAPod-un ətraflı status məlumatlarını əldə etməsinə imkan verir.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods status mesajı göndərir, bunun bir hissəsi şifrələnir. Şifrələmə açarı CAPod-un tam mesajı deşifrə etməsinə imkan verir. MacBook-a birdəfəlik girişiniz olmalıdır.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Tək qulaqlıq rejimi</string>
|
||||
<string name="settings_onepod_mode_description">Hər iki qulaqlığı taxmaq tələb olunmur, reaksiyaları tətikləmək üçün tək bir qulaqlığı taxmaq kifayətdir.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Няма</string>
|
||||
<string name="settings_maindevice_model_label">Мадэль вашай прылады</string>
|
||||
<string name="settings_maindevice_model_description">Мадэль вашай асноўнай прылады. Гэта дапамагае праграме распазнаваць вашу прыладу, калі яна не падключана да вашага тэлефона.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Ключ ідэнтыфікацыі</string>
|
||||
<string name="settings_maindevice_identitykey_description">Ключ вырашэння ідэнтыфікацыі вашай прылады (IRK), які дапамагае CAPod ідэнтыфікаваць яе сярод прылад паблізу.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods часта мяняюць свой адрас Bluetooth у мэтах прыватнасці. IRK дапамагае CAPod распазнаваць вашу прыладу. Вам патрэбен аднаразовы доступ да MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Ключ шыфравання</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Ключ шыфравання вашай прылады, які дазваляе CAPod атрымліваць падрабязную інфармацыю пра стан.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods адпраўляюць паведамленне пра стан, частка якога зашыфравана. Ключ шыфравання дазваляe CAPod расшыфраваць поўнае паведамленне. Вам патрэбен аднаразовы доступ да MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Ключ ідэнтыфікацыі</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Ключ вырашэння ідэнтыфікацыі вашай прылады (IRK), які дапамагае CAPod ідэнтыфікаваць яе сярод прылад паблізу.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods часта мяняюць свой адрас Bluetooth у мэтах прыватнасці. IRK дапамагае CAPod распазнаваць вашу прыладу. Вам патрэбен аднаразовы доступ да MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Ключ шыфравання</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Ключ шыфравання вашай прылады, які дазваляе CAPod атрымліваць падрабязную інфармацыю пра стан.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods адпраўляюць паведамленне пра стан, частка якога зашыфравана. Ключ шыфравання дазваляe CAPod расшыфраваць поўнае паведамленне. Вам патрэбен аднаразовы доступ да MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Рэжым аднаго навушніка</string>
|
||||
<string name="settings_onepod_mode_description">Нашэнне абодвух навушнікаў не патрабуецца, нашэння аднаго навушніка дастаткова для запуску рэакцый.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Няма</string>
|
||||
<string name="settings_maindevice_model_label">Модел на вашето устройство</string>
|
||||
<string name="settings_maindevice_model_description">Моделът на вашето основно устройство. Това помага на приложението да разпознае вашето устройство, когато не е свързано с телефона ви.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Идентификационен ключ</string>
|
||||
<string name="settings_maindevice_identitykey_description">Идентификационният ключ за разрешаване (IRK) на вашето устройство, който помага на CAPod да го идентифицира сред близките устройства.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods често променят своя Bluetooth адрес от съображения за поверителност. IRK помага на CAPod да разпознае вашето устройство. Нуждаете се от еднократен достъп до MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Ключ за шифроване</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Ключът за шифроване на вашето устройство, който позволява на CAPod да извлича подробна информация за състоянието.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods изпращат съобщение за състоянието, част от което е шифровано. Ключът за шифроване позволява на CAPod да дешифрира пълното съобщение. Нуждаете се от еднократен достъп до MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Идентификационен ключ</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Идентификационният ключ за разрешаване (IRK) на вашето устройство, който помага на CAPod да го идентифицира сред близките устройства.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods често променят своя Bluetooth адрес от съображения за поверителност. IRK помага на CAPod да разпознае вашето устройство. Нуждаете се от еднократен достъп до MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Ключ за шифроване</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Ключът за шифроване на вашето устройство, който позволява на CAPod да извлича подробна информация за състоянието.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods изпращат съобщение за състоянието, част от което е шифровано. Ключът за шифроване позволява на CAPod да дешифрира пълното съобщение. Нуждаете се от еднократен достъп до MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Режим с една слушалка</string>
|
||||
<string name="settings_onepod_mode_description">Носенето на двете слушалки не е необходимо, носенето на една слушалка е достатъчно за задействане на реакции.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">কোনোটিই নয়</string>
|
||||
<string name="settings_maindevice_model_label">আপনার ডিভাইসের মডেল</string>
|
||||
<string name="settings_maindevice_model_description">আপনার প্রধান ডিভাইসের মডেল। এটি অ্যাপটিকে আপনার ডিভাইস চিনতে সাহায্য করে যখন এটি আপনার ফোনের সাথে সংযুক্ত না থাকে।</string>
|
||||
<string name="settings_maindevice_identitykey_label">পরিচয় চাবি</string>
|
||||
<string name="settings_maindevice_identitykey_description">আপনার ডিভাইসের আইডেন্টিটি রিজলভিং কী (IRK), যা CAPod-কে কাছাকাছি ডিভাইসগুলির মধ্যে এটি সনাক্ত করতে সাহায্য করে।</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods গোপনীয়তার জন্য প্রায়শই তাদের ব্লুটুথ ঠিকানা পরিবর্তন করে। IRK CAPod-কে আপনার ডিভাইস চিনতে সাহায্য করে। আপনার একটি MacBook-এ এককালীন অ্যাক্সেস প্রয়োজন।</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">এনক্রিপশন চাবি</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">আপনার ডিভাইসের এনক্রিপশন চাবি, যা CAPod-কে বিস্তারিত স্ট্যাটাস তথ্য পুনরুদ্ধার করতে দেয়।</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods একটি স্ট্যাটাস বার্তা পাঠায়, যার একটি অংশ এনক্রিপ্ট করা থাকে। এনক্রিপশন চাবি CAPod-কে সম্পূর্ণ বার্তা ডিক্রিপ্ট করতে দেয়। আপনার একটি MacBook-এ এককালীন অ্যাক্সেস প্রয়োজন।</string>
|
||||
<string name="profiles_identitykey_label">পরিচয় চাবি</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">আপনার ডিভাইসের আইডেন্টিটি রিজলভিং কী (IRK), যা CAPod-কে কাছাকাছি ডিভাইসগুলির মধ্যে এটি সনাক্ত করতে সাহায্য করে।</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods গোপনীয়তার জন্য প্রায়শই তাদের ব্লুটুথ ঠিকানা পরিবর্তন করে। IRK CAPod-কে আপনার ডিভাইস চিনতে সাহায্য করে। আপনার একটি MacBook-এ এককালীন অ্যাক্সেস প্রয়োজন।</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">এনক্রিপশন চাবি</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">আপনার ডিভাইসের এনক্রিপশন চাবি, যা CAPod-কে বিস্তারিত স্ট্যাটাস তথ্য পুনরুদ্ধার করতে দেয়।</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods একটি স্ট্যাটাস বার্তা পাঠায়, যার একটি অংশ এনক্রিপ্ট করা থাকে। এনক্রিপশন চাবি CAPod-কে সম্পূর্ণ বার্তা ডিক্রিপ্ট করতে দেয়। আপনার একটি MacBook-এ এককালীন অ্যাক্সেস প্রয়োজন।</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">একক পড মোড</string>
|
||||
<string name="settings_onepod_mode_description">দুটি পড পরিধান করা আবশ্যক নয়, প্রতিক্রিয়া ট্রিগার করার জন্য একটি একক পড পরিধান করাই যথেষ্ট।</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<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_maindevice_identitykey_label">Clau d\'identitat</string>
|
||||
<string name="settings_maindevice_identitykey_description">La clau de resolució d\'identitat (IRK) del dispositiu ajuda al CAPod a identificar-lo entre els dispositius propers.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Els AirPods canvien sovint la seva adreça Bluetooth per motius de privadesa. L\'IRK ajuda al CAPod a reconèixer el vostre dispositiu. Necessiteu accés únic a un MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Clau de xifratge</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">La clau de xifratge del vostre dispositiu permet al CAPod recuperar informació detallada de l\'estat.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Els AirPods envien un missatge d\'estat, part del missatge està xifrat. La clau de xifratge permet que el CAPod desxifri el missatge complet. Necessiteu accés únic a un MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Clau d\'identitat</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">La clau de resolució d\'identitat (IRK) del dispositiu ajuda al CAPod a identificar-lo entre els dispositius propers.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Els AirPods canvien sovint la seva adreça Bluetooth per motius de privadesa. L\'IRK ajuda al CAPod a reconèixer el vostre dispositiu. Necessiteu accés únic a un MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Clau de xifratge</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">La clau de xifratge del vostre dispositiu permet al CAPod recuperar informació detallada de l\'estat.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Els AirPods envien un missatge d\'estat, part del missatge està xifrat. La clau de xifratge permet que el CAPod desxifri el missatge complet. Necessiteu accés únic a un MacBook.</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_label">Mostra la finestra emergent de la funda</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<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_maindevice_identitykey_label">Klíč identity</string>
|
||||
<string name="settings_maindevice_identitykey_description">Klíč identity (IRK) vašeho zařízení, který pomáhá aplikaci CAPod identifikovat jej mezi okolními zařízeními.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods často mění svou Bluetooth adresu pro ochranu soukromí. IRK pomáhá aplikaci CAPod rozpoznat vaše zařízení. Potřebujete jednorázový přístup k MacBooku.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Šifrovací klíč</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Šifrovací klíč vašeho zařízení, který umožňuje aplikaci CAPod získat podrobné informace o stavu.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods odesílají zprávu o stavu, jejíž část je zašifrovaná. Šifrovací klíč umožňuje aplikaci CAPod dešifrovat celou zprávu. Potřebujete jednorázový přístup k MacBooku.</string>
|
||||
<string name="profiles_identitykey_label">Klíč identity</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Klíč identity (IRK) vašeho zařízení, který pomáhá aplikaci CAPod identifikovat jej mezi okolními zařízeními.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods často mění svou Bluetooth adresu pro ochranu soukromí. IRK pomáhá aplikaci CAPod rozpoznat vaše zařízení. Potřebujete jednorázový přístup k MacBooku.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Šifrovací klíč</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Šifrovací klíč vašeho zařízení, který umožňuje aplikaci CAPod získat podrobné informace o stavu.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods odesílají zprávu o stavu, jejíž část je zašifrovaná. Šifrovací klíč umožňuje aplikaci CAPod dešifrovat celou zprávu. Potřebujete jednorázový přístup k MacBooku.</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_label">Zobrazit vyskakovací okno pouzdra</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Ingen</string>
|
||||
<string name="settings_maindevice_model_label">Din enhedsmodel</string>
|
||||
<string name="settings_maindevice_model_description">Modellen af din hovedenhed. Dette hjælper appen med at genkende din enhed, når den ikke er tilsluttet din telefon.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Identitetsnøgle</string>
|
||||
<string name="settings_maindevice_identitykey_description">Din enheds identitetsopløsningsnøgle (IRK), som hjælper CAPod med at identificere den blandt nærliggende enheder.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods ændrer ofte deres Bluetooth-adresse af hensyn til privatlivets fred. IRK\'en hjælper CAPod med at genkende din enhed. Du skal have engangsadgang til en MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Krypteringsnøgle</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Din enheds krypteringsnøgle, som giver CAPod mulighed for at hente detaljerede statusoplysninger.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods sender en statusmeddelelse, hvoraf en del er krypteret. Krypteringsnøglen giver CAPod mulighed for at dekryptere hele meddelelsen. Du skal have engangsadgang til en MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Identitetsnøgle</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Din enheds identitetsopløsningsnøgle (IRK), som hjælper CAPod med at identificere den blandt nærliggende enheder.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods ændrer ofte deres Bluetooth-adresse af hensyn til privatlivets fred. IRK\'en hjælper CAPod med at genkende din enhed. Du skal have engangsadgang til en MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Krypteringsnøgle</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Din enheds krypteringsnøgle, som giver CAPod mulighed for at hente detaljerede statusoplysninger.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods sender en statusmeddelelse, hvoraf en del er krypteret. Krypteringsnøglen giver CAPod mulighed for at dekryptere hele meddelelsen. Du skal have engangsadgang til en MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Enkelt pod-tilstand</string>
|
||||
<string name="settings_onepod_mode_description">Det er ikke påkrævet at bære begge pods, at bære en enkelt pod er tilstrækkeligt til at udløse reaktioner.</string>
|
||||
|
||||
@@ -50,12 +50,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_maindevice_identitykey_label">Identitätsschlüssel</string>
|
||||
<string name="settings_maindevice_identitykey_description">Der Identity Resolving Key (IRK) deines Geräts, der CAPod dabei hilft, es unter Geräten in der Nähe zu identifizieren.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods ändern häufig ihre Bluetooth-Adresse aus Datenschutzgründen. Der IRK hilft CAPod, dein Gerät zu erkennen. Du benötigst einmaligen Zugriff auf ein MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Verschlüsselungsschlüssel</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Der Verschlüsselungsschlüssel deines Geräts, der es CAPod ermöglicht, detaillierte Statusinformationen abzurufen.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods senden eine Statusnachricht, die teilweise verschlüsselt ist. Der Verschlüsselungsschlüssel ermöglicht es CAPod, die vollständige Nachricht zu entschlüsseln. Du benötigst einmaligen Zugriff auf ein MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Identitätsschlüssel</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Der Identity Resolving Key (IRK) deines Geräts, der CAPod dabei hilft, es unter Geräten in der Nähe zu identifizieren.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods ändern häufig ihre Bluetooth-Adresse aus Datenschutzgründen. Der IRK hilft CAPod, dein Gerät zu erkennen. Du benötigst einmaligen Zugriff auf ein MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Verschlüsselungsschlüssel</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Der Verschlüsselungsschlüssel deines Geräts, der es CAPod ermöglicht, detaillierte Statusinformationen abzurufen.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods senden eine Statusnachricht, die teilweise verschlüsselt ist. Der Verschlüsselungsschlüssel ermöglicht es CAPod, die vollständige Nachricht zu entschlüsseln. Du benötigst einmaligen Zugriff auf ein MacBook.</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>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Καμία</string>
|
||||
<string name="settings_maindevice_model_label">Το μοντέλο της συσκευής σας</string>
|
||||
<string name="settings_maindevice_model_description">Το μοντέλο της κύριας συσκευής σας. Αυτό βοηθά την εφαρμογή να αναγνωρίσει τη συσκευή σας όταν δεν είναι συνδεδεμένη στο τηλέφωνό σας.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Κλειδί Ταυτότητας</string>
|
||||
<string name="settings_maindevice_identitykey_description">Το Κλειδί Επίλυσης Ταυτότητας της συσκευής σας (IRK), το οποίο βοηθά το CAPod να την αναγνωρίσει μεταξύ κοντινών συσκευών.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Τα AirPods αλλάζουν συχνά τη διεύθυνση Bluetooth τους για λόγους απορρήτου. Το IRK βοηθά το CAPod να αναγνωρίσει τη συσκευή σας. Χρειάζεστε εφάπαξ πρόσβαση σε MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Κλειδί Κρυπτογράφησης</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Το κλειδί κρυπτογράφησης της συσκευής σας, το οποίο επιτρέπει στο CAPod να ανακτήσει λεπτομερείς πληροφορίες κατάστασης.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Τα AirPods στέλνουν ένα μήνυμα κατάστασης, μέρος του οποίου είναι κρυπτογραφημένο. Το κλειδί κρυπτογράφησης επιτρέπει στο CAPod να αποκρυπτογραφήσει ολόκληρο το μήνυμα. Χρειάζεστε εφάπαξ πρόσβαση σε MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Κλειδί Ταυτότητας</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Το Κλειδί Επίλυσης Ταυτότητας της συσκευής σας (IRK), το οποίο βοηθά το CAPod να την αναγνωρίσει μεταξύ κοντινών συσκευών.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Τα AirPods αλλάζουν συχνά τη διεύθυνση Bluetooth τους για λόγους απορρήτου. Το IRK βοηθά το CAPod να αναγνωρίσει τη συσκευή σας. Χρειάζεστε εφάπαξ πρόσβαση σε MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Κλειδί Κρυπτογράφησης</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Το κλειδί κρυπτογράφησης της συσκευής σας, το οποίο επιτρέπει στο CAPod να ανακτήσει λεπτομερείς πληροφορίες κατάστασης.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Τα AirPods στέλνουν ένα μήνυμα κατάστασης, μέρος του οποίου είναι κρυπτογραφημένο. Το κλειδί κρυπτογράφησης επιτρέπει στο CAPod να αποκρυπτογραφήσει ολόκληρο το μήνυμα. Χρειάζεστε εφάπαξ πρόσβαση σε MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">Λειτουργία ενός pod</string>
|
||||
<string name="settings_onepod_mode_description">Η χρήση και των δύο pod δεν είναι απαραίτητη, η χρήση ενός μόνο pod αρκεί για την ενεργοποίηση αντιδράσεων.</string>
|
||||
<string name="settings_popup_caseopen_label">Εμφάνιση αναδυόμενου παραθύρου θήκης</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Ninguna</string>
|
||||
<string name="settings_maindevice_model_label">Modelo de tu dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">El modelo de tu dispositivo principal. Esto ayuda a la app a reconocer tu dispositivo cuando no está conectado a tu teléfono.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Clave de Identidad</string>
|
||||
<string name="settings_maindevice_identitykey_description">La Clave de Resolución de Identidad (IRK) de tu dispositivo, que ayuda a CAPod a identificarlo entre dispositivos cercanos.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Los AirPods cambian frecuentemente su dirección Bluetooth por privacidad. La IRK ayuda a CAPod a reconocer tu dispositivo. Necesitás acceso único a una MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Clave de Cifrado</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">La clave de cifrado de tu dispositivo, que permite a CAPod recuperar información detallada del estado.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Los AirPods envían un mensaje de estado, parte del cual está cifrado. La clave de cifrado permite a CAPod descifrar el mensaje completo. Necesitás acceso único a una MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Clave de Identidad</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">La Clave de Resolución de Identidad (IRK) de tu dispositivo, que ayuda a CAPod a identificarlo entre dispositivos cercanos.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Los AirPods cambian frecuentemente su dirección Bluetooth por privacidad. La IRK ayuda a CAPod a reconocer tu dispositivo. Necesitás acceso único a una MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Clave de Cifrado</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">La clave de cifrado de tu dispositivo, que permite a CAPod recuperar información detallada del estado.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Los AirPods envían un mensaje de estado, parte del cual está cifrado. La clave de cifrado permite a CAPod descifrar el mensaje completo. Necesitás acceso único a una MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">Modo un auricular</string>
|
||||
<string name="settings_onepod_mode_description">No es necesario usar ambos auriculares, usar uno solo es suficiente para activar reacciones.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar pop-up de estuche</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Ninguna</string>
|
||||
<string name="settings_maindevice_model_label">Modelo de tu dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">El modelo de tu dispositivo principal. Esto ayuda a la aplicación a reconocer tu dispositivo cuando no está conectado a tu teléfono.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Clave de Identidad</string>
|
||||
<string name="settings_maindevice_identitykey_description">La Clave de Resolución de Identidad (IRK) de tu dispositivo, que ayuda a CAPod a identificarlo entre dispositivos cercanos.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Los AirPods cambian frecuentemente su dirección Bluetooth por privacidad. La IRK ayuda a CAPod a reconocer tu dispositivo. Necesitas acceso único a una MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Clave de Cifrado</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">La clave de cifrado de tu dispositivo, que permite a CAPod recuperar información detallada del estado.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Los AirPods envían un mensaje de estado, parte del cual está cifrado. La clave de cifrado permite a CAPod descifrar el mensaje completo. Necesitas acceso único a una MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Clave de Identidad</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">La Clave de Resolución de Identidad (IRK) de tu dispositivo, que ayuda a CAPod a identificarlo entre dispositivos cercanos.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Los AirPods cambian frecuentemente su dirección Bluetooth por privacidad. La IRK ayuda a CAPod a reconocer tu dispositivo. Necesitas acceso único a una MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Clave de Cifrado</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">La clave de cifrado de tu dispositivo, que permite a CAPod recuperar información detallada del estado.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Los AirPods envían un mensaje de estado, parte del cual está cifrado. La clave de cifrado permite a CAPod descifrar el mensaje completo. Necesitas acceso único a una MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">Modo un audífono</string>
|
||||
<string name="settings_onepod_mode_description">No es necesario usar ambos audífonos, usar uno solo es suficiente para activar reacciones.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar pop-up de estuche</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Ninguna</string>
|
||||
<string name="settings_maindevice_model_label">Modelo de tu dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">El modelo de tu dispositivo principal. Esto ayuda a la aplicación a reconocer tu dispositivo cuando no está conectado a tu teléfono.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Clave de identidad</string>
|
||||
<string name="settings_maindevice_identitykey_description">La Clave de Resolución de Identidad (IRK) de tu dispositivo, que ayuda a CAPod a identificarlo entre los dispositivos cercanos.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Los AirPods cambian frecuentemente su dirección Bluetooth por privacidad. El IRK ayuda a CAPod a reconocer tu dispositivo. Necesitas acceso de una sola vez a un MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Clave de cifrado</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">La clave de cifrado de tu dispositivo, que permite a CAPod recuperar información detallada del estado.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Los AirPods envían un mensaje de estado, parte del cual está cifrado. La clave de cifrado permite a CAPod descifrar el mensaje completo. Necesitas acceso de una sola vez a un MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Clave de identidad</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">La Clave de Resolución de Identidad (IRK) de tu dispositivo, que ayuda a CAPod a identificarlo entre los dispositivos cercanos.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Los AirPods cambian frecuentemente su dirección Bluetooth por privacidad. El IRK ayuda a CAPod a reconocer tu dispositivo. Necesitas acceso de una sola vez a un MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Clave de cifrado</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">La clave de cifrado de tu dispositivo, que permite a CAPod recuperar información detallada del estado.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Los AirPods envían un mensaje de estado, parte del cual está cifrado. La clave de cifrado permite a CAPod descifrar el mensaje completo. Necesitas acceso de una sola vez a un MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">Modo un solo auricular</string>
|
||||
<string name="settings_onepod_mode_description">No es necesario llevar ambos auriculares, llevar uno solo es suficiente para activar las reacciones.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar ventana emergente de la funda</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Mitte ükski</string>
|
||||
<string name="settings_maindevice_model_label">Seadme mudel</string>
|
||||
<string name="settings_maindevice_model_description">Põhiseadme mudel. See aitab rakendusel tuvastada teie seadet, kui see pole ühendatud teie telefoniga.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Tuvastamisvõti</string>
|
||||
<string name="settings_maindevice_identitykey_description">Teie seadme tunnuse lahendamisvõti (IRK), mis võimaldab CAPodil tuvastada seda ümberkaudsete seadmete hulgast.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPodsid muudavad privaatsuse tõttu sageli oma Bluetooth aadressi. IRK aitab CAPodil tuvastada teie seadet. Vajate MacBooki jaoks ühekordset juurdepääsukoodi.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Krüpteerimisvõti</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Teie seadme krüpteerimisvõti, mis võimaldab CaPodil saada täpset oleku teavet.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPodsid saadavad olekuteateid, millest osad on krüptitut. Krüpteerimisvõti võimaldab CAPodil kogu teadet lugeda. Vajate MacBooki jaoks ühekordset juurdepääsukoodi.</string>
|
||||
<string name="profiles_identitykey_label">Tuvastamisvõti</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Teie seadme tunnuse lahendamisvõti (IRK), mis võimaldab CAPodil tuvastada seda ümberkaudsete seadmete hulgast.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPodsid muudavad privaatsuse tõttu sageli oma Bluetooth aadressi. IRK aitab CAPodil tuvastada teie seadet. Vajate MacBooki jaoks ühekordset juurdepääsukoodi.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Krüpteerimisvõti</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Teie seadme krüpteerimisvõti, mis võimaldab CaPodil saada täpset oleku teavet.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPodsid saadavad olekuteateid, millest osad on krüptitut. Krüpteerimisvõti võimaldab CAPodil kogu teadet lugeda. Vajate MacBooki jaoks ühekordset juurdepääsukoodi.</string>
|
||||
<string name="settings_onepod_mode_label">Ühe klapi režiim</string>
|
||||
<string name="settings_onepod_mode_description">Mõlema kõrvaklapi kandmine pole kohustuslik, tegevustega alustamiseks piisab ühe kõrvaklapi kandmisest.</string>
|
||||
<string name="settings_popup_caseopen_label">Näita kaane hüpikakent</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Bat ere ez</string>
|
||||
<string name="settings_maindevice_model_label">Zure gailuaren eredua</string>
|
||||
<string name="settings_maindevice_model_description">Zure gailu nagusiaren eredua. Honek aplikazioari zure gailua ezagutzen laguntzen dio zure telefonora konektatuta ez dagoenean.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Identitate Gakoa</string>
|
||||
<string name="settings_maindevice_identitykey_description">Zure gailuaren Identitatea Ebazteko Gakoa (IRK), CAPod-i inguruko gailuen artean identifikatzen laguntzen diona.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPod-ek maiz aldatzen dute Bluetooth helbidea pribatutasunagatik. IRK-k CAPod-i zure gailua ezagutzen laguntzen dio. MacBook batera behin-behineko sarbidea behar duzu.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Enkriptazio Gakoa</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Zure gailuaren enkriptazio gakoa, CAPod-i egoeraren informazio zehatza eskuratzeko aukera ematen diona.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPod-ek egoera mezu bat bidaltzen dute, zati bat enkriptatuta dagoelarik. Enkriptazio gakoak CAPod-i mezu osoa deszifratzeko aukera ematen dio. MacBook batera behin-behineko sarbidea behar duzu.</string>
|
||||
<string name="profiles_identitykey_label">Identitate Gakoa</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Zure gailuaren Identitatea Ebazteko Gakoa (IRK), CAPod-i inguruko gailuen artean identifikatzen laguntzen diona.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPod-ek maiz aldatzen dute Bluetooth helbidea pribatutasunagatik. IRK-k CAPod-i zure gailua ezagutzen laguntzen dio. MacBook batera behin-behineko sarbidea behar duzu.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Enkriptazio Gakoa</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Zure gailuaren enkriptazio gakoa, CAPod-i egoeraren informazio zehatza eskuratzeko aukera ematen diona.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPod-ek egoera mezu bat bidaltzen dute, zati bat enkriptatuta dagoelarik. Enkriptazio gakoak CAPod-i mezu osoa deszifratzeko aukera ematen dio. MacBook batera behin-behineko sarbidea behar duzu.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Pod bakarreko modua</string>
|
||||
<string name="settings_onepod_mode_description">Ez da beharrezkoa bi pod-ak janztea, pod bakar bat janztea nahikoa da erreakzioak abiarazteko.</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">هیچکدام</string>
|
||||
<string name="settings_maindevice_model_label">مدل دستگاه شما</string>
|
||||
<string name="settings_maindevice_model_description">مدل دستگاه اصلی شما. این به برنامه کمک میکند دستگاه شما را هنگامی که به تلفن شما متصل نیست، تشخیص دهد.</string>
|
||||
<string name="settings_maindevice_identitykey_label">کلید شناسایی</string>
|
||||
<string name="settings_maindevice_identitykey_description">کلید حل هویت دستگاه شما (IRK)، که به CAPod کمک میکند آن را در میان دستگاههای اطراف شناسایی کند.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods برای حفظ حریم خصوصی، آدرس بلوتوث خود را مرتباً تغییر میدهند. IRK به CAPod کمک میکند دستگاه شما را تشخیص دهد. شما به دسترسی یکباره به MacBook نیاز دارید.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">کلید رمزگذاری</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">کلید رمزگذاری دستگاه شما، که به CAPod امکان بازیابی اطلاعات دقیق وضعیت را میدهد.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods یک پیام وضعیت ارسال میکنند که بخشی از آن رمزگذاری شده است. کلید رمزگذاری به CAPod امکان میدهد پیام کامل را رمزگشایی کند. شما به دسترسی یکباره به MacBook نیاز دارید.</string>
|
||||
<string name="profiles_identitykey_label">کلید شناسایی</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">کلید حل هویت دستگاه شما (IRK)، که به CAPod کمک میکند آن را در میان دستگاههای اطراف شناسایی کند.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods برای حفظ حریم خصوصی، آدرس بلوتوث خود را مرتباً تغییر میدهند. IRK به CAPod کمک میکند دستگاه شما را تشخیص دهد. شما به دسترسی یکباره به MacBook نیاز دارید.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">کلید رمزگذاری</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">کلید رمزگذاری دستگاه شما، که به CAPod امکان بازیابی اطلاعات دقیق وضعیت را میدهد.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods یک پیام وضعیت ارسال میکنند که بخشی از آن رمزگذاری شده است. کلید رمزگذاری به CAPod امکان میدهد پیام کامل را رمزگشایی کند. شما به دسترسی یکباره به MacBook نیاز دارید.</string>
|
||||
<string name="settings_onepod_mode_label">حالت یک ایرپاد</string>
|
||||
<string name="settings_onepod_mode_description">استفاده از هر دو ایرپاد الزامی نیست، استفاده از یک ایرپاد برای ایجاد واکنش کافی است.</string>
|
||||
<string name="settings_popup_caseopen_label">نمایش پاپآپ کیس</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Ei mitään</string>
|
||||
<string name="settings_maindevice_model_label">Laitteesi malli</string>
|
||||
<string name="settings_maindevice_model_description">Päälaitteesi malli. Tämä auttaa sovellusta tunnistamaan laitteesi, kun se ei ole yhdistetty puhelimeesi.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Tunnisteavain</string>
|
||||
<string name="settings_maindevice_identitykey_description">Laitteesi identiteetinratkaisuavain (IRK), joka auttaa CAPodia tunnistamaan sen lähellä olevien laitteiden joukosta.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPodit vaihtavat usein Bluetooth-osoitettaan yksityisyyden vuoksi. IRK auttaa CAPodia tunnistamaan laitteesi. Tarvitset kertaluonteisen pääsyn MacBookiin.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Salausavain</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Laitteesi salausavain, jonka avulla CAPod voi hakea yksityiskohtaisia tilatietoja.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPodit lähettävät tilaviestin, josta osa on salattu. Salausavain antaa CAPodille mahdollisuuden purkaa koko viestin salauksen. Tarvitset kertaluonteisen pääsyn MacBookiin.</string>
|
||||
<string name="profiles_identitykey_label">Tunnisteavain</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Laitteesi identiteetinratkaisuavain (IRK), joka auttaa CAPodia tunnistamaan sen lähellä olevien laitteiden joukosta.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPodit vaihtavat usein Bluetooth-osoitettaan yksityisyyden vuoksi. IRK auttaa CAPodia tunnistamaan laitteesi. Tarvitset kertaluonteisen pääsyn MacBookiin.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Salausavain</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Laitteesi salausavain, jonka avulla CAPod voi hakea yksityiskohtaisia tilatietoja.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPodit lähettävät tilaviestin, josta osa on salattu. Salausavain antaa CAPodille mahdollisuuden purkaa koko viestin salauksen. Tarvitset kertaluonteisen pääsyn MacBookiin.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Yhden kuulokkeen tila</string>
|
||||
<string name="settings_onepod_mode_description">Molempien kuulokkeiden käyttäminen ei ole pakollista, yhden kuulokkeen käyttäminen riittää reaktioiden laukaisemiseen.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Wala</string>
|
||||
<string name="settings_maindevice_model_label">Modelo ng iyong device</string>
|
||||
<string name="settings_maindevice_model_description">Ang modelo ng iyong pangunahing device. Nakakatulong ito sa app na makilala ang iyong device kapag hindi ito konektado sa iyong telepono.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Identity Key</string>
|
||||
<string name="settings_maindevice_identitykey_description">Ang Identity Resolving Key (IRK) ng iyong device, na tumutulong sa CAPod na matukoy ito sa mga kalapit na device.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Madalas palitan ng AirPods ang kanilang Bluetooth address para sa privacy. Tinutulungan ng IRK ang CAPod na makilala ang iyong device. Kailangan mo ng isang beses na access sa isang MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Encryption Key</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Ang encryption key ng iyong device, na nagpapahintulot sa CAPod na makuha ang detalyadong impormasyon ng status.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Nagpapadala ang AirPods ng status message, na bahagi nito ay naka-encrypt. Pinapayagan ng encryption key ang CAPod na i-decrypt ang buong mensahe. Kailangan mo ng isang beses na access sa isang MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Identity Key</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Ang Identity Resolving Key (IRK) ng iyong device, na tumutulong sa CAPod na matukoy ito sa mga kalapit na device.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Madalas palitan ng AirPods ang kanilang Bluetooth address para sa privacy. Tinutulungan ng IRK ang CAPod na makilala ang iyong device. Kailangan mo ng isang beses na access sa isang MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Encryption Key</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Ang encryption key ng iyong device, na nagpapahintulot sa CAPod na makuha ang detalyadong impormasyon ng status.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Nagpapadala ang AirPods ng status message, na bahagi nito ay naka-encrypt. Pinapayagan ng encryption key ang CAPod na i-decrypt ang buong mensahe. Kailangan mo ng isang beses na access sa isang MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">One pod mode</string>
|
||||
<string name="settings_onepod_mode_description">Hindi kinakailangang suotin ang parehong pods, sapat na ang pagsusuot ng isang pod para mag-trigger ng mga reaksyon.</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<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_maindevice_identitykey_label">Clé d’identité</string>
|
||||
<string name="settings_maindevice_identitykey_description">La clé de résolution d\'identité de votre appareil (CRI/IRK), qui aide CAPod à l\'identifier parmi les appareils proches.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Les AirPods changent fréquemment d’adresse Bluetooth pour des raisons de confidentialité. La CRI aide CAPod à reconnaître votre appareil. Un accès ponctuel à un MacBook est nécessaire.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Clé de chiffrement</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">La clé de chiffrement de votre appareil, qui permet à CAPod de récupérer des renseignements détaillés sur l’état de l’appareil.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Les AirPods envoient un message d’état, dont une partie est chiffrée. La clé de chiffrement permet à CAPod de déchiffrer l’intégralité du message. Un accès ponctuel à un MacBook est nécessaire.</string>
|
||||
<string name="profiles_identitykey_label">Clé d’identité</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">La clé de résolution d\'identité de votre appareil (CRI/IRK), qui aide CAPod à l\'identifier parmi les appareils proches.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Les AirPods changent fréquemment d’adresse Bluetooth pour des raisons de confidentialité. La CRI aide CAPod à reconnaître votre appareil. Un accès ponctuel à un MacBook est nécessaire.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Clé de chiffrement</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">La clé de chiffrement de votre appareil, qui permet à CAPod de récupérer des renseignements détaillés sur l’état de l’appareil.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Les AirPods envoient un message d’état, dont une partie est chiffrée. La clé de chiffrement permet à CAPod de déchiffrer l’intégralité du message. Un accès ponctuel à un MacBook est nécessaire.</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_label">Afficher une fenêtre pour l’étui</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Ningún</string>
|
||||
<string name="settings_maindevice_model_label">Modelo do teu dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">O modelo do teu dispositivo principal. Isto axuda á aplicación a recoñecer o teu dispositivo cando non está conectado ao teu teléfono.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Chave de identidade</string>
|
||||
<string name="settings_maindevice_identitykey_description">A Chave de Resolución de Identidade (IRK) do teu dispositivo, que axuda a CAPod a identificalo entre os dispositivos próximos.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Os AirPods cambian frecuentemente o seu enderezo Bluetooth por privacidade. A IRK axuda a CAPod a recoñecer o teu dispositivo. Necesitas acceso único a un MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Chave de cifrado</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">A chave de cifrado do teu dispositivo, que permite a CAPod recuperar información detallada do estado.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Os AirPods envían unha mensaxe de estado, parte da cal está cifrada. A chave de cifrado permite a CAPod descifrar a mensaxe completa. Necesitas acceso único a un MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Chave de identidade</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">A Chave de Resolución de Identidade (IRK) do teu dispositivo, que axuda a CAPod a identificalo entre os dispositivos próximos.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Os AirPods cambian frecuentemente o seu enderezo Bluetooth por privacidade. A IRK axuda a CAPod a recoñecer o teu dispositivo. Necesitas acceso único a un MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Chave de cifrado</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">A chave de cifrado do teu dispositivo, que permite a CAPod recuperar información detallada do estado.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Os AirPods envían unha mensaxe de estado, parte da cal está cifrada. A chave de cifrado permite a CAPod descifrar a mensaxe completa. Necesitas acceso único a un MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Modo dun só auricular</string>
|
||||
<string name="settings_onepod_mode_description">Non é necesario levar ambos os auriculares, levar un só é suficiente para activar reaccións.</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">कोई नहीं</string>
|
||||
<string name="settings_maindevice_model_label">आपके डिवाइस का मॉडल</string>
|
||||
<string name="settings_maindevice_model_description">आपके मुख्य डिवाइस का मॉडल। यह ऐप को आपके डिवाइस को पहचानने में मदद करता है जब यह आपके फ़ोन से कनेक्ट नहीं होता है।</string>
|
||||
<string name="settings_maindevice_identitykey_label">पहचान कुंजी</string>
|
||||
<string name="settings_maindevice_identitykey_description">आपके डिवाइस की पहचान समाधान कुंजी (IRK), जो CAPod को आस-पास के डिवाइसों के बीच इसे पहचानने में मदद करती है।</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods गोपनीयता के लिए अक्सर अपना ब्लूटूथ पता बदलते हैं। IRK CAPod को आपके डिवाइस को पहचानने में मदद करता है। आपको MacBook तक एकमुश्त पहुंच की आवश्यकता है।</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">एन्क्रिप्शन कुंजी</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">आपके डिवाइस की एन्क्रिप्शन कुंजी, जो CAPod को विस्तृत स्थिति जानकारी पुनर्प्राप्त करने की अनुमति देती है।</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods एक स्थिति संदेश भेजते हैं, जिसका एक हिस्सा एन्क्रिप्ट किया गया है। एन्क्रिप्शन कुंजी CAPod को पूरा संदेश डिक्रिप्ट करने की अनुमति देती है। आपको MacBook तक एकमुश्त पहुंच की आवश्यकता है।</string>
|
||||
<string name="profiles_identitykey_label">पहचान कुंजी</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">आपके डिवाइस की पहचान समाधान कुंजी (IRK), जो CAPod को आस-पास के डिवाइसों के बीच इसे पहचानने में मदद करती है।</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods गोपनीयता के लिए अक्सर अपना ब्लूटूथ पता बदलते हैं। IRK CAPod को आपके डिवाइस को पहचानने में मदद करता है। आपको MacBook तक एकमुश्त पहुंच की आवश्यकता है।</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">एन्क्रिप्शन कुंजी</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">आपके डिवाइस की एन्क्रिप्शन कुंजी, जो CAPod को विस्तृत स्थिति जानकारी पुनर्प्राप्त करने की अनुमति देती है।</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods एक स्थिति संदेश भेजते हैं, जिसका एक हिस्सा एन्क्रिप्ट किया गया है। एन्क्रिप्शन कुंजी CAPod को पूरा संदेश डिक्रिप्ट करने की अनुमति देती है। आपको MacBook तक एकमुश्त पहुंच की आवश्यकता है।</string>
|
||||
<string name="settings_onepod_mode_label">एक पॉड मोड</string>
|
||||
<string name="settings_onepod_mode_description">दोनों पॉड्स पहनना आवश्यक नहीं है, प्रतिक्रियाओं को ट्रिगर करने के लिए एक ही पॉड पहनना पर्याप्त है।</string>
|
||||
<string name="settings_popup_caseopen_label">केस पॉपअप दिखाएं</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Nijedan</string>
|
||||
<string name="settings_maindevice_model_label">Model vašeg uređaja</string>
|
||||
<string name="settings_maindevice_model_description">Model vašeg glavnog uređaja. Ovo pomaže aplikaciji da prepozna vaš uređaj kada nije povezan s vašim telefonom.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Identifikacijski ključ</string>
|
||||
<string name="settings_maindevice_identitykey_description">Identifikacijski ključ za rješavanje (IRK) vašeg uređaja, koji pomaže CAPod-u da ga identificira među obližnjim uređajima.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods često mijenjaju svoju Bluetooth adresu radi privatnosti. IRK pomaže CAPod-u da prepozna vaš uređaj. Potreban vam je jednokratni pristup MacBooku.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Ključ za šifriranje</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Ključ za šifriranje vašeg uređaja, koji omogućuje CAPod-u dohvaćanje detaljnih informacija o statusu.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods šalju poruku o statusu, čiji je dio šifriran. Ključ za šifriranje omogućuje CAPod-u dešifriranje cijele poruke. Potreban vam je jednokratni pristup MacBooku.</string>
|
||||
<string name="profiles_identitykey_label">Identifikacijski ključ</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Identifikacijski ključ za rješavanje (IRK) vašeg uređaja, koji pomaže CAPod-u da ga identificira među obližnjim uređajima.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods često mijenjaju svoju Bluetooth adresu radi privatnosti. IRK pomaže CAPod-u da prepozna vaš uređaj. Potreban vam je jednokratni pristup MacBooku.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Ključ za šifriranje</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Ključ za šifriranje vašeg uređaja, koji omogućuje CAPod-u dohvaćanje detaljnih informacija o statusu.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods šalju poruku o statusu, čiji je dio šifriran. Ključ za šifriranje omogućuje CAPod-u dešifriranje cijele poruke. Potreban vam je jednokratni pristup MacBooku.</string>
|
||||
<string name="settings_onepod_mode_label">Način jedne slušalice</string>
|
||||
<string name="settings_onepod_mode_description">Nošenje obje slušalice nije potrebno, nošenje jedne slušalice dovoljno je za pokretanje reakcija.</string>
|
||||
<string name="settings_popup_caseopen_label">Prikaži skočni prozor kućišta</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Semmi</string>
|
||||
<string name="settings_maindevice_model_label">Az Ön eszközének modellje</string>
|
||||
<string name="settings_maindevice_model_description">A fő eszközöd típusa. Ez segít az alkalmazásnak felismerni az eszközt, amikor az nincs csatlakoztatva a telefonhoz.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Azonosító kulcs</string>
|
||||
<string name="settings_maindevice_identitykey_description">Az eszköz identitásfeloldó kulcsa (IRK), amely segít a CAPodnak azonosítani azt a közeli eszközök között.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Az AirPod-ok adatvédelmi okokból gyakran változtatják a Bluetooth-címüket. Az IRK segít a CAPodnak felismerni az eszközét. Egyszeri hozzáférésre van szüksége egy MacBookhoz.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Titkosítási kulcs</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Az eszköz titkosítási kulcsa, amely lehetővé teszi a CAPod számára a részletes állapotinformációk lekérését.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Az AirPod-ok állapotüzenetet küldenek, amelynek egy része titkosítva van. A titkosítási kulcs lehetővé teszi a CAPod számára a teljes üzenet visszafejtését. Egyszeri hozzáférésre van szüksége egy MacBookhoz.</string>
|
||||
<string name="profiles_identitykey_label">Azonosító kulcs</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Az eszköz identitásfeloldó kulcsa (IRK), amely segít a CAPodnak azonosítani azt a közeli eszközök között.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Az AirPod-ok adatvédelmi okokból gyakran változtatják a Bluetooth-címüket. Az IRK segít a CAPodnak felismerni az eszközét. Egyszeri hozzáférésre van szüksége egy MacBookhoz.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Titkosítási kulcs</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Az eszköz titkosítási kulcsa, amely lehetővé teszi a CAPod számára a részletes állapotinformációk lekérését.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Az AirPod-ok állapotüzenetet küldenek, amelynek egy része titkosítva van. A titkosítási kulcs lehetővé teszi a CAPod számára a teljes üzenet visszafejtését. Egyszeri hozzáférésre van szüksége egy MacBookhoz.</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, egyetlen elegendő a reakciók kiváltásához.</string>
|
||||
<string name="settings_popup_caseopen_label">Előugró ablak a tok kinyitásakor</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Ոչ մեկը</string>
|
||||
<string name="settings_maindevice_model_label">Ձեր սարքի մոդելը</string>
|
||||
<string name="settings_maindevice_model_description">Ձեր հիմնական սարքի մոդելը։ Սա օգնում է հավելվածին ճանաչել ձեր սարքը, երբ այն միացված չէ ձեր հեռախոսին։</string>
|
||||
<string name="settings_maindevice_identitykey_label">Նույնականացման բանալի</string>
|
||||
<string name="settings_maindevice_identitykey_description">Ձեր սարքի Նույնականացման լուծման բանալին (IRK), որն օգնում է CAPod-ին այն նույնականացնել մոտակա սարքերի մեջ։</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods-ները գաղտնիության նկատառումներով հաճախ փոխում են իրենց Bluetooth հասցեն։ IRK-ն օգնում է CAPod-ին ճանաչել ձեր սարքը։ Ձեզ անհրաժեշտ է մեկանգամյա մուտք դեպի MacBook։</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Գաղտնագրման բանալի</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Ձեր սարքի գաղտնագրման բանալին, որը թույլ է տալիս CAPod-ին ստանալ կարգավիճակի մանրամասն տեղեկատվություն։</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods-ները ուղարկում են կարգավիճակի հաղորդագրություն, որի մի մասը գաղտնագրված է։ Գաղտնագրման բանալին թույլ է տալիս CAPod-ին վերծանել ամբողջական հաղորդագրությունը։ Ձեզ անհրաժեշտ է մեկանգամյա մուտք դեպի MacBook։</string>
|
||||
<string name="profiles_identitykey_label">Նույնականացման բանալի</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Ձեր սարքի Նույնականացման լուծման բանալին (IRK), որն օգնում է CAPod-ին այն նույնականացնել մոտակա սարքերի մեջ։</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods-ները գաղտնիության նկատառումներով հաճախ փոխում են իրենց Bluetooth հասցեն։ IRK-ն օգնում է CAPod-ին ճանաչել ձեր սարքը։ Ձեզ անհրաժեշտ է մեկանգամյա մուտք դեպի MacBook։</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Գաղտնագրման բանալի</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Ձեր սարքի գաղտնագրման բանալին, որը թույլ է տալիս CAPod-ին ստանալ կարգավիճակի մանրամասն տեղեկատվություն։</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods-ները ուղարկում են կարգավիճակի հաղորդագրություն, որի մի մասը գաղտնագրված է։ Գաղտնագրման բանալին թույլ է տալիս CAPod-ին վերծանել ամբողջական հաղորդագրությունը։ Ձեզ անհրաժեշտ է մեկանգամյա մուտք դեպի MacBook։</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Մեկ ականջակալի ռեժիմ</string>
|
||||
<string name="settings_onepod_mode_description">Երկու ականջակալներն էլ կրելը պարտադիր չէ, մեկ ականջակալ կրելը բավարար է արձագանքներն ակտիվացնելու համար։</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<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_maindevice_identitykey_label">Kunci Identitas</string>
|
||||
<string name="settings_maindevice_identitykey_description">Kunci Penyelesaian Identitas (IRK) perangkat Anda, yang membantu CAPod mengidentifikasinya di antara perangkat terdekat.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods sering mengubah alamat Bluetooth mereka untuk privasi. IRK membantu CAPod mengenali perangkat Anda. Anda memerlukan akses sekali pakai ke MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Kunci Enkripsi</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Kunci enkripsi perangkat Anda, yang memungkinkan CAPod mengambil informasi status terperinci.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods mengirimkan pesan status, yang sebagian dienkripsi. Kunci enkripsi memungkinkan CAPod mendekripsi pesan lengkap. Anda memerlukan akses sekali pakai ke MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Kunci Identitas</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Kunci Penyelesaian Identitas (IRK) perangkat Anda, yang membantu CAPod mengidentifikasinya di antara perangkat terdekat.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods sering mengubah alamat Bluetooth mereka untuk privasi. IRK membantu CAPod mengenali perangkat Anda. Anda memerlukan akses sekali pakai ke MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Kunci Enkripsi</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Kunci enkripsi perangkat Anda, yang memungkinkan CAPod mengambil informasi status terperinci.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods mengirimkan pesan status, yang sebagian dienkripsi. Kunci enkripsi memungkinkan CAPod mendekripsi pesan lengkap. Anda memerlukan akses sekali pakai ke MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">Mode satu pod</string>
|
||||
<string name="settings_onepod_mode_description">Memakai kedua pod tidak diperlukan, memakai satu pod saja sudah cukup untuk memicu reaksi.</string>
|
||||
<string name="settings_popup_caseopen_label">Tampilkan pop-up casing</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Ekkert</string>
|
||||
<string name="settings_maindevice_model_label">Gerð tækisins þíns</string>
|
||||
<string name="settings_maindevice_model_description">Gerð aðaltækisins þíns. Þetta hjálpar forritinu að þekkja tækið þitt þegar það er ekki tengt símanum þínum.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Auðkennislykill</string>
|
||||
<string name="settings_maindevice_identitykey_description">Auðkennisupplausnarlykill tækisins þíns (IRK), sem hjálpar CAPod að bera kennsl á það meðal nálægra tækja.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods breyta oft Bluetooth heimilisfangi sínu vegna persónuverndar. IRK hjálpar CAPod að þekkja tækið þitt. Þú þarft aðgang að MacBook einu sinni.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Dulkóðunarlykill</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Dulkóðunarlykill tækisins þíns, sem gerir CAPod kleift að sækja nákvæmar stöðuupplýsingar.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods senda stöðuskilaboð, en hluti þeirra er dulkóðaður. Dulkóðunarlykillinn gerir CAPod kleift að afkóða öll skilaboðin. Þú þarft aðgang að MacBook einu sinni.</string>
|
||||
<string name="profiles_identitykey_label">Auðkennislykill</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Auðkennisupplausnarlykill tækisins þíns (IRK), sem hjálpar CAPod að bera kennsl á það meðal nálægra tækja.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods breyta oft Bluetooth heimilisfangi sínu vegna persónuverndar. IRK hjálpar CAPod að þekkja tækið þitt. Þú þarft aðgang að MacBook einu sinni.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Dulkóðunarlykill</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Dulkóðunarlykill tækisins þíns, sem gerir CAPod kleift að sækja nákvæmar stöðuupplýsingar.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods senda stöðuskilaboð, en hluti þeirra er dulkóðaður. Dulkóðunarlykillinn gerir CAPod kleift að afkóða öll skilaboðin. Þú þarft aðgang að MacBook einu sinni.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Eins heyrnartóls stilling</string>
|
||||
<string name="settings_onepod_mode_description">Ekki er krafist þess að nota bæði heyrnartólin, nóg er að nota eitt heyrnartól til að kalla fram viðbrögð.</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">Nessuno</string>
|
||||
<string name="settings_maindevice_model_label">Modello del tuo dispositivo</string>
|
||||
<string name="settings_maindevice_model_description">Il modello del tuo dispositivo principale. Questo aiuta l\'app a riconoscere il tuo dispositivo quando non è connesso al tuo telefono.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Chiave di identità</string>
|
||||
<string name="settings_maindevice_identitykey_description">La Chiave di Risoluzione dell\'Identità (IRK) del tuo dispositivo, che aiuta CAPod a identificarlo tra i dispositivi vicini.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">Gli AirPods cambiano frequentemente il loro indirizzo Bluetooth per motivi di privacy. L\'IRK aiuta CAPod a riconoscere il tuo dispositivo. Hai bisogno di un accesso una tantum a un MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Chiave di crittografia</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">La chiave di crittografia del tuo dispositivo, che consente a CAPod di recuperare informazioni dettagliate sullo stato.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">Gli AirPods inviano un messaggio di stato, parte del quale è crittografato. La chiave di crittografia consente a CAPod di decrittografare l\'intero messaggio. Hai bisogno di un accesso una tantum a un MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Chiave di identità</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">La Chiave di Risoluzione dell\'Identità (IRK) del tuo dispositivo, che aiuta CAPod a identificarlo tra i dispositivi vicini.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">Gli AirPods cambiano frequentemente il loro indirizzo Bluetooth per motivi di privacy. L\'IRK aiuta CAPod a riconoscere il tuo dispositivo. Hai bisogno di un accesso una tantum a un MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Chiave di crittografia</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">La chiave di crittografia del tuo dispositivo, che consente a CAPod di recuperare informazioni dettagliate sullo stato.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">Gli AirPods inviano un messaggio di stato, parte del quale è crittografato. La chiave di crittografia consente a CAPod di decrittografare l\'intero messaggio. Hai bisogno di un accesso una tantum a un MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">Modalità un solo auricolare</string>
|
||||
<string name="settings_onepod_mode_description">Non è necessario indossare entrambi gli auricolari, indossarne uno solo è sufficiente per attivare le reazioni.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostra pop-up custodia</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">אף אחד</string>
|
||||
<string name="settings_maindevice_model_label">דגם המכשיר שלך</string>
|
||||
<string name="settings_maindevice_model_description">הדגם של המכשיר הראשי שלך. זה עוזר לאפליקציה לזהות את המכשיר שלך כשהוא לא מחובר לטלפון שלך.</string>
|
||||
<string name="settings_maindevice_identitykey_label">מפתח מזהה</string>
|
||||
<string name="settings_maindevice_identitykey_description">מפתח זיהוי ההתקן (IRK) של המכשיר שלך, אשר עוזר ל-CAPod לזהות אותו בין התקנים קרובים.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods משנים לעתים קרובות את כתובת ה-Bluetooth שלהן למען פרטיות. כתובת ה-IRK עוזרת ל-CAPod לזהות את המכשיר שלך. תזדקק לגישה חד פעמית ל-MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">מפתח הצפנה</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">מפתח ההצפנה של המכשיר שלך, המאפשר ל-CAPod לאחזר מידע מפורט על המצב.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods שולחים הודעת סטטוס, שחלקה מוצפן. מפתח ההצפנה מאפשר ל-CAPod לפענח את ההודעה המלאה. תזדקק לגישה חד פעמית ל-MacBook.</string>
|
||||
<string name="profiles_identitykey_label">מפתח מזהה</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">מפתח זיהוי ההתקן (IRK) של המכשיר שלך, אשר עוזר ל-CAPod לזהות אותו בין התקנים קרובים.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods משנים לעתים קרובות את כתובת ה-Bluetooth שלהן למען פרטיות. כתובת ה-IRK עוזרת ל-CAPod לזהות את המכשיר שלך. תזדקק לגישה חד פעמית ל-MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">מפתח הצפנה</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">מפתח ההצפנה של המכשיר שלך, המאפשר ל-CAPod לאחזר מידע מפורט על המצב.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods שולחים הודעת סטטוס, שחלקה מוצפן. מפתח ההצפנה מאפשר ל-CAPod לפענח את ההודעה המלאה. תזדקק לגישה חד פעמית ל-MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">מצב אוזניה בודדת</string>
|
||||
<string name="settings_onepod_mode_description">אין צורך לענוד את שני האוזניות, לבישת אוזניה בודדת מספיקה כדי לעורר תגובות.</string>
|
||||
<string name="settings_popup_caseopen_label">הצג חלון קופץ</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">なし</string>
|
||||
<string name="settings_maindevice_model_label">デバイスモデル</string>
|
||||
<string name="settings_maindevice_model_description">メインデバイスのモデル。これにより、アプリは電話に接続されていないときにデバイスを認識できます。</string>
|
||||
<string name="settings_maindevice_identitykey_label">アイデンティティキー</string>
|
||||
<string name="settings_maindevice_identitykey_description">デバイスのアイデンティティ解決キー(IRK)。CAPodが近くのデバイスの中からそれを識別するのに役立ちます。</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPodsはプライバシーのためにBluetoothアドレスを頻繁に変更します。IRKはCAPodがデバイスを認識するのに役立ちます。MacBookへの1回限りのアクセスが必要です。</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">暗号化キー</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">デバイスの暗号化キー。CAPodが詳細なステータス情報を取得できるようにします。</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPodsはステータスメッセージを送信し、その一部は暗号化されています。暗号化キーを使用すると、CAPodは完全なメッセージを復号化できます。MacBookへの1回限りのアクセスが必要です。</string>
|
||||
<string name="profiles_identitykey_label">アイデンティティキー</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">デバイスのアイデンティティ解決キー(IRK)。CAPodが近くのデバイスの中からそれを識別するのに役立ちます。</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPodsはプライバシーのためにBluetoothアドレスを頻繁に変更します。IRKはCAPodがデバイスを認識するのに役立ちます。MacBookへの1回限りのアクセスが必要です。</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">暗号化キー</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">デバイスの暗号化キー。CAPodが詳細なステータス情報を取得できるようにします。</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPodsはステータスメッセージを送信し、その一部は暗号化されています。暗号化キーを使用すると、CAPodは完全なメッセージを復号化できます。MacBookへの1回限りのアクセスが必要です。</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">片耳モード</string>
|
||||
<string name="settings_onepod_mode_description">両方のポッドを装着する必要はありません。リアクションをトリガーするには、片方のポッドを装着するだけで十分です。</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">არცერთი</string>
|
||||
<string name="settings_maindevice_model_label">თქვენი მოწყობილობის მოდელი</string>
|
||||
<string name="settings_maindevice_model_description">თქვენი ძირითადი მოწყობილობის მოდელი. ეს ეხმარება აპლიკაციას თქვენი მოწყობილობის ამოცნობაში, როდესაც ის არ არის დაკავშირებული თქვენს ტელეფონთან.</string>
|
||||
<string name="settings_maindevice_identitykey_label">იდენტურობის გასაღები</string>
|
||||
<string name="settings_maindevice_identitykey_description">თქვენი მოწყობილობის იდენტურობის გადაჭრის გასაღები (IRK), რომელიც ეხმარება CAPod-ს ახლომდებარე მოწყობილობებს შორის მისი იდენტიფიცირებაში.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods-ები კონფიდენციალურობის მიზნით ხშირად იცვლიან Bluetooth მისამართს. IRK ეხმარება CAPod-ს თქვენი მოწყობილობის ამოცნობაში. MacBook-ზე ერთჯერადი წვდომა გჭირდებათ.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">დაშიფვრის გასაღები</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">თქვენი მოწყობილობის დაშიფვრის გასაღები, რომელიც CAPod-ს საშუალებას აძლევს მიიღოს დეტალური სტატუსის ინფორმაცია.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods-ები აგზავნიან სტატუსის შეტყობინებას, რომლის ნაწილი დაშიფრულია. დაშიფვრის გასაღები CAPod-ს საშუალებას აძლევს გაშიფროს სრული შეტყობინება. MacBook-ზე ერთჯერადი წვდომა გჭირდებათ.</string>
|
||||
<string name="profiles_identitykey_label">იდენტურობის გასაღები</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">თქვენი მოწყობილობის იდენტურობის გადაჭრის გასაღები (IRK), რომელიც ეხმარება CAPod-ს ახლომდებარე მოწყობილობებს შორის მისი იდენტიფიცირებაში.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods-ები კონფიდენციალურობის მიზნით ხშირად იცვლიან Bluetooth მისამართს. IRK ეხმარება CAPod-ს თქვენი მოწყობილობის ამოცნობაში. MacBook-ზე ერთჯერადი წვდომა გჭირდებათ.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">დაშიფვრის გასაღები</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">თქვენი მოწყობილობის დაშიფვრის გასაღები, რომელიც CAPod-ს საშუალებას აძლევს მიიღოს დეტალური სტატუსის ინფორმაცია.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods-ები აგზავნიან სტატუსის შეტყობინებას, რომლის ნაწილი დაშიფრულია. დაშიფვრის გასაღები CAPod-ს საშუალებას აძლევს გაშიფროს სრული შეტყობინება. MacBook-ზე ერთჯერადი წვდომა გჭირდებათ.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">ერთი ყურსასმენის რეჟიმი</string>
|
||||
<string name="settings_onepod_mode_description">ორივე ყურსასმენის ტარება არ არის აუცილებელი, ერთი ყურსასმენის ტარება საკმარისია რეაქციების გასააქტიურებლად.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">គ្មាន</string>
|
||||
<string name="settings_maindevice_model_label">ម៉ូដែលឧបករណ៍របស់អ្នក</string>
|
||||
<string name="settings_maindevice_model_description">ម៉ូដែលឧបករណ៍ចម្បងរបស់អ្នក។ វាជួយកម្មវិធីឱ្យស្គាល់ឧបករណ៍របស់អ្នកនៅពេលដែលវាមិនត្រូវបានភ្ជាប់ទៅទូរស័ព្ទរបស់អ្នក។</string>
|
||||
<string name="settings_maindevice_identitykey_label">កូនសោអត្តសញ្ញាណ</string>
|
||||
<string name="settings_maindevice_identitykey_description">កូនសោដោះស្រាយអត្តសញ្ញាណឧបករណ៍របស់អ្នក (IRK) ដែលជួយ CAPod ឱ្យស្គាល់វាក្នុងចំណោមឧបករណ៍នៅក្បែរ។</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods តែងតែផ្លាស់ប្តូរអាសយដ្ឋាន Bluetooth របស់ពួកគេដើម្បីរក្សាភាពឯកជន។ IRK ជួយ CAPod ឱ្យស្គាល់ឧបករណ៍របស់អ្នក។ អ្នកត្រូវការការចូលប្រើ MacBook តែម្តងប៉ុណ្ណោះ។</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">កូនសោអ៊ិនគ្រីប</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">កូនសោអ៊ិនគ្រីបឧបករណ៍របស់អ្នក ដែលអនុញ្ញាតឱ្យ CAPod ទាញយកព័ត៌មានស្ថានភាពលម្អិត។</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods ផ្ញើសារស្ថានភាព ដែលផ្នែកខ្លះត្រូវបានអ៊ិនគ្រីប។ កូនសោអ៊ិនគ្រីបអនុញ្ញាតឱ្យ CAPod ឌិគ្រីបសារពេញលេញ។ អ្នកត្រូវការការចូលប្រើ MacBook តែម្តងប៉ុណ្ណោះ។</string>
|
||||
<string name="profiles_identitykey_label">កូនសោអត្តសញ្ញាណ</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">កូនសោដោះស្រាយអត្តសញ្ញាណឧបករណ៍របស់អ្នក (IRK) ដែលជួយ CAPod ឱ្យស្គាល់វាក្នុងចំណោមឧបករណ៍នៅក្បែរ។</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods តែងតែផ្លាស់ប្តូរអាសយដ្ឋាន Bluetooth របស់ពួកគេដើម្បីរក្សាភាពឯកជន។ IRK ជួយ CAPod ឱ្យស្គាល់ឧបករណ៍របស់អ្នក។ អ្នកត្រូវការការចូលប្រើ MacBook តែម្តងប៉ុណ្ណោះ។</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">កូនសោអ៊ិនគ្រីប</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">កូនសោអ៊ិនគ្រីបឧបករណ៍របស់អ្នក ដែលអនុញ្ញាតឱ្យ CAPod ទាញយកព័ត៌មានស្ថានភាពលម្អិត។</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods ផ្ញើសារស្ថានភាព ដែលផ្នែកខ្លះត្រូវបានអ៊ិនគ្រីប។ កូនសោអ៊ិនគ្រីបអនុញ្ញាតឱ្យ CAPod ឌិគ្រីបសារពេញលេញ។ អ្នកត្រូវការការចូលប្រើ MacBook តែម្តងប៉ុណ្ណោះ។</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">របៀបផតមួយ</string>
|
||||
<string name="settings_onepod_mode_description">មិនតម្រូវឱ្យពាក់ផតទាំងពីរទេ ការពាក់ផតតែមួយគឺគ្រប់គ្រាន់ដើម្បីបង្កឱ្យមានប្រតិកម្ម។</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Tune</string>
|
||||
<string name="settings_maindevice_model_label">Modela amûra we</string>
|
||||
<string name="settings_maindevice_model_description">Modela amûra we ya sereke. Ev alîkariya sepanê dike ku amûra we nas bike dema ku ew bi têlefona we ve ne girêdayî ye.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Mifteya Nasnameyê</string>
|
||||
<string name="settings_maindevice_identitykey_description">Mifteya Çareserkirina Nasnameya (IRK) amûra we, ku alîkariya CAPod dike ku wê di nav amûrên nêz de nas bike.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods ji ber nepenîtiyê pir caran navnîşana xwe ya Bluetooth diguherînin. IRK alîkariya CAPod dike ku amûra we nas bike. Pêdiviya we bi gihîştina yekcarî ya MacBook heye.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Mifteya Şîfrekirinê</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Mifteya şîfrekirina amûra we, ku dihêle CAPod agahdariya rewşa berfireh bistîne.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods peyamek rewşê dişînin, ku beşek jê şîfrekirî ye. Mifteya şîfrekirinê dihêle CAPod peyama tevahî deşîfre bike. Pêdiviya we bi gihîştina yekcarî ya MacBook heye.</string>
|
||||
<string name="profiles_identitykey_label">Mifteya Nasnameyê</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Mifteya Çareserkirina Nasnameya (IRK) amûra we, ku alîkariya CAPod dike ku wê di nav amûrên nêz de nas bike.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods ji ber nepenîtiyê pir caran navnîşana xwe ya Bluetooth diguherînin. IRK alîkariya CAPod dike ku amûra we nas bike. Pêdiviya we bi gihîştina yekcarî ya MacBook heye.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Mifteya Şîfrekirinê</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Mifteya şîfrekirina amûra we, ku dihêle CAPod agahdariya rewşa berfireh bistîne.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods peyamek rewşê dişînin, ku beşek jê şîfrekirî ye. Mifteya şîfrekirinê dihêle CAPod peyama tevahî deşîfre bike. Pêdiviya we bi gihîştina yekcarî ya MacBook heye.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Moda yek pod</string>
|
||||
<string name="settings_onepod_mode_description">Ne hewce ye ku herdu pod werin lixwekirin, lixwekirina podek tenê bes e ku bertekan bide destpêkirin.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">ಯಾವುದೂ ಇಲ್ಲ</string>
|
||||
<string name="settings_maindevice_model_label">ನಿಮ್ಮ ಸಾಧನದ ಮಾದರಿ</string>
|
||||
<string name="settings_maindevice_model_description">ನಿಮ್ಮ ಮುಖ್ಯ ಸಾಧನದ ಮಾದರಿ. ನಿಮ್ಮ ಫೋನ್ಗೆ ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲದಿದ್ದಾಗ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಗುರುತಿಸಲು ಇದು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.</string>
|
||||
<string name="settings_maindevice_identitykey_label">ಗುರುತಿನ ಕೀ</string>
|
||||
<string name="settings_maindevice_identitykey_description">ನಿಮ್ಮ ಸಾಧನದ ಗುರುತಿನ ಪರಿಹಾರ ಕೀ (IRK), ಇದು ಹತ್ತಿರದ ಸಾಧನಗಳ ನಡುವೆ ಅದನ್ನು ಗುರುತಿಸಲು CAPod ಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods ಗೌಪ್ಯತೆಗಾಗಿ ತಮ್ಮ ಬ್ಲೂಟೂತ್ ವಿಳಾಸವನ್ನು ಆಗಾಗ್ಗೆ ಬದಲಾಯಿಸುತ್ತವೆ. IRK CAPod ಗೆ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನಿಮಗೆ MacBook ಗೆ ಒಮ್ಮೆ ಪ್ರವೇಶದ ಅಗತ್ಯವಿದೆ.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀ</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">ನಿಮ್ಮ ಸಾಧನದ ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀ, ಇದು CAPod ಗೆ ವಿವರವಾದ ಸ್ಥಿತಿ ಮಾಹಿತಿಯನ್ನು ಹಿಂಪಡೆಯಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods ಸ್ಥಿತಿ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತವೆ, ಅದರ ಒಂದು ಭಾಗವನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀ CAPod ಗೆ ಪೂರ್ಣ ಸಂದೇಶವನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ನಿಮಗೆ MacBook ಗೆ ಒಮ್ಮೆ ಪ್ರವೇಶದ ಅಗತ್ಯವಿದೆ.</string>
|
||||
<string name="profiles_identitykey_label">ಗುರುತಿನ ಕೀ</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">ನಿಮ್ಮ ಸಾಧನದ ಗುರುತಿನ ಪರಿಹಾರ ಕೀ (IRK), ಇದು ಹತ್ತಿರದ ಸಾಧನಗಳ ನಡುವೆ ಅದನ್ನು ಗುರುತಿಸಲು CAPod ಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods ಗೌಪ್ಯತೆಗಾಗಿ ತಮ್ಮ ಬ್ಲೂಟೂತ್ ವಿಳಾಸವನ್ನು ಆಗಾಗ್ಗೆ ಬದಲಾಯಿಸುತ್ತವೆ. IRK CAPod ಗೆ ನಿಮ್ಮ ಸಾಧನವನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನಿಮಗೆ MacBook ಗೆ ಒಮ್ಮೆ ಪ್ರವೇಶದ ಅಗತ್ಯವಿದೆ.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀ</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">ನಿಮ್ಮ ಸಾಧನದ ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀ, ಇದು CAPod ಗೆ ವಿವರವಾದ ಸ್ಥಿತಿ ಮಾಹಿತಿಯನ್ನು ಹಿಂಪಡೆಯಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods ಸ್ಥಿತಿ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತವೆ, ಅದರ ಒಂದು ಭಾಗವನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಎನ್ಕ್ರಿಪ್ಶನ್ ಕೀ CAPod ಗೆ ಪೂರ್ಣ ಸಂದೇಶವನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ನಿಮಗೆ MacBook ಗೆ ಒಮ್ಮೆ ಪ್ರವೇಶದ ಅಗತ್ಯವಿದೆ.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">ಒಂದು ಪಾಡ್ ಮೋಡ್</string>
|
||||
<string name="settings_onepod_mode_description">ಎರಡೂ ಪಾಡ್ಗಳನ್ನು ಧರಿಸುವುದು ಅನಿವಾರ್ಯವಲ್ಲ, ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಚೋದಿಸಲು ಒಂದೇ ಪಾಡ್ ಧರಿಸಿದರೆ ಸಾಕು.</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<string name="settings_maindevice_address_none">없음</string>
|
||||
<string name="settings_maindevice_model_label">기기 모델</string>
|
||||
<string name="settings_maindevice_model_description">기본 기기의 모델입니다. 이렇게 하면 휴대폰에 연결되어 있지 않을 때 앱이 기기를 인식하는 데 도움이 됩니다.</string>
|
||||
<string name="settings_maindevice_identitykey_label">ID 키</string>
|
||||
<string name="settings_maindevice_identitykey_description">기기의 ID 확인 키(IRK)로, CAPod가 주변 기기 중에서 해당 기기를 식별하는 데 도움이 됩니다.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods는 개인 정보 보호를 위해 Bluetooth 주소를 자주 변경합니다. IRK는 CAPod가 기기를 인식하는 데 도움이 됩니다. MacBook에 한 번 액세스해야 합니다.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">암호화 키</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">기기의 암호화 키로, CAPod가 자세한 상태 정보를 검색할 수 있도록 합니다.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods는 상태 메시지를 보내며, 그중 일부는 암호화됩니다. 암호화 키를 사용하면 CAPod가 전체 메시지를 해독할 수 있습니다. MacBook에 한 번 액세스해야 합니다.</string>
|
||||
<string name="profiles_identitykey_label">ID 키</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">기기의 ID 확인 키(IRK)로, CAPod가 주변 기기 중에서 해당 기기를 식별하는 데 도움이 됩니다.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods는 개인 정보 보호를 위해 Bluetooth 주소를 자주 변경합니다. IRK는 CAPod가 기기를 인식하는 데 도움이 됩니다. MacBook에 한 번 액세스해야 합니다.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">암호화 키</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">기기의 암호화 키로, CAPod가 자세한 상태 정보를 검색할 수 있도록 합니다.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods는 상태 메시지를 보내며, 그중 일부는 암호화됩니다. 암호화 키를 사용하면 CAPod가 전체 메시지를 해독할 수 있습니다. MacBook에 한 번 액세스해야 합니다.</string>
|
||||
<string name="settings_onepod_mode_label">단일 Pod 모드</string>
|
||||
<string name="settings_onepod_mode_description">양쪽 기기를 모두 착용할 필요 없이 한쪽만 착용해도 앱이 반응합니다.</string>
|
||||
<string name="settings_popup_caseopen_label">케이스 팝업 표시</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Жок</string>
|
||||
<string name="settings_maindevice_model_label">Сиздин түзмөгүңүздүн модели</string>
|
||||
<string name="settings_maindevice_model_description">Негизги түзмөгүңүздүн модели. Бул колдонмого түзмөгүңүздү телефонуңузга туташпаганда таанууга жардам берет.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Идентификациялык ачкыч</string>
|
||||
<string name="settings_maindevice_identitykey_description">Түзмөгүңүздүн Идентификациялык Чечүү Ачкычы (IRK), ал CAPodго аны жакынкы түзмөктөрдүн арасынан аныктоого жардам берет.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods купуялуулук үчүн Bluetooth дарегин тез-тез алмаштырып турат. IRK CAPodго түзмөгүңүздү таанууга жардам берет. Сизге MacBook\'ка бир жолку кирүү мүмкүнчүлүгү керек.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Шифрлөө ачкычы</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Түзмөгүңүздүн шифрлөө ачкычы, ал CAPodго деталдуу абал маалыматын алууга мүмкүндүк берет.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods абал билдирүүсүн жөнөтөт, анын бир бөлүгү шифрленген. Шифрлөө ачкычы CAPodго толук билдирүүнү чечмелөөгө мүмкүндүк берет. Сизге MacBook\'ка бир жолку кирүү мүмкүнчүлүгү керек.</string>
|
||||
<string name="profiles_identitykey_label">Идентификациялык ачкыч</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Түзмөгүңүздүн Идентификациялык Чечүү Ачкычы (IRK), ал CAPodго аны жакынкы түзмөктөрдүн арасынан аныктоого жардам берет.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods купуялуулук үчүн Bluetooth дарегин тез-тез алмаштырып турат. IRK CAPodго түзмөгүңүздү таанууга жардам берет. Сизге MacBook\'ка бир жолку кирүү мүмкүнчүлүгү керек.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Шифрлөө ачкычы</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Түзмөгүңүздүн шифрлөө ачкычы, ал CAPodго деталдуу абал маалыматын алууга мүмкүндүк берет.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods абал билдирүүсүн жөнөтөт, анын бир бөлүгү шифрленген. Шифрлөө ачкычы CAPodго толук билдирүүнү чечмелөөгө мүмкүндүк берет. Сизге MacBook\'ка бир жолку кирүү мүмкүнчүлүгү керек.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Бир кулакчын режими</string>
|
||||
<string name="settings_onepod_mode_description">Эки кулакчынды тең тагуу талап кылынбайт, бир кулакчынды тагуу реакцияларды жаратуу үчүн жетиштүү.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">ບໍ່ມີ</string>
|
||||
<string name="settings_maindevice_model_label">ម៉ូដែលឧបករណ៍ຂອງທ່ານ</string>
|
||||
<string name="settings_maindevice_model_description">ម៉ូដែលឧបករណ៍ຫຼັກຂອງທ່ານ. ນີ້ຊ່ວຍໃຫ້ແອັບຮັບຮູ້ອຸປະກອນຂອງທ່ານເມື່ອມັນບໍ່ໄດ້ເຊື່ອມຕໍ່ກັບໂທລະສັບຂອງທ່ານ.</string>
|
||||
<string name="settings_maindevice_identitykey_label">ລະຫັດປະຈຳຕົວ</string>
|
||||
<string name="settings_maindevice_identitykey_description">ລະຫັດແກ້ໄຂປະຈຳຕົວອຸປະກອນຂອງທ່ານ (IRK), ເຊິ່ງຊ່ວຍ CAPod ໃຫ້ລະບຸມັນໃນບັນດາອຸປະກອນໃກ้ຄຽງ.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods ມັກປ່ຽນທີ່ຢູ່ Bluetooth ຂອງພວກເຂົາເພື່ອຄວາມເປັນສ່ວນຕົວ. IRK ຊ່ວຍ CAPod ໃຫ້ຮັບຮູ້ອຸປະກອນຂອງທ່ານ. ທ່ານຕ້ອງການການເຂົ້າເຖິງ MacBook ຄັ້ງດຽວ.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">ລະຫັດເຂົ້າລະຫັດ</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">ລະຫັດເຂົ້າລະຫັດອຸປະກອນຂອງທ່ານ, ເຊິ່ງອະນຸຍາດໃຫ້ CAPod ເອົາຂໍ້ມູນສະຖານະລະອຽດ.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods ສົ່ງຂໍ້ຄວາມສະຖານະ, ສ່ວນໜຶ່ງຂອງມັນຖືກເຂົ້າລະຫັດ. ລະຫັດເຂົ້າລະຫັດອະນຸຍາດໃຫ້ CAPod ຖອດລະຫັດຂໍ້ຄວາມເຕັມ. ທ່ານຕ້ອງການການເຂົ້າເຖິງ MacBook ຄັ້ງດຽວ.</string>
|
||||
<string name="profiles_identitykey_label">ລະຫັດປະຈຳຕົວ</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">ລະຫັດແກ້ໄຂປະຈຳຕົວອຸປະກອນຂອງທ່ານ (IRK), ເຊິ່ງຊ່ວຍ CAPod ໃຫ້ລະບຸມັນໃນບັນດາອຸປະກອນໃກ้ຄຽງ.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods ມັກປ່ຽນທີ່ຢູ່ Bluetooth ຂອງພວກເຂົາເພື່ອຄວາມເປັນສ່ວນຕົວ. IRK ຊ່ວຍ CAPod ໃຫ້ຮັບຮູ້ອຸປະກອນຂອງທ່ານ. ທ່ານຕ້ອງການການເຂົ້າເຖິງ MacBook ຄັ້ງດຽວ.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">ລະຫັດເຂົ້າລະຫັດ</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">ລະຫັດເຂົ້າລະຫັດອຸປະກອນຂອງທ່ານ, ເຊິ່ງອະນຸຍາດໃຫ້ CAPod ເອົາຂໍ້ມູນສະຖານະລະອຽດ.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods ສົ່ງຂໍ້ຄວາມສະຖານະ, ສ່ວນໜຶ່ງຂອງມັນຖືກເຂົ້າລະຫັດ. ລະຫັດເຂົ້າລະຫັດອະນຸຍາດໃຫ້ CAPod ຖອດລະຫັດຂໍ້ຄວາມເຕັມ. ທ່ານຕ້ອງການການເຂົ້າເຖິງ MacBook ຄັ້ງດຽວ.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">ໂໝດផតດຽວ</string>
|
||||
<string name="settings_onepod_mode_description">ບໍ່ຈຳເປັນຕ້ອງໃສ່ផតທັງສອງ, ການໃສ່ផតດຽວກໍພຽງພໍທີ່ຈະກະຕຸ້ນປະຕິກິริยา.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Nėra</string>
|
||||
<string name="settings_maindevice_model_label">Jūsų įrenginio modelis</string>
|
||||
<string name="settings_maindevice_model_description">Jūsų pagrindinio įrenginio modelis. Tai padeda programai atpažinti jūsų įrenginį, kai jis neprijungtas prie jūsų telefono.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Identifikavimo raktas</string>
|
||||
<string name="settings_maindevice_identitykey_description">Jūsų įrenginio tapatybės nustatymo raktas (IRK), padedantis CAPod jį identifikuoti tarp netoliese esančių įrenginių.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">„AirPods“ dažnai keičia savo „Bluetooth“ adresą privatumo sumetimais. IRK padeda CAPod atpažinti jūsų įrenginį. Jums reikės vienkartinės prieigos prie „MacBook“.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Šifravimo raktas</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Jūsų įrenginio šifravimo raktas, leidžiantis CAPod gauti išsamią būsenos informaciją.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">„AirPods“ siunčia būsenos pranešimą, kurio dalis yra užšifruota. Šifravimo raktas leidžia CAPod iššifruoti visą pranešimą. Jums reikės vienkartinės prieigos prie „MacBook“.</string>
|
||||
<string name="profiles_identitykey_label">Identifikavimo raktas</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Jūsų įrenginio tapatybės nustatymo raktas (IRK), padedantis CAPod jį identifikuoti tarp netoliese esančių įrenginių.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">„AirPods“ dažnai keičia savo „Bluetooth“ adresą privatumo sumetimais. IRK padeda CAPod atpažinti jūsų įrenginį. Jums reikės vienkartinės prieigos prie „MacBook“.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Šifravimo raktas</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Jūsų įrenginio šifravimo raktas, leidžiantis CAPod gauti išsamią būsenos informaciją.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">„AirPods“ siunčia būsenos pranešimą, kurio dalis yra užšifruota. Šifravimo raktas leidžia CAPod iššifruoti visą pranešimą. Jums reikės vienkartinės prieigos prie „MacBook“.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Vieno „pod“ režimas</string>
|
||||
<string name="settings_onepod_mode_description">Nebūtina nešioti abiejų „pod“; vieno „pod“ nešiojimo pakanka reakcijoms suaktyvinti.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Nav</string>
|
||||
<string name="settings_maindevice_model_label">Jūsu ierīces modelis</string>
|
||||
<string name="settings_maindevice_model_description">Jūsu galvenās ierīces modelis. Tas palīdz lietotnei atpazīt jūsu ierīci, kad tā nav savienota ar jūsu tālruni.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Identitātes atslēga</string>
|
||||
<string name="settings_maindevice_identitykey_description">Jūsu ierīces identitātes atrisināšanas atslēga (IRK), kas palīdz CAPod to identificēt starp tuvumā esošajām ierīcēm.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods privātuma apsvērumu dēļ bieži maina savu Bluetooth adresi. IRK palīdz CAPod atpazīt jūsu ierīci. Jums ir nepieciešama vienreizēja piekļuve MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Šifrēšanas atslēga</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Jūsu ierīces šifrēšanas atslēga, kas ļauj CAPod iegūt detalizētu statusa informāciju.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods nosūta statusa ziņojumu, kura daļa ir šifrēta. Šifrēšanas atslēga ļauj CAPod atšifrēt pilnu ziņojumu. Jums ir nepieciešama vienreizēja piekļuve MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Identitātes atslēga</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Jūsu ierīces identitātes atrisināšanas atslēga (IRK), kas palīdz CAPod to identificēt starp tuvumā esošajām ierīcēm.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods privātuma apsvērumu dēļ bieži maina savu Bluetooth adresi. IRK palīdz CAPod atpazīt jūsu ierīci. Jums ir nepieciešama vienreizēja piekļuve MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Šifrēšanas atslēga</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Jūsu ierīces šifrēšanas atslēga, kas ļauj CAPod iegūt detalizētu statusa informāciju.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods nosūta statusa ziņojumu, kura daļa ir šifrēta. Šifrēšanas atslēga ļauj CAPod atšifrēt pilnu ziņojumu. Jums ir nepieciešama vienreizēja piekļuve MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Viena austiņas režīms</string>
|
||||
<string name="settings_onepod_mode_description">Nav nepieciešams nēsāt abas austiņas, pietiek ar vienas austiņas nēsāšanu, lai izraisītu reakcijas.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Ниеден</string>
|
||||
<string name="settings_maindevice_model_label">Модел на вашиот уред</string>
|
||||
<string name="settings_maindevice_model_description">Моделот на вашиот главен уред. Ова и помага на апликацијата да го препознае вашиот уред кога не е поврзан со вашиот телефон.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Клуч за идентитет</string>
|
||||
<string name="settings_maindevice_identitykey_description">Клучот за решавање на идентитетот (IRK) на вашиот уред, кој му помага на CAPod да го идентификува меѓу блиските уреди.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods често ја менуваат својата Bluetooth адреса заради приватност. IRK му помага на CAPod да го препознае вашиот уред. Потребен ви е еднократен пристап до MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Клуч за шифрирање</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Клучот за шифрирање на вашиот уред, кој му овозможува на CAPod да добие детални информации за статусот.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods испраќаат статусна порака, чиј дел е шифриран. Клучот за шифрирање му овозможува на CAPod да ја дешифрира целата порака. Потребен ви е еднократен пристап до MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Клуч за идентитет</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Клучот за решавање на идентитетот (IRK) на вашиот уред, кој му помага на CAPod да го идентификува меѓу блиските уреди.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods често ја менуваат својата Bluetooth адреса заради приватност. IRK му помага на CAPod да го препознае вашиот уред. Потребен ви е еднократен пристап до MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Клуч за шифрирање</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Клучот за шифрирање на вашиот уред, кој му овозможува на CAPod да добие детални информации за статусот.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods испраќаат статусна порака, чиј дел е шифриран. Клучот за шифрирање му овозможува на CAPod да ја дешифрира целата порака. Потребен ви е еднократен пристап до MacBook.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Режим со една слушалка</string>
|
||||
<string name="settings_onepod_mode_description">Не е потребно да се носат двете слушалки, носењето на една слушалка е доволно за да се активираат реакции.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">ഒന്നുമില്ല</string>
|
||||
<string name="settings_maindevice_model_label">നിങ്ങളുടെ ഉപകരണ മോഡൽ</string>
|
||||
<string name="settings_maindevice_model_description">നിങ്ങളുടെ പ്രധാന ഉപകരണത്തിന്റെ മോഡൽ. നിങ്ങളുടെ ഫോണിലേക്ക് കണക്റ്റുചെയ്തിട്ടില്ലാത്തപ്പോൾ നിങ്ങളുടെ ഉപകരണം തിരിച്ചറിയാൻ ഇത് ആപ്പിനെ സഹായിക്കുന്നു.</string>
|
||||
<string name="settings_maindevice_identitykey_label">ഐഡന്റിറ്റി കീ</string>
|
||||
<string name="settings_maindevice_identitykey_description">നിങ്ങളുടെ ഉപകരണത്തിന്റെ ഐഡന്റിറ്റി റിസോൾവിംഗ് കീ (IRK), സമീപത്തുള്ള ഉപകരണങ്ങൾക്കിടയിൽ അതിനെ തിരിച്ചറിയാൻ CAPod-നെ സഹായിക്കുന്നു.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">സ്വകാര്യതയ്ക്കായി AirPods അവരുടെ ബ്ലൂടൂത്ത് വിലാസം പതിവായി മാറ്റുന്നു. നിങ്ങളുടെ ഉപകരണം തിരിച്ചറിയാൻ IRK CAPod-നെ സഹായിക്കുന്നു. നിങ്ങൾക്ക് MacBook-ലേക്ക് ഒരു തവണ ആക്സസ് ആവശ്യമാണ്.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">എൻക്രിപ്ഷൻ കീ</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">നിങ്ങളുടെ ഉപകരണത്തിന്റെ എൻക്രിപ്ഷൻ കീ, ഇത് CAPod-ന് വിശദമായ സ്റ്റാറ്റസ് വിവരങ്ങൾ വീണ്ടെടുക്കാൻ ಅನುಮತಿಸುತ್ತದೆ.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods ഒരു സ്റ്റാറ്റസ് സന്ദേശം അയയ്ക്കുന്നു, അതിന്റെ ഒരു ഭാഗം എൻക്രിപ്റ്റ് ചെയ്തിരിക്കുന്നു. എൻക്രിപ്ഷൻ കീ CAPod-ന് മുഴുവൻ സന്ദേശവും ഡീക്രിപ്റ്റ് ചെയ്യാൻ ಅನುಮತಿಸುತ್ತದೆ. നിങ്ങൾക്ക് MacBook-ലേക്ക് ഒരു തവണ ആക്സസ് ആവശ്യമാണ്.</string>
|
||||
<string name="profiles_identitykey_label">ഐഡന്റിറ്റി കീ</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">നിങ്ങളുടെ ഉപകരണത്തിന്റെ ഐഡന്റിറ്റി റിസോൾവിംഗ് കീ (IRK), സമീപത്തുള്ള ഉപകരണങ്ങൾക്കിടയിൽ അതിനെ തിരിച്ചറിയാൻ CAPod-നെ സഹായിക്കുന്നു.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">സ്വകാര്യതയ്ക്കായി AirPods അവരുടെ ബ്ലൂടൂത്ത് വിലാസം പതിവായി മാറ്റുന്നു. നിങ്ങളുടെ ഉപകരണം തിരിച്ചറിയാൻ IRK CAPod-നെ സഹായിക്കുന്നു. നിങ്ങൾക്ക് MacBook-ലേക്ക് ഒരു തവണ ആക്സസ് ആവശ്യമാണ്.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">എൻക്രിപ്ഷൻ കീ</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">നിങ്ങളുടെ ഉപകരണത്തിന്റെ എൻക്രിപ്ഷൻ കീ, ഇത് CAPod-ന് വിശദമായ സ്റ്റാറ്റസ് വിവരങ്ങൾ വീണ്ടെടുക്കാൻ ಅನುಮತಿಸುತ್ತದೆ.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods ഒരു സ്റ്റാറ്റസ് സന്ദേശം അയയ്ക്കുന്നു, അതിന്റെ ഒരു ഭാഗം എൻക്രിപ്റ്റ് ചെയ്തിരിക്കുന്നു. എൻക്രിപ്ഷൻ കീ CAPod-ന് മുഴുവൻ സന്ദേശവും ഡീക്രിപ്റ്റ് ചെയ്യാൻ ಅನುಮತಿಸುತ್ತದೆ. നിങ്ങൾക്ക് MacBook-ലേക്ക് ഒരു തവണ ആക്സസ് ആവശ്യമാണ്.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">ഒരു പോഡ് മോഡ്</string>
|
||||
<string name="settings_onepod_mode_description">രണ്ട് പോഡുകളും ധരിക്കേണ്ട ആവശ്യമില്ല, പ്രതികരണങ്ങൾ പ്രവർത്തനക്ഷമമാക്കാൻ ഒരൊറ്റ പോഡ് ധരിച്ചാൽ മതി.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">Байхгүй</string>
|
||||
<string name="settings_maindevice_model_label">Таны төхөөрөмжийн загвар</string>
|
||||
<string name="settings_maindevice_model_description">Таны үндсэн төхөөрөмжийн загвар. Энэ нь таны утсанд холбогдоогүй үед апп-д таны төхөөрөмжийг танихад тусалдаг.</string>
|
||||
<string name="settings_maindevice_identitykey_label">Таних түлхүүр</string>
|
||||
<string name="settings_maindevice_identitykey_description">Таны төхөөрөмжийн Таних Түлхүүр Шийдвэрлэх Түлхүүр (IRK), энэ нь CAPod-д ойролцоох төхөөрөмжүүдийн дундаас түүнийг танихад тусалдаг.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods нь нууцлалын үүднээс Bluetooth хаягаа байнга сольдог. IRK нь CAPod-д таны төхөөрөмжийг танихад тусалдаг. Танд MacBook-д нэг удаагийн хандалт хэрэгтэй.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Шифрлэлтийн түлхүүр</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Таны төхөөрөмжийн шифрлэлтийн түлхүүр, энэ нь CAPod-д нарийвчилсан төлөвийн мэдээллийг авахад тусалдаг.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods нь төлөвийн мессеж илгээдэг бөгөөд түүний зарим хэсэг нь шифрлэгдсэн байдаг. Шифрлэлтийн түлхүүр нь CAPod-д бүхэл мессежийг тайлахад тусалдаг. Танд MacBook-д нэг удаагийн хандалт хэрэгтэй.</string>
|
||||
<string name="profiles_identitykey_label">Таних түлхүүр</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Таны төхөөрөмжийн Таних Түлхүүр Шийдвэрлэх Түлхүүр (IRK), энэ нь CAPod-д ойролцоох төхөөрөмжүүдийн дундаас түүнийг танихад тусалдаг.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods нь нууцлалын үүднээс Bluetooth хаягаа байнга сольдог. IRK нь CAPod-д таны төхөөрөмжийг танихад тусалдаг. Танд MacBook-д нэг удаагийн хандалт хэрэгтэй.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Шифрлэлтийн түлхүүр</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Таны төхөөрөмжийн шифрлэлтийн түлхүүр, энэ нь CAPod-д нарийвчилсан төлөвийн мэдээллийг авахад тусалдаг.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods нь төлөвийн мессеж илгээдэг бөгөөд түүний зарим хэсэг нь шифрлэгдсэн байдаг. Шифрлэлтийн түлхүүр нь CAPod-д бүхэл мессежийг тайлахад тусалдаг. Танд MacBook-д нэг удаагийн хандалт хэрэгтэй.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">Нэг чихэвчний горим</string>
|
||||
<string name="settings_onepod_mode_description">Хоёр чихэвчийг хоёуланг нь зүүх шаардлагагүй, урвалыг өдөөхийн тулд ганц чихэвч зүүхэд л хангалттай.</string>
|
||||
|
||||
@@ -55,12 +55,12 @@
|
||||
<string name="settings_maindevice_address_none">काहीही नाही</string>
|
||||
<string name="settings_maindevice_model_label">तुमच्या डिव्हाइसचे मॉडेल</string>
|
||||
<string name="settings_maindevice_model_description">तुमच्या मुख्य डिव्हाइसचे मॉडेल. हे अॅपला तुमच्या फोनशी कनेक्ट नसताना तुमचे डिव्हाइस ओळखण्यात मदत करते.</string>
|
||||
<string name="settings_maindevice_identitykey_label">ओळख की</string>
|
||||
<string name="settings_maindevice_identitykey_description">तुमच्या डिव्हाइसची ओळख निराकरण की (IRK), जी CAPod ला जवळपासच्या डिव्हाइसपैकी ओळखण्यास मदत करते.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods गोपनीयतेसाठी वारंवार त्यांचे ब्लूटूथ पत्ते बदलतात. IRK CAPod ला तुमचे डिव्हाइस ओळखण्यास मदत करते. तुम्हाला MacBook मध्ये एकदा प्रवेश आवश्यक आहे.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">एनक्रिप्शन की</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">तुमच्या डिव्हाइसची एनक्रिप्शन की, जी CAPod ला तपशीलवार स्थिती माहिती पुनर्प्राप्त करण्यास अनुमती देते.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods स्थिती संदेश पाठवतात, ज्याचा काही भाग एनक्रिप्ट केलेला असतो. एनक्रिप्शन की CAPod ला संपूर्ण संदेश डीक्रिप्ट करण्यास अनुमती देते. तुम्हाला MacBook मध्ये एकदा प्रवेश आवश्यक आहे.</string>
|
||||
<string name="profiles_identitykey_label">ओळख की</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">तुमच्या डिव्हाइसची ओळख निराकरण की (IRK), जी CAPod ला जवळपासच्या डिव्हाइसपैकी ओळखण्यास मदत करते.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods गोपनीयतेसाठी वारंवार त्यांचे ब्लूटूथ पत्ते बदलतात. IRK CAPod ला तुमचे डिव्हाइस ओळखण्यास मदत करते. तुम्हाला MacBook मध्ये एकदा प्रवेश आवश्यक आहे.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">एनक्रिप्शन की</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">तुमच्या डिव्हाइसची एनक्रिप्शन की, जी CAPod ला तपशीलवार स्थिती माहिती पुनर्प्राप्त करण्यास अनुमती देते.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods स्थिती संदेश पाठवतात, ज्याचा काही भाग एनक्रिप्ट केलेला असतो. एनक्रिप्शन की CAPod ला संपूर्ण संदेश डीक्रिप्ट करण्यास अनुमती देते. तुम्हाला MacBook मध्ये एकदा प्रवेश आवश्यक आहे.</string>
|
||||
|
||||
<string name="settings_onepod_mode_label">एक पॉड मोड</string>
|
||||
<string name="settings_onepod_mode_description">दोन्ही पॉड्स घालणे आवश्यक नाही, प्रतिक्रिया सुरू करण्यासाठी एकच पॉड घालणे पुरेसे आहे.</string>
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
<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_maindevice_identitykey_label">Kunci Identiti</string>
|
||||
<string name="settings_maindevice_identitykey_description">Kunci Penyelesaian Identiti (IRK) peranti anda, yang membantu CAPod mengenal pastinya di kalangan peranti berdekatan.</string>
|
||||
<string name="settings_maindevice_identitykey_explanation">AirPods kerap menukar alamat Bluetooth mereka untuk privasi. IRK membantu CAPod mengenali peranti anda. Anda memerlukan akses sekali sahaja ke MacBook.</string>
|
||||
<string name="settings_maindevice_encryptionkey_label">Kunci Penyulitan</string>
|
||||
<string name="settings_maindevice_encryptionkey_description">Kunci penyulitan peranti anda, yang membolehkan CAPod mendapatkan maklumat status terperinci.</string>
|
||||
<string name="settings_maindevice_encryptionkey_explanation">AirPods menghantar mesej status, sebahagian daripadanya disulitkan. Kunci penyulitan membolehkan CAPod menyahsulit mesej penuh. Anda memerlukan akses sekali sahaja ke MacBook.</string>
|
||||
<string name="profiles_identitykey_label">Kunci Identiti</string>
|
||||
<string name="profilessettings_maindevice_identitykey_description">Kunci Penyelesaian Identiti (IRK) peranti anda, yang membantu CAPod mengenal pastinya di kalangan peranti berdekatan.</string>
|
||||
<string name="profiles_maindevice_identitykey_explanation">AirPods kerap menukar alamat Bluetooth mereka untuk privasi. IRK membantu CAPod mengenali peranti anda. Anda memerlukan akses sekali sahaja ke MacBook.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_label">Kunci Penyulitan</string>
|
||||
<string name="profiles_maindevice_encryptionkey_description">Kunci penyulitan peranti anda, yang membolehkan CAPod mendapatkan maklumat status terperinci.</string>
|
||||
<string name="profiles_maindevice_encryptionkey_explanation">AirPods menghantar mesej status, sebahagian daripadanya disulitkan. Kunci penyulitan membolehkan CAPod menyahsulit mesej penuh. Anda memerlukan akses sekali sahaja ke MacBook.</string>
|
||||
<string name="settings_onepod_mode_label">Mod satu pod</string>
|
||||
<string name="settings_onepod_mode_description">Memakai kedua-dua pod tidak diperlukan, memakai satu pod sudah memadai untuk mencetuskan tindak balas.</string>
|
||||
<string name="settings_popup_caseopen_label">Tunjukkan pop timbul bekas</string>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user