mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
Compare commits
18
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
18a7311089 | ||
|
|
9f49d62f12 | ||
|
|
0c3c4e7ea1 | ||
|
|
7cdf653842 | ||
|
|
32d99eada8 | ||
|
|
9e4adb16c6 | ||
|
|
4b5638e4f0 | ||
|
|
d8fb9cdd30 | ||
|
|
3920489dcd | ||
|
|
09d013588d | ||
|
|
d8bd03c65d | ||
|
|
8b2c6b9498 | ||
|
|
0f63d3a0d4 | ||
|
|
672eb333b0 | ||
|
|
de609b4d05 | ||
|
|
7e6e9eee36 | ||
|
|
a321bb733c | ||
|
|
490369a3e1 |
@@ -48,7 +48,6 @@ jobs:
|
||||
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
|
||||
|
||||
- name: Assemble production APK
|
||||
if: "!contains(steps.tagger.outputs.tag, '-beta')"
|
||||
@@ -58,7 +57,6 @@ jobs:
|
||||
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
|
||||
|
||||
- name: Create pre-release
|
||||
if: contains(steps.tagger.outputs.tag, '-beta')
|
||||
@@ -138,6 +136,14 @@ jobs:
|
||||
ruby-version: 2.7.6
|
||||
bundler-cache: true
|
||||
|
||||
# - name: Assemble WearOS beta and upload to Google Play
|
||||
# if: contains(steps.tagger.outputs.tag, '-beta')
|
||||
# run: bundle exec fastlane beta_wearos
|
||||
# env:
|
||||
# STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
# KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
# KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
|
||||
- name: Assemble beta and upload to Google Play
|
||||
if: contains(steps.tagger.outputs.tag, '-beta')
|
||||
run: bundle exec fastlane beta
|
||||
@@ -145,7 +151,14 @@ jobs:
|
||||
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
|
||||
|
||||
# - name: Assemble WearOS production and upload to Google Play
|
||||
# if: "!contains(steps.tagger.outputs.tag, '-beta')"
|
||||
# run: bundle exec fastlane production_wearos
|
||||
# env:
|
||||
# STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
# KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
# KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
|
||||
- name: Assemble production and upload to Google Play
|
||||
if: "!contains(steps.tagger.outputs.tag, '-beta')"
|
||||
@@ -153,5 +166,4 @@ jobs:
|
||||
env:
|
||||
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
+42
-42
@@ -1,27 +1,27 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.5)
|
||||
CFPropertyList (3.0.6)
|
||||
rexml
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
addressable (2.8.4)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.610.0)
|
||||
aws-sdk-core (3.131.3)
|
||||
aws-partitions (1.784.0)
|
||||
aws-sdk-core (3.177.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.58.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-kms (1.70.0)
|
||||
aws-sdk-core (~> 3, >= 3.177.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.114.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-s3 (1.128.0)
|
||||
aws-sdk-core (~> 3, >= 3.177.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.4)
|
||||
aws-sigv4 (1.5.1)
|
||||
aws-sigv4 (~> 1.6)
|
||||
aws-sigv4 (1.6.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
claide (1.1.0)
|
||||
@@ -30,14 +30,14 @@ GEM
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.6.4)
|
||||
digest-crc (0.6.5)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
excon (0.92.4)
|
||||
faraday (1.10.0)
|
||||
excon (0.100.0)
|
||||
faraday (1.10.3)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
@@ -65,8 +65,8 @@ GEM
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.6)
|
||||
fastlane (2.208.0)
|
||||
fastimage (2.2.7)
|
||||
fastlane (2.213.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -90,7 +90,7 @@ GEM
|
||||
json (< 3.0.0)
|
||||
jwt (>= 2.1.0, < 3)
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (~> 2.0.0)
|
||||
multipart-post (>= 2.0.0, < 3.0.0)
|
||||
naturally (~> 2.2)
|
||||
optparse (~> 0.1.1)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
@@ -106,9 +106,9 @@ GEM
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.25.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-core (0.7.0)
|
||||
google-apis-androidpublisher_v3 (0.45.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-core (0.11.0)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
@@ -117,27 +117,27 @@ GEM
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.13.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.10.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-storage_v1 (0.18.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-iamcredentials_v1 (0.17.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.13.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-storage_v1 (0.19.0)
|
||||
google-apis-core (>= 0.9.0, < 2.a)
|
||||
google-cloud-core (1.6.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
google-cloud-storage (1.37.0)
|
||||
google-cloud-errors (1.3.1)
|
||||
google-cloud-storage (1.44.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.19.0)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (1.2.0)
|
||||
googleauth (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
@@ -148,20 +148,20 @@ GEM
|
||||
http-cookie (1.0.5)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.2)
|
||||
jwt (2.4.1)
|
||||
jmespath (1.6.2)
|
||||
json (2.6.3)
|
||||
jwt (2.7.1)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_magick (4.12.0)
|
||||
mini_mime (1.1.2)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.0.0)
|
||||
multipart-post (2.3.0)
|
||||
nanaimo (0.3.0)
|
||||
naturally (2.2.1)
|
||||
optparse (0.1.1)
|
||||
os (1.1.4)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.7)
|
||||
plist (3.7.0)
|
||||
public_suffix (5.0.1)
|
||||
rake (13.0.6)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
@@ -178,7 +178,7 @@ GEM
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
terminal-notifier (2.0.0)
|
||||
@@ -194,7 +194,7 @@ GEM
|
||||
unf_ext
|
||||
unf_ext (0.0.8.2)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
webrick (1.8.1)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.22.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
|
||||
+28
-8
@@ -20,23 +20,43 @@ On Android 12+ the newer and more fine grained `BLUETOOTH_SCAN` permission is us
|
||||
|
||||
Bluetooth Low Energy is a technology that devices like AirPods use to communicate their status to nearby devices.
|
||||
CAPod requests location permissions because these permissions are required to work with Bluetooth Low Energy data.
|
||||
This is a privacy measure on Android's side because you could determine someones location by scanning for Bluetooth devices:
|
||||
If you know the physical location of a Bluetooth device (e.g. AirTags) you could use Bluetooth data to calculate your position.
|
||||
This is a privacy measure on Android's side because you could determine someones location by scanning for Bluetooth
|
||||
devices:
|
||||
If you know the physical location of a Bluetooth device (e.g. AirTags) you could use Bluetooth data to calculate your
|
||||
position.
|
||||
|
||||
### Location access in the background
|
||||
|
||||
CAPod uses the "location access in the background" permission (`ACCESS_BACKGROUND_LOCATION`) on Android 11 and older to receive Bluetooth Low Energy data while the app is in the background. This permission enables the "Show popup" and "Autoconnect" features and allows CAPod to react to nearby devices whil the app is closed.
|
||||
CAPod uses the "location access in the background" permission (`ACCESS_BACKGROUND_LOCATION`) on Android 11 and older to
|
||||
receive Bluetooth Low Energy data while the app is in the background. This permission enables the "Show popup" and "
|
||||
Autoconnect" features and allows CAPod to react to nearby devices whil the app is closed.
|
||||
|
||||
## Automatic crash reports
|
||||
## Automatic error reports
|
||||
|
||||
Anonymous device information may be collected in the event of an app crash or error.
|
||||
*This was removed in v2.11.0+*
|
||||
|
||||
To do this the app uses the service "Bugsnag":
|
||||
If an error occurs, an automated report may be sent to help me fix the issue.
|
||||
|
||||
This is optional and you can opt out of this in the settings.
|
||||
|
||||
Error reports are collected using "Bugsnag":
|
||||
https://www.bugsnag.com/
|
||||
|
||||
Bugsnag's privacy policy can be found here:
|
||||
https://docs.bugsnag.com/legal/privacy-policy/
|
||||
|
||||
Crash reports may contain device and app related information, e.g. your phone model, Android version and app version.
|
||||
Error reports contain device and app information related to the error that occured.
|
||||
Additional information about the error context may also be included, e.g. what this app did shortly before the error.
|
||||
|
||||
You can disable automatic reports in the app's settings.
|
||||
Additional details about the type of data that is collected by the error tracking SDK can be found here:
|
||||
https://docs.bugsnag.com/platforms/android/playstore-privacy/
|
||||
|
||||
Error reports are pseudonymous. Unless you tell me your install-ID, I don't know that an error report came from you.
|
||||
|
||||
Error reports are automatically deleted after 90 days.
|
||||
|
||||
## Debug logs
|
||||
|
||||
The app has a debug log feature that can be used to assist troubleshooting efforts. This feature creates a log file that contains verbose output of what the app is doing.
|
||||
|
||||
It is manually triggered by the user through an option in the app settings. The recorded log file can be shared through compatible apps (e.g. your email app) using the system's share dialog. As this log file may contain sensitive information (e.g. details about files or installed applications) it should only be shared with trusted parties.
|
||||
|
||||
@@ -22,10 +22,6 @@ android {
|
||||
buildConfigField("String", "APPLICATION_ID", "\"${ProjectConfig.packageName}\"")
|
||||
buildConfigField("String", "GITSHA", "\"${lastCommitHash()}\"")
|
||||
buildConfigField("String", "BUILDTIME", "\"${buildTime()}\"")
|
||||
|
||||
manifestPlaceholders["bugsnagApiKey"] = getBugSnagApiKey(
|
||||
File(System.getProperty("user.home"), ".appconfig/${ProjectConfig.packageName}/bugsnag.properties")
|
||||
) ?: "bugsnag_apikey_placeholder"
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
@@ -100,7 +96,4 @@ dependencies {
|
||||
|
||||
addTesting()
|
||||
|
||||
"gplayImplementation"("com.bugsnag:bugsnag-android:5.9.2")
|
||||
"gplayImplementation"("com.getkeepsafe.relinker:relinker:1.4.3")
|
||||
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<manifest>
|
||||
|
||||
<application>
|
||||
<meta-data
|
||||
android:name="com.bugsnag.android.API_KEY"
|
||||
android:value="${bugsnagApiKey}" />
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,58 +0,0 @@
|
||||
package eu.darken.capod.debug.autoreport
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
import com.bugsnag.android.Event
|
||||
import com.bugsnag.android.OnErrorCallback
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import eu.darken.capod.common.BuildConfigWrap
|
||||
import eu.darken.capod.common.debug.DebugSettings
|
||||
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 javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class BugsnagErrorHandler @Inject constructor(
|
||||
@ApplicationContext private val context: Context,
|
||||
private val bugsnagLogger: BugsnagLogger,
|
||||
private val debugSettings: DebugSettings,
|
||||
) : OnErrorCallback {
|
||||
|
||||
override fun onError(event: Event): Boolean {
|
||||
bugsnagLogger.injectLog(event)
|
||||
|
||||
TAB_APP.also { tab ->
|
||||
event.addMetadata(tab, "gitSha", BuildConfigWrap.GIT_SHA)
|
||||
event.addMetadata(tab, "buildTime", BuildConfigWrap.BUILDTIME)
|
||||
|
||||
context.tryFormattedSignature()?.let { event.addMetadata(tab, "signatures", it) }
|
||||
}
|
||||
|
||||
return debugSettings.isAutoReportingEnabled.value && !eu.darken.capod.common.BuildConfigWrap.DEBUG
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val TAB_APP = "app"
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@SuppressLint("PackageManagerGetSignatures")
|
||||
fun Context.tryFormattedSignature(): String? = try {
|
||||
packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES).signatures?.let { sigs ->
|
||||
val sb = StringBuilder("[")
|
||||
for (i in sigs.indices) {
|
||||
sb.append(sigs[i].hashCode())
|
||||
if (i + 1 != sigs.size) sb.append(", ")
|
||||
}
|
||||
sb.append("]")
|
||||
sb.toString()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
log(WARN) { e.asLog() }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package eu.darken.capod.debug.autoreport
|
||||
|
||||
import com.bugsnag.android.Event
|
||||
import eu.darken.capod.common.debug.logging.Logging
|
||||
import eu.darken.capod.common.debug.logging.asLog
|
||||
import java.lang.String.format
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class BugsnagLogger @Inject constructor() : Logging.Logger {
|
||||
|
||||
// Adding one to the initial size accounts for the add before remove.
|
||||
private val buffer: Deque<String> = ArrayDeque(BUFFER_SIZE + 1)
|
||||
|
||||
override fun log(priority: Logging.Priority, tag: String, message: String, metaData: Map<String, Any>?) {
|
||||
val line = "${System.currentTimeMillis()} ${priority.toLabel()}/$tag: $message"
|
||||
synchronized(buffer) {
|
||||
buffer.addLast(line)
|
||||
if (buffer.size > BUFFER_SIZE) {
|
||||
buffer.removeFirst()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun injectLog(event: Event) {
|
||||
synchronized(buffer) {
|
||||
var i = 100
|
||||
buffer.forEach { event.addMetadata("Log", format(Locale.ROOT, "%03d", i++), it) }
|
||||
event.addMetadata("Log", format(Locale.ROOT, "%03d", i), event.originalError?.asLog())
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val BUFFER_SIZE = 200
|
||||
|
||||
private fun Logging.Priority.toLabel(): String = when (this) {
|
||||
Logging.Priority.VERBOSE -> "V"
|
||||
Logging.Priority.DEBUG -> "D"
|
||||
Logging.Priority.INFO -> "I"
|
||||
Logging.Priority.WARN -> "W"
|
||||
Logging.Priority.ERROR -> "E"
|
||||
Logging.Priority.ASSERT -> "WTF"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,20 +2,15 @@ package eu.darken.capod.debug.autoreport
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import com.bugsnag.android.Bugsnag
|
||||
import com.bugsnag.android.Configuration
|
||||
import com.getkeepsafe.relinker.ReLinker
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import eu.darken.capod.common.BuildConfigWrap
|
||||
import eu.darken.capod.common.InstallId
|
||||
import eu.darken.capod.common.debug.Bugs
|
||||
import eu.darken.capod.common.debug.DebugSettings
|
||||
import eu.darken.capod.common.debug.autoreport.AutomaticBugReporter
|
||||
import eu.darken.capod.common.debug.logging.Logging
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.WARN
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Provider
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
@@ -23,9 +18,6 @@ class GplayAutoReporting @Inject constructor(
|
||||
@ApplicationContext private val context: Context,
|
||||
private val debugSettings: DebugSettings,
|
||||
private val installId: InstallId,
|
||||
private val bugsnagLogger: Provider<BugsnagLogger>,
|
||||
private val bugsnagErrorHandler: Provider<BugsnagErrorHandler>,
|
||||
private val nopBugsnagErrorHandler: Provider<NOPBugsnagErrorHandler>,
|
||||
) : AutomaticBugReporter {
|
||||
|
||||
override fun setup(application: Application) {
|
||||
@@ -34,35 +26,13 @@ class GplayAutoReporting @Inject constructor(
|
||||
|
||||
if (!isEnabled) return
|
||||
|
||||
ReLinker
|
||||
.log { message -> log(TAG) { "ReLinker: $message" } }
|
||||
.loadLibrary(application, "bugsnag-plugin-android-anr")
|
||||
// Currently no 3rd party bug tracking
|
||||
|
||||
try {
|
||||
val bugsnagConfig = Configuration.load(context).apply {
|
||||
if (debugSettings.isAutoReportingEnabled.value) {
|
||||
Logging.install(bugsnagLogger.get())
|
||||
setUser(installId.id, null, null)
|
||||
autoTrackSessions = true
|
||||
addOnError(bugsnagErrorHandler.get())
|
||||
addMetadata("App", "buildFlavor", BuildConfigWrap.FLAVOR)
|
||||
log(TAG) { "Bugsnag setup done!" }
|
||||
} else {
|
||||
autoTrackSessions = false
|
||||
addOnError(nopBugsnagErrorHandler.get())
|
||||
log(TAG) { "Installing Bugsnag NOP error handler due to user opt-out!" }
|
||||
}
|
||||
}
|
||||
|
||||
Bugsnag.start(context, bugsnagConfig)
|
||||
Bugs.reporter = this
|
||||
} catch (e: IllegalStateException) {
|
||||
log(TAG) { "Bugsnag API Key not configured." }
|
||||
}
|
||||
Bugs.reporter = this
|
||||
}
|
||||
|
||||
override fun notify(throwable: Throwable) {
|
||||
Bugsnag.notify(throwable)
|
||||
log(TAG, WARN) { "notify($throwable)" }
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package eu.darken.capod.debug.autoreport
|
||||
|
||||
import com.bugsnag.android.Event
|
||||
import com.bugsnag.android.OnErrorCallback
|
||||
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 javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class NOPBugsnagErrorHandler @Inject constructor() : OnErrorCallback {
|
||||
|
||||
override fun onError(event: Event): Boolean {
|
||||
log(WARN) { "Error, but skipping bugsnag due to user opt-out: ${event.originalError?.asLog()}" }
|
||||
return false
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import eu.darken.capod.common.error.ErrorEventSource
|
||||
import eu.darken.capod.common.flow.setupCommonEventHandlers
|
||||
import eu.darken.capod.common.livedata.SingleLiveEvent
|
||||
import eu.darken.capod.common.navigation.NavEventSource
|
||||
import eu.darken.capod.common.navigation.navVia
|
||||
import kotlinx.coroutines.CoroutineExceptionHandler
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
@@ -31,4 +32,7 @@ abstract class ViewModel3(
|
||||
.setupCommonEventHandlers(TAG) { "launchInViewModel()" }
|
||||
.launchIn(vmScope)
|
||||
|
||||
fun NavDirections.navigate() {
|
||||
navVia(navEvents)
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,8 @@ class GeneralSettings @Inject constructor(
|
||||
val isOffloadedBatchingDisabled = preferences.createFlowPreference("core.compat.offloaded.batching.disabled", false)
|
||||
val useIndirectScanResultCallback = preferences.createFlowPreference("core.compat.indirectcallback.enabled", false)
|
||||
|
||||
val isOnboardingDone = preferences.createFlowPreference("core.onboarding.done", false)
|
||||
|
||||
override val preferenceDataStore: PreferenceDataStore = PreferenceStoreMapper(
|
||||
monitorMode,
|
||||
scannerMode,
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Estat desconegut</string>
|
||||
<string name="last_seen_x">Últim cop vist: %s</string>
|
||||
<string name="first_seen_x">Primera vegada vist: %s</string>
|
||||
<string name="permission_post_notifications_label">Mostra notificacions</string>
|
||||
<string name="permission_post_notifications_description">"Permet que el CAPod mostri notificacions sobre els vostres AirPods, p. ex. el seu estat actual mentre estan connectats."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Neznámý stav</string>
|
||||
<string name="last_seen_x">Naposledy spatřeno: %s</string>
|
||||
<string name="first_seen_x">Poprvé spatřeno: %s</string>
|
||||
<string name="permission_post_notifications_label">Zobrazit oznámení</string>
|
||||
<string name="permission_post_notifications_description">"Povolte aplikaci CAPod zobrazovat oznámení o sluchátkách AirPods, např. o jejich aktuálním stavu během připojení."</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="app_name">CAPod</string>
|
||||
<string name="app_name_pro">CAPod Pro</string>
|
||||
<string name="app_name_foss">CAPod FOSS</string>
|
||||
<string name="general_value_not_available_label">Δε διατίθεται</string>
|
||||
<string name="general_error_label">Σφάλμα</string>
|
||||
<string name="general_grant_permission_action">Παραχώρηση άδειας</string>
|
||||
@@ -56,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Άγνωστη κατάσταση</string>
|
||||
<string name="last_seen_x">Τελευταία εμφάνιση: %s</string>
|
||||
<string name="first_seen_x">Πρώτη εμφάνιση: %s</string>
|
||||
<string name="permission_post_notifications_label">Εμφάνιση ειδοποιήσεων</string>
|
||||
<string name="permission_post_notifications_description">"Επιτρέψτε στην εφαρμογή να εμφανίζει ειδοποιήσεις σχετικά με τα AirPods σας, π.χ. την τρέχουσα κατάστασή τους ενώ είστε συνδεδεμένοι."</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="app_name">CAPod</string>
|
||||
<string name="general_grant_permission_action">Conceder permiso</string>
|
||||
<string name="permission_bluetooth_connect_label">Conexión Bluetooth</string>
|
||||
<string name="permission_bluetooth_connect_description">Esta aplicacion requiere el permiso \"Conexión Bluetooth\" para interactuar con los dispositivos vinculados e iniciar las conexiones.</string>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Estado desconocido</string>
|
||||
<string name="last_seen_x">Visto por última vez: %s</string>
|
||||
<string name="first_seen_x">Visto por primera vez: %s</string>
|
||||
<string name="permission_post_notifications_label">Mostrar las notificaciones</string>
|
||||
<string name="permission_post_notifications_description">"Permite que CAPod muestre las notificaciones sobre tus AirPods, por ejemplo, su estado actual mientras están conectados."</string>
|
||||
</resources>
|
||||
|
||||
@@ -6,4 +6,6 @@
|
||||
<string name="general_value_not_available_label">Pole saadaval</string>
|
||||
<string name="pods_dual_left_label">Vasak klapp</string>
|
||||
<string name="pods_dual_right_label">Parem klapp</string>
|
||||
<string name="permission_post_notifications_label">Näita teateid</string>
|
||||
<string name="permission_post_notifications_description">"Luba CAPodil näidata AirPodsi teateid, nt praegust olekut ühendatud olles."</string>
|
||||
</resources>
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
<string name="permission_access_fine_location_label">Accéder à la position précise</string>
|
||||
<string name="permission_access_fine_location_description">CAPod utilise l’autorisation « position précise » pour recevoir les données « faible énergie » de Bluetooth. Votre casque-micro utilise la technologie « basse énergie » de Bluetooth pour diffuser son état. Cette appli n’utilisera PAS les données Bluetooth pour déterminer votre position.</string>
|
||||
<string name="permission_background_location_label">Accès à la position en arrière-plan</string>
|
||||
<string name="permission_background_location_description">CAPod utilise « l’accès à la position en arrière-plan » afin de permettre des fonctions telles qu’« Afficher une notification » et « Connexion automatique » alors que l’appli est fermée. L’accès à la position en arrière-plan permet à l’appli de recevoir les données « basse énergie » de Bluetooth. Elles ne seront PAS utilisées pour déterminer votre position géographie.</string>
|
||||
<string name="permission_background_location_description">CAPod utilise « l’accès à la position en arrière-plan » afin de permettre des fonctions telles qu’« Afficher une fenêtre surgissante » et « Connexion automatique » alors que l’appli est fermée. L’accès à la position en arrière-plan permet à l’appli de recevoir les données « basse énergie » de Bluetooth. Elles ne seront PAS utilisées pour déterminer votre position géographie.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Désactiver les optimisations de la pile/batterie</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">Les optimisations de la pile/batterie empêchent l’appli de recevoir les données Bluetooth de manière fiable alors que l’appli est en arrière-plan.</string>
|
||||
<string name="permission_required_title">L’autorisation suivante est nécessaire :</string>
|
||||
<string name="permission_system_alert_window_label">Fenêtre d’alerte système</string>
|
||||
<string name="permission_system_alert_window_description">Permettre à CAPod d’apparaître par-dessus les autres applis pour rendre la fonction « Afficher une notification » possible.</string>
|
||||
<string name="permission_system_alert_window_description">Permettre à CAPod d’apparaître par-dessus les autres applis pour rendre la fonction « Afficher une fenêtre surgissante » possible.</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">Faible puissance</string>
|
||||
<string name="settings_scanner_mode_balanced_label">Équilibré</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">Faible latence</string>
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">État inconnu</string>
|
||||
<string name="last_seen_x">Vu pour la dernière fois : %s</string>
|
||||
<string name="first_seen_x">Vu pour la première fois : %s</string>
|
||||
<string name="permission_post_notifications_label">Afficher des notifications</string>
|
||||
<string name="permission_post_notifications_description">"Permettre à CAPod d’afficher des notifications au sujet des AirPods, p. ex. leur état actuel alors qu’ils sont connectés."</string>
|
||||
</resources>
|
||||
|
||||
@@ -21,21 +21,21 @@
|
||||
<string name="permission_background_location_label">Accesso in background alla tua posizione</string>
|
||||
<string name="permission_background_location_description">CAPod usa l\'accesso in background alla tua posizione per far funzionare opzioni come \"Mostra popup\" e \"AutoConnect\" mentre l\'applicazione é chiusa. L\'accesso in background abiliterà l\'applicazione nella ricezione di dati Bluetooth a basso consume mentre l\'app non é aperta. Questa applicazione non utilizza i dati Bluetooth per geolocalizzarti.</string>
|
||||
<string name="permission_ignore_battery_optimizations_label">Disabilita ottimizzazione batteria</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">L\'ottimizzazione della batteria impedisce a questa applicazione di ricevere dati Bluetooth mentre l\'app é chiusa.</string>
|
||||
<string name="permission_ignore_battery_optimizations_description">L\'ottimizzazione della batteria impedisce a questa applicazione di ricevere dati Bluetooth mentre l\'app è in esecuzione in background.</string>
|
||||
<string name="permission_required_title">È richiesta la seguente autorizzazione:</string>
|
||||
<string name="permission_system_alert_window_label">Finestra di avviso di sistema</string>
|
||||
<string name="permission_system_alert_window_description">Permetti a CAPod di far apprarire overlay sopra le altre applicazioni per far funzionare \"Mostra PopUp\".</string>
|
||||
<string name="permission_system_alert_window_description">Concedi a CAPod la visualizzazione in primo piano sopra le altre applicazioni per la funzione \"Mostra PopUp\".</string>
|
||||
<string name="settings_scanner_mode_lowpower_label">Basso consumo</string>
|
||||
<string name="settings_scanner_mode_balanced_label">Bilanciato</string>
|
||||
<string name="settings_scanner_mode_lowlatency_label">Bassa latenza</string>
|
||||
<string name="settings_monitor_mode_manual_label">Quando l\'applicazione è aperta</string>
|
||||
<string name="settings_monitor_mode_automatic_label">Quando il device è connesso</string>
|
||||
<string name="settings_monitor_mode_automatic_label">Quando le cuffie sono connesse</string>
|
||||
<string name="settings_monitor_mode_always_label">Sempre</string>
|
||||
<string name="settings_reaction_autoconnect_whenseen_label">Quando rilevato</string>
|
||||
<string name="settings_reaction_autoconnect_caseopen_label">La custodia é aperta</string>
|
||||
<string name="settings_reaction_autoconnect_inear_label">Nell\'orecchio</string>
|
||||
<string name="pods_dual_left_label">Pod sinistra</string>
|
||||
<string name="pods_dual_right_label">Pod destra</string>
|
||||
<string name="pods_dual_left_label">Pod sinistro</string>
|
||||
<string name="pods_dual_right_label">Pod destro</string>
|
||||
<string name="pods_case_label">Custodia</string>
|
||||
<string name="pods_case_status_open_label">Aperto</string>
|
||||
<string name="pods_case_status_closed_label">Chiuso</string>
|
||||
@@ -48,7 +48,7 @@
|
||||
<string name="pods_connection_state_unknown_label">Stato di connessione sconosciuto</string>
|
||||
<string name="pods_unknown_raw_data_label">Dati non elaborati</string>
|
||||
<string name="pods_unknown_label">Dispositivo sconosciuto</string>
|
||||
<string name="pods_unknown_contact_dev">Questo é un dispositivo sconosciutom ma sta utilizzando un formato di comunicazione noto. Aggiungiamo il supporto per questo device, Contattami! :)</string>
|
||||
<string name="pods_unknown_contact_dev">Questo è un dispositivo sconosciuto, ma sta utilizzando un formato di comunicazione noto. Aggiungiamo il supporto per questo dispositivo, contattami :)</string>
|
||||
<string name="pods_none_label_short">Nessun dispositivo</string>
|
||||
<string name="pods_charging_label">In ricarica</string>
|
||||
<string name="pods_inear_label">Nell\'orecchio</string>
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Stato sconosciuto</string>
|
||||
<string name="last_seen_x">Ultimo accesso: %s</string>
|
||||
<string name="first_seen_x">Primo accesso: %s</string>
|
||||
<string name="permission_post_notifications_label">Mostra notifiche</string>
|
||||
<string name="permission_post_notifications_description">"Concedi a CAPod di mostrare notifiche riguardanti le tue AirPods, ad esempio il loro stato di carica mentre sono connesse."</string>
|
||||
</resources>
|
||||
|
||||
@@ -55,4 +55,6 @@
|
||||
<string name="pods_case_unknown_state">Keadaan tidak diketahui</string>
|
||||
<string name="last_seen_x">Terakhir dilihat: %s</string>
|
||||
<string name="first_seen_x">Pertama dilihat: %s</string>
|
||||
<string name="permission_post_notifications_label">Tunjukkan pemberitahuanm</string>
|
||||
<string name="permission_post_notifications_description">"Benarkan CAPod memaparkan pemberitahuan tentang AirPods anda, misalnya, status semasa mereka ketika disambungkan."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Onbekende staat</string>
|
||||
<string name="last_seen_x">Laatst gezien: %s</string>
|
||||
<string name="first_seen_x">Eerst gezien: %s</string>
|
||||
<string name="permission_post_notifications_label">Toon meldingen</string>
|
||||
<string name="permission_post_notifications_description">"Sta CAPod toe om meldingen over je AirPods weer te geven, bijv. hun huidige status terwijl ze verbonden zijn."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Ukjent status</string>
|
||||
<string name="last_seen_x">Sist sett: %s</string>
|
||||
<string name="first_seen_x">Først sett: %s</string>
|
||||
<string name="permission_post_notifications_label">Vis varsler</string>
|
||||
<string name="permission_post_notifications_description">"La CAPod vise varsler om dine AirPods, f.eks. nåværende status under tilkobling."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Nieznany stan</string>
|
||||
<string name="last_seen_x">Ostatnio widziane: %s</string>
|
||||
<string name="first_seen_x">Widziane pierwszy raz: %s</string>
|
||||
<string name="permission_post_notifications_label">Wyświetl powiadomienia</string>
|
||||
<string name="permission_post_notifications_description">"Zezwól CAPod na wyświetlanie powiadomień o słuchawkach AirPods, np. ich aktualnym statusie podczas połączenia."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Estado desconhecido</string>
|
||||
<string name="last_seen_x">Última vez visto: %s</string>
|
||||
<string name="first_seen_x">Primeira vez visto: %s</string>
|
||||
<string name="permission_post_notifications_label">Enviar notificações</string>
|
||||
<string name="permission_post_notifications_description">"Permitir que o CAPod envie notificações sobre os seus AirPods, por exemplo, o seu estado atual enquanto conectado."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Неизвестное состояние</string>
|
||||
<string name="last_seen_x">Последние: %s</string>
|
||||
<string name="first_seen_x">Первые: %s</string>
|
||||
<string name="permission_post_notifications_label">Показывать уведомления</string>
|
||||
<string name="permission_post_notifications_description">"Разрешить CAPod показывать уведомления о Ваших AirPods, например текущий статус при подключении."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Neznámy stav</string>
|
||||
<string name="last_seen_x">Naposledy videné: %s</string>
|
||||
<string name="first_seen_x">Prvýkrát videné: %s</string>
|
||||
<string name="permission_post_notifications_label">Zobraziť oznámenia</string>
|
||||
<string name="permission_post_notifications_description">"Povoľte CAPod, aby zobrazoval upozornenia týkajúce sa vašich slúchadiel AirPods, napr. ich aktuálny stav počas pripojenia."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Bilinmeyen durum</string>
|
||||
<string name="last_seen_x">Son görülme: %s</string>
|
||||
<string name="first_seen_x">İlk görülme: %s</string>
|
||||
<string name="permission_post_notifications_label">Bildirimleri göster</string>
|
||||
<string name="permission_post_notifications_description">"CAPod'un AirPods'larınız hakkında bildirimler göstermesine izin vermelisiniz, ör. cihaza bağlıyken mevcut durumları."</string>
|
||||
</resources>
|
||||
|
||||
@@ -58,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">Невідомий стан</string>
|
||||
<string name="last_seen_x">Востаннє був: %s</string>
|
||||
<string name="first_seen_x">Уперше був: %s</string>
|
||||
<string name="permission_post_notifications_label">Показувати сповіщення</string>
|
||||
<string name="permission_post_notifications_description">"Дозволити CAPod показ сповіщень щодо ваших AirPods, наприклад, їх поточний стан при підключенні."</string>
|
||||
</resources>
|
||||
|
||||
@@ -53,4 +53,6 @@
|
||||
<string name="pods_case_unknown_state">Trạng thái không xác định</string>
|
||||
<string name="last_seen_x">Nhìn thấy lần cuối: %s</string>
|
||||
<string name="first_seen_x">Nhìn thấy lần đầu: %s</string>
|
||||
<string name="permission_post_notifications_label">Hiển thị thông báo</string>
|
||||
<string name="permission_post_notifications_description">"Cho phép CAPod hiển thị thông báo về AirPods của bạn, ví dụ: tình trạng hiện tại của họ trong khi kết nối."</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="app_name">CAPod</string>
|
||||
<string name="app_name_pro">CAPod Pro</string>
|
||||
<string name="app_name_foss">CAPod FOSS</string>
|
||||
<string name="general_value_not_available_label">不可用</string>
|
||||
<string name="general_error_label">错误</string>
|
||||
<string name="general_grant_permission_action">授予权限</string>
|
||||
@@ -55,4 +58,6 @@
|
||||
<string name="pods_case_unknown_state">未知状态</string>
|
||||
<string name="last_seen_x">上次出现:%s</string>
|
||||
<string name="first_seen_x">首次出现:%s</string>
|
||||
<string name="permission_post_notifications_label">显示通知</string>
|
||||
<string name="permission_post_notifications_description">"允许 CAPod 显示有关您 AirPods 的通知,例如其连接时的当前状态"</string>
|
||||
</resources>
|
||||
|
||||
@@ -45,12 +45,9 @@ android {
|
||||
create("gplay") {
|
||||
dimension = "version"
|
||||
signingConfig = signingConfigs["releaseGplay"]
|
||||
extra["useBugsnag"] = true
|
||||
}
|
||||
}
|
||||
|
||||
setupBugsnagPlugin()
|
||||
|
||||
buildTypes {
|
||||
val customProguardRules = fileTree(File("../proguard")) {
|
||||
include("*.pro")
|
||||
@@ -141,7 +138,4 @@ dependencies {
|
||||
|
||||
implementation("androidx.wear:wear:1.2.0")
|
||||
implementation("androidx.wear.tiles:tiles-material:1.1.0")
|
||||
|
||||
"gplayImplementation"("com.bugsnag:bugsnag-android:5.9.2")
|
||||
"gplayImplementation"("com.getkeepsafe.relinker:relinker:1.4.3")
|
||||
}
|
||||
@@ -42,12 +42,9 @@ android {
|
||||
create("gplay") {
|
||||
dimension = "version"
|
||||
signingConfig = signingConfigs["releaseGplay"]
|
||||
extra["useBugsnag"] = true
|
||||
}
|
||||
}
|
||||
|
||||
setupBugsnagPlugin()
|
||||
|
||||
buildTypes {
|
||||
val customProguardRules = fileTree(File(projectDir, "proguard")) {
|
||||
include("*.pro")
|
||||
@@ -150,7 +147,4 @@ dependencies {
|
||||
|
||||
"gplayImplementation"("com.android.billingclient:billing:5.1.0")
|
||||
"gplayImplementation"("com.android.billingclient:billing-ktx:5.1.0")
|
||||
|
||||
"gplayImplementation"("com.bugsnag:bugsnag-android:5.9.2")
|
||||
"gplayImplementation"("com.getkeepsafe.relinker:relinker:1.4.3")
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package eu.darken.capod.common.preferences
|
||||
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.util.AttributeSet
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.AttrRes
|
||||
import androidx.annotation.StyleRes
|
||||
import androidx.preference.Preference
|
||||
import eu.darken.capod.common.debug.logging.Logging.Priority.ERROR
|
||||
import eu.darken.capod.common.debug.logging.log
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
|
||||
|
||||
class IntentPreference @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
@AttrRes defStyleAttr: Int = androidx.preference.R.attr.preferenceStyle,
|
||||
@StyleRes defStyleRes: Int = 0,
|
||||
) : Preference(context, attrs, defStyleAttr, defStyleRes) {
|
||||
|
||||
override fun setIntent(_intent: Intent?) {
|
||||
super.setIntent(_intent)
|
||||
_intent?.let {
|
||||
intent
|
||||
setOnPreferenceClickListener {
|
||||
try {
|
||||
context.startActivity(intent)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
log(TAG, ERROR) { "Failed to launch $intent: $e" }
|
||||
Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show()
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG = logTag("IntentPreference")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package eu.darken.capod.main.ui.onboarding
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.fragment.app.viewModels
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import eu.darken.capod.R
|
||||
import eu.darken.capod.common.PrivacyPolicy
|
||||
import eu.darken.capod.common.WebpageTool
|
||||
import eu.darken.capod.common.uix.Fragment3
|
||||
import eu.darken.capod.common.viewbinding.viewBinding
|
||||
import eu.darken.capod.databinding.OnboardingFragmentBinding
|
||||
import javax.inject.Inject
|
||||
|
||||
|
||||
@AndroidEntryPoint
|
||||
class OnboardingFragment : Fragment3(R.layout.onboarding_fragment) {
|
||||
|
||||
override val vm: OnboardingFragmentVM by viewModels()
|
||||
override val ui: OnboardingFragmentBinding by viewBinding()
|
||||
|
||||
@Inject lateinit var webpageTool: WebpageTool
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
ui.goPrivacyPolicy.setOnClickListener { webpageTool.open(PrivacyPolicy.URL) }
|
||||
ui.continueAction.setOnClickListener { vm.finishOnboarding() }
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package eu.darken.capod.main.ui.onboarding
|
||||
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import eu.darken.capod.common.coroutine.DispatcherProvider
|
||||
import eu.darken.capod.common.debug.logging.logTag
|
||||
import eu.darken.capod.common.uix.ViewModel3
|
||||
import eu.darken.capod.main.core.GeneralSettings
|
||||
import kotlinx.coroutines.flow.*
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class OnboardingFragmentVM @Inject constructor(
|
||||
@Suppress("UNUSED_PARAMETER") handle: SavedStateHandle,
|
||||
private val dispatcherProvider: DispatcherProvider,
|
||||
private val generalSettings: GeneralSettings,
|
||||
) : ViewModel3(dispatcherProvider = dispatcherProvider) {
|
||||
|
||||
fun finishOnboarding() = launch {
|
||||
generalSettings.isOnboardingDone.value = true
|
||||
OnboardingFragmentDirections.actionOnboardingFragmentToOverviewFragment().navigate()
|
||||
}
|
||||
|
||||
companion object {
|
||||
val TAG = logTag("Onboarding", "Fragment", "VM")
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,6 @@ import eu.darken.capod.common.debug.logging.log
|
||||
import eu.darken.capod.common.flow.combine
|
||||
import eu.darken.capod.common.flow.throttleLatest
|
||||
import eu.darken.capod.common.livedata.SingleLiveEvent
|
||||
import eu.darken.capod.common.navigation.navVia
|
||||
import eu.darken.capod.common.permissions.Permission
|
||||
import eu.darken.capod.common.uix.ViewModel3
|
||||
import eu.darken.capod.common.upgrade.UpgradeRepo
|
||||
@@ -48,6 +47,12 @@ class OverviewFragmentVM @Inject constructor(
|
||||
private val bluetoothManager: BluetoothManager2,
|
||||
) : ViewModel3(dispatcherProvider = dispatcherProvider) {
|
||||
|
||||
init {
|
||||
if (!generalSettings.isOnboardingDone.value) {
|
||||
OverviewFragmentDirections.actionOverviewFragmentToOnboardingFragment().navigate()
|
||||
}
|
||||
}
|
||||
|
||||
val upgradeState = upgradeRepo.upgradeInfo.asLiveData2()
|
||||
val launchUpgradeFlow = SingleLiveEvent<(Activity) -> Unit>()
|
||||
|
||||
@@ -124,7 +129,7 @@ class OverviewFragmentVM @Inject constructor(
|
||||
items.add(0, BluetoothDisabledVH.Item)
|
||||
} else if (mainPod == null) {
|
||||
items.add(0, MissingMainDeviceVH.Item {
|
||||
OverviewFragmentDirections.actionOverviewFragmentToTroubleShooterFragment().navVia(this)
|
||||
OverviewFragmentDirections.actionOverviewFragmentToTroubleShooterFragment().navigate()
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -140,12 +145,14 @@ class OverviewFragmentVM @Inject constructor(
|
||||
showDebug = isDebugMode,
|
||||
isMainPod = isMainPod,
|
||||
)
|
||||
|
||||
is SinglePodDevice -> SinglePodsCardVH.Item(
|
||||
now = now,
|
||||
device = it,
|
||||
showDebug = isDebugMode,
|
||||
isMainPod = isMainPod,
|
||||
)
|
||||
|
||||
else -> UnknownPodDeviceCardVH.Item(
|
||||
now = now,
|
||||
device = it,
|
||||
@@ -166,7 +173,7 @@ class OverviewFragmentVM @Inject constructor(
|
||||
}
|
||||
|
||||
fun goToSettings() = launch {
|
||||
OverviewFragmentDirections.actionOverviewFragmentToSettingsFragment().navVia(this@OverviewFragmentVM)
|
||||
OverviewFragmentDirections.actionOverviewFragmentToSettingsFragment().navigate()
|
||||
}
|
||||
|
||||
fun onUpgrade() = launch {
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="32dp">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mascot"
|
||||
android:layout_width="96dp"
|
||||
android:layout_height="96dp"
|
||||
android:layout_marginTop="48dp"
|
||||
android:src="@drawable/splash_graphic2"
|
||||
app:layout_constraintEnd_toEndOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="@id/title"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/title"
|
||||
style="@style/TextAppearance.Material3.HeadlineLarge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/app_name"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/mascot" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/body1"
|
||||
style="@style/TextAppearance.MaterialComponents.Body1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:text="@string/onboarding_body1"
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/body2"
|
||||
style="@style/TextAppearance.MaterialComponents.Body1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/onboarding_body2"
|
||||
app:layout_constraintTop_toBottomOf="@id/body1" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/body3"
|
||||
style="@style/TextAppearance.MaterialComponents.Body1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/onboarding_body3"
|
||||
app:layout_constraintTop_toBottomOf="@id/body2" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/body4"
|
||||
style="@style/TextAppearance.MaterialComponents.Body1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/onboarding_body4"
|
||||
app:layout_constraintTop_toBottomOf="@id/body3" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/go_privacy_policy"
|
||||
style="@style/Widget.Material3.Button.TonalButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="32dp"
|
||||
android:text="@string/settings_privacy_policy_label"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/body4" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/continue_action"
|
||||
style="@style/Widget.Material3.Button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="32dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:text="@string/general_continue_action"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/go_privacy_policy" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</ScrollView>
|
||||
@@ -16,6 +16,9 @@
|
||||
<action
|
||||
android:id="@+id/action_overviewFragment_to_troubleShooterFragment"
|
||||
app:destination="@id/troubleShooterFragment" />
|
||||
<action
|
||||
android:id="@+id/action_overviewFragment_to_onboardingFragment"
|
||||
app:destination="@id/onboardingFragment" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
@@ -27,5 +30,13 @@
|
||||
android:id="@+id/troubleShooterFragment"
|
||||
android:name="eu.darken.capod.troubleshooter.ui.TroubleShooterFragment"
|
||||
tools:layout="@layout/troubleshooter_fragment" />
|
||||
<fragment
|
||||
android:id="@+id/onboardingFragment"
|
||||
android:name="eu.darken.capod.main.ui.onboarding.OnboardingFragment"
|
||||
tools:layout="@layout/onboarding_fragment">
|
||||
<action
|
||||
android:id="@+id/action_onboardingFragment_to_overviewFragment"
|
||||
app:destination="@id/overviewFragment" />
|
||||
</fragment>
|
||||
|
||||
</navigation>
|
||||
@@ -45,7 +45,10 @@
|
||||
<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_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>
|
||||
<string name="settings_popup_caseopen_description">Mostra una finestra emergent quan s\'obre la funda del dispositiu (experimental).</string>
|
||||
<string name="settings_popup_connected_label">Mostra la finestra emergent de connexió</string>
|
||||
<string name="settings_popup_connected_description">Mostra una finestra emergent quan el dispositiu es connecti per primera vegada.</string>
|
||||
<string name="notification_channel_device_status_label">Estat del dispositiu</string>
|
||||
<string name="debug_debuglog_size_label">Mida</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Mida comprimida</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">El CAPod està rebent emissions d\'anuncis BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Incorrecte</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">La resolució de problemes ha fallat. No ha funcionat cap combinació d\'opcions de compatibilitat.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">El vostres telèfon no ha rebut cap dada BLE. Podeu tornar a provar aquesta prova en una zona plena de gent per veure si es poden rebre fonts de dades (que no siguin els vostres auriculars). No rebre dades indica un problema amb el sistema operatiu del telèfon.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">El vostre telèfon ha rebut dades BLE, però les dades no provenen de cap dispositiu compatible. Teniu els auriculars encesos? El CAPod és compatible amb els vostres auriculars?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Torna-ho a provar</string>
|
||||
<string name="troubleshoot_action">Resolució de problemes</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<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_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>
|
||||
<string name="settings_popup_caseopen_description">Zobrazit vyskakovací okno, pokud je pouzdro zařízení otevřeno (experimentální).</string>
|
||||
<string name="settings_popup_connected_label">Zobrazit vyskakovací okno při připojení</string>
|
||||
<string name="settings_popup_connected_description">Zobrazit vyskakovací okno při prvním připojení zařízení.</string>
|
||||
<string name="notification_channel_device_status_label">Stav zařízení</string>
|
||||
<string name="debug_debuglog_size_label">Velikost</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Komprimovaná velikost</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod přijímá reklamní vysílání BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Neúspěšné</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Řešení problémů se nezdařilo. Žádná kombinace možností kompatibility nepomohla.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefon nepřijal vůbec žádná data BLE. Tento test můžete zopakovat v přelidněném prostoru, abyste zjistili, zda lze přijímat i jiné zdroje dat (než vaše sluchátka). Nepřijímání dat ukazuje na problém s operačním systémem telefonu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefon přijal data BLE, ale data nepocházejí z žádného podporovaného zařízení. Jsou sluchátka zapnutá? Podporuje CAPod vaše sluchátka?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Zkusit znovu</string>
|
||||
<string name="troubleshoot_action">Vyřešit problém</string>
|
||||
|
||||
@@ -32,6 +32,12 @@
|
||||
<string name="settings_reaction_label">Αντιδράσεις</string>
|
||||
<string name="settings_reaction_description">Αντίδραση σε συμβάντα και συμπεριφορές.</string>
|
||||
<string name="settings_category_yourdevice_label">Η συσκευή σας</string>
|
||||
<string name="settings_category_compatibility_options_title">Ρυθμίσεις συμβατότητας</string>
|
||||
<string name="settings_category_compatibility_options_description">Μην αγγίζεις άμα όλα δουλεύουν ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Απενεργοποίηση φιλτραρίσματος υλικού</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Μην μεταβιβάζετε φιλτράρισμα δεδομένων στο σύστημα, αλλά λάβετε όλα τα δεδομένα και φιλτράρετε τα μέσα στην εφαρμογή.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Απενεργοποίηση παρτίδας υλικού</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Μην αφήσετε την ομάδα συστήματος να συλλέξει δεδομένα BLE πριν τα προχωρήσει σε εμάς.</string>
|
||||
<string name="settings_maindevice_address_label">Διεύθυνση της συσκευής σας</string>
|
||||
<string name="settings_maindevice_address_description">Η διεύθυνση της αντιστοιχισμένης συσκευής σας. Η εφαρμογή τη χρησιμοποιεί για να προσδιορίσει εάν η συσκευή σας είναι συνδεδεμένη στο τηλέφωνό σας.</string>
|
||||
<string name="settings_maindevice_address_none">Καμία</string>
|
||||
@@ -39,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Το μοντέλο της κύριας συσκευής σας. Αυτό βοηθά την εφαρμογή να αναγνωρίσει τη συσκευή σας όταν δεν είναι συνδεδεμένη στο τηλέφωνό σας.</string>
|
||||
<string name="settings_onepod_mode_label">Λειτουργία ενός pod</string>
|
||||
<string name="settings_onepod_mode_description">Δεν απαιτείται να φοράτε και τα δύο pods, αρκεί να φοράτε ένα μόνο pod για να ενεργοποιούνται αντιδράσεις.</string>
|
||||
<string name="settings_popup_caseopen_label">Εμφάνιση πληροφοριών θήκης</string>
|
||||
<string name="settings_popup_caseopen_description">Εμφάνιση αναδυόμενου όταν η θήκη της συσκευής είναι ανοιχτή (πειραματικό).</string>
|
||||
<string name="settings_popup_connected_label">Εμφάνιση παραθυράκι σύνδεσης</string>
|
||||
<string name="settings_popup_connected_description">Εμφάνιση παραθύρου όταν η συσκευή συνδέεται για πρώτη φορά.</string>
|
||||
<string name="notification_channel_device_status_label">Κατάσταση συσκευής</string>
|
||||
<string name="debug_debuglog_size_label">Μέγεθος</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Συμπιεσμένο μέγεθος</string>
|
||||
@@ -52,6 +61,7 @@
|
||||
<string name="settings_support_description">Εάν χρειάζεστε κάποια βοήθεια.</string>
|
||||
<string name="issue_tracker_label">Εργαλείο παρακολούθησης θεμάτων</string>
|
||||
<string name="issue_tracker_description">Δημόσιο εργαλείο παρακολούθησης θεμάτων για αναφορές σφαλμάτων και αιτήματα για δυνατότητες (μόνο αγγλικά).</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
<string name="discord_description">Ένα μέρος για να αράξετε και να κάνετε ερωτήσεις.</string>
|
||||
<string name="changelog_label">Αρχείο αλλαγών</string>
|
||||
<string name="settings_label">Ρυθμίσεις</string>
|
||||
@@ -73,5 +83,22 @@
|
||||
<string name="help_translate_label">Μετάφραση</string>
|
||||
<string name="help_translate_description">Βοηθήστε να μεταφραστεί αυτή η εφαρμογή στην αγαπημένη σας γλώσσα.</string>
|
||||
<string name="translators_thanks_title">Μεταφραστές</string>
|
||||
<string name="translators_thanks_description">Vagelis1608</string>
|
||||
<string name="translators_thanks_description">Vagelis1608;Theodoros Asimakopoulos;gogoboss_stampolidis;Matthias;Christos Chronopoulos</string>
|
||||
<string name="widget_description">Ένα γραφικό στοιχείο που δείχνει την τελευταία γνωστή κατάσταση συσκευής.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Έμμεση παράδοση δεδομένων</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Χρησιμοποιήστε εναλλακτική μέθοδο για να λάβετε δεδομένα BLE από το σύστημα (broadcast αντί για callback).</string>
|
||||
<string name="troubleshooter_title">Αντιμετώπιση προβλημάτων</string>
|
||||
<string name="troubleshooter_ble_intro_title">Εκπομπές Χαμηλής Ενέργειας Bluetooth</string>
|
||||
<string name="troubleshooter_ble_intro_body1">Τα AirPods (και παρόμοια ακουστικά) μεταδίδουν πληροφορίες κατάστασης χρησιμοποιώντας μια τεχνολογία BLE που ονομάζεται \"διαφημίσεις\". Ορισμένα τηλέφωνα δεν εφαρμόζουν σωστά αυτήν την τεχνολογία. Το CAPod μπορεί να προσπαθήσει να το διορθώσει δοκιμάζοντας διαφορετικές επιλογές συμβατότητας μέχρι να ληφθούν δεδομένα. Ξεκινήστε την αναπαραγωγή μουσικής στα ακουστικά σας και τοποθετήστε τα κοντά στο τηλέφωνό σας και, στη συνέχεια, ξεκινήστε τη διαδικασία.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Ξεκινήστε την αντιμετώπιση προβλημάτων</string>
|
||||
<string name="troubleshooter_ble_process_title">Αντιμετώπιση προβλημάτων σε εξέλιξη</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Κάθε βήμα διαρκεί 5-10 δευτερόλεπτα</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Επιτυχία</string>
|
||||
<string name="troubleshooter_ble_result_success_body">Οι διαφημιστικές εκπομπές BLE λαμβάνονται από το CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Ανεπιτυχής</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Η αντιμετώπιση προβλημάτων απέτυχε. Κανένας συνδυασμός επιλογών συμβατότητας δεν βοήθησε.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Το τηλέφωνό σας δεν έλαβε καθόλου δεδομένα BLE. Μπορείτε να δοκιμάσετε ξανά αυτήν τη δοκιμή σε μια πολυσύχναστη περιοχή για να δείτε εάν μπορούν να ληφθούν πηγές δεδομένων (εκτός από τα ακουστικά σας). Δε λαμβάνονται δεδομένα που δείχνουν ένα πρόβλημα με το λειτουργικό σύστημα του τηλεφώνου σας.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Το τηλέφωνό σας έλαβε δεδομένα BLE, αλλά τα δεδομένα δεν προέρχονται από καμία υποστηριζόμενη συσκευή. Είναι ενεργοποιημένα τα ακουστικά σας; Το CAPod υποστηρίζει τα ακουστικά σας;</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Δοκιμάστε ξανά</string>
|
||||
<string name="troubleshoot_action">Αντιμετώπιση</string>
|
||||
</resources>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">El modelo de su dispositivo principal. Esto ayuda a que la aplicación reconozca su dispositivo cuando no está conectado a su teléfono.</string>
|
||||
<string name="settings_onepod_mode_label">Modo un audífono</string>
|
||||
<string name="settings_onepod_mode_description">No es necesario usar ambos AirPods, usar un solo AirPod es suficiente para desencadenar reacciones.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar una ventana emergente</string>
|
||||
<string name="settings_popup_caseopen_description">Muestra una ventana emergente cuando se abre el estuche del dispositivo (experimental).</string>
|
||||
<string name="settings_popup_connected_label">Mostrar una ventana emergente con la conexión</string>
|
||||
<string name="settings_popup_connected_description">Mostrar una ventana emergente cuando el dispositivo se conecta por primera vez.</string>
|
||||
<string name="notification_channel_device_status_label">Estado del dispositivo</string>
|
||||
<string name="debug_debuglog_size_label">Tamaño</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Tamaño comprimido</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod recibe las emisiones de anuncios BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Incorrecto</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">La solución de problemas falló. Ninguna combinación de las opciones de compatibilidad ayudó.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Tu teléfono no ha recibido ningún dato BLE. Puedes volver a intentar esta prueba en una zona concurrida para ver si se pueden recibir fuentes de datos (distintas de los auriculares). El hecho de que no se reciban datos apunta a un problema con el sistema operativo del teléfono.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Tu teléfono recibió los datos BLE, pero los datos no proceden de ningún dispositivo compatible. ¿Están encendidos tus auriculares? ¿Es CAPod compatible con tus auriculares?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Vuelve a intentarlo</string>
|
||||
<string name="troubleshoot_action">Reparador de los problemas</string>
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Süsteemis andmete filtreerimise asemel saate seda teha rakenduses.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Keela riistvara rühmitamine</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Keelake süsteemil rühmitada kogutud andmeid madalama energiatarbimisega Bluetoothi kohta enne meile saatmist.</string>
|
||||
<string name="settings_popup_caseopen_label">Näita kaane hüpikakent</string>
|
||||
<string name="settings_popup_connected_label">Näita ühenduse hüpikakent</string>
|
||||
<string name="settings_popup_connected_description">Näita seadme esmaühendumisel hüpikakent.</string>
|
||||
<string name="widget_description">Viimast teadaolevat seadme seisu näitab vidin.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Kaudsete andmete edastamine</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Süsteemis vähem energiat tarbiva Bluetoothi andmete saamine muul viisil (edasta tagasi kutsumise asemel).</string>
|
||||
@@ -19,6 +22,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod võtab vastu madalama energiakuluga Bluetoothi kaudu reklaame.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Nurjus</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Parandamine nurjus. Ükski ühilduvuskombinatsioonidest ei toiminud.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefon ei võtnud vastu mingeid andmeid madalama energiakuluga Buetoothi kaudu. Üritage korrate rahvarohkes kohas, et näha, kas andmete allikaid (mis pole teie kõrvaklapid) saab kätte. Andmete saamise nurjumine viitab telefoni operatsioonisüsteemi veale.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefoni saabusid andmed madalama energiakuluga Bluetoothi kaudu aga andmed ei pärine ühestki ühilduvast seadmest. Kas CAPod ühildub teie kõrvaklapiga?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Proovi uuesti</string>
|
||||
<string name="troubleshoot_action">Lahendamine</string>
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"></resources>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="general_share_action">Share</string>
|
||||
</resources>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<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_onepod_mode_label">Mode à un seul AirPod</string>
|
||||
<string name="settings_onepod_mode_description">Il n’est pas nécessaire de porter deux AirPods, en porter un seul suffit à déclencher les réactions.</string>
|
||||
<string name="settings_popup_caseopen_description">Afficher une notification à l’ouverture de l’étui de l\'appareil (expérimental).</string>
|
||||
<string name="settings_popup_caseopen_label">Afficher une fenêtre pour l’étui</string>
|
||||
<string name="settings_popup_caseopen_description">Afficher une fenêtre surgissante à l’ouverture de l’étui de l\'appareil (expérimental).</string>
|
||||
<string name="settings_popup_connected_label">Afficher une fenêtre de connection</string>
|
||||
<string name="settings_popup_connected_description">Afficher une fenêtre surgissante quand l’appareil se connecte pour la première fois.</string>
|
||||
<string name="notification_channel_device_status_label">État de l’appareil</string>
|
||||
<string name="debug_debuglog_size_label">Taille</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Taille compressée</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">Les diffusions d’annonces BÉB sont reçues par CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Échec du dépannage</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Le dépannage a échoué. Aucune des options de compatibilité n’a réglé la situation.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Votre téléphone n’a reçu aucune donnée BÉB. Vous pouvez relancer le test dans un endroit bondé pour voir si des sources de données (autres que votre casque d’écoute) sont reçues. Si aucune donnée n’est reçue, le problème pourrait provenir du système d’exploitation de votre téléphone.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Votre téléphone a reçu des données, mais les données ne proviennent pas d’un appareil pris en charge. Votre casque d’écoute est-il en fonction ? CAPod prend-il votre casque d’écoute en charge ?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Réessayer</string>
|
||||
<string name="troubleshoot_action">Dépanner</string>
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
<string name="general_close_action">Chiudi</string>
|
||||
<string name="upgrade_capod_label">Aggiorna CAPod</string>
|
||||
<string name="upgrade_capod_description">Ottieni funzionalità aggiuntive e supporta lo sviluppatore.</string>
|
||||
<string name="settings_monitor_mode_label">Modalità monitor</string>
|
||||
<string name="settings_monitor_mode_label">Modalità monitoraggio</string>
|
||||
<string name="settings_monitor_mode_description">Sotto quali circostanze questa applicazione monitora i dati Bluetooth.</string>
|
||||
<string name="settings_scanner_mode_label">Modalità di scansione</string>
|
||||
<string name="settings_scanner_mode_description">Il bluetooth a basso consumo energetico dovrebbe dare priorità alle performance o al risparmio della batteria?</string>
|
||||
<string name="settings_scanner_mode_description">Il Bluetooth a basso consumo energetico dovrebbe dare priorità alle performance o risparmiare batteria?</string>
|
||||
<string name="settings_autopause_label">Pausa automatica</string>
|
||||
<string name="settings_autopause_description">Metti in pausa l\'audio quando viene rimossa la cuffia da un orecchio.</string>
|
||||
<string name="settings_showall_label">Mostra tutti i dispositivi</string>
|
||||
@@ -26,15 +26,18 @@
|
||||
<string name="settings_signal_minimum_label">Qualità del segnale minima</string>
|
||||
<string name="settings_signal_minimum_description">La minima qualità del segnale che il dispositivo necessità per poter essere considerato tuo.</string>
|
||||
<string name="settings_autoconnect_label">Connessione automatica</string>
|
||||
<string name="settings_autoconnect_description">Se android non si connette automaticamente, noi possiamo chiedergli di farlo. Questo imposterà la modalità di monitoramento su \'sempre\'.</string>
|
||||
<string name="settings_autoconnect_description">Se Android non si connette automaticamente, possiamo chiedergli di farlo. Questo imposterà la modalità di monitoraggio su \'Sempre\'.</string>
|
||||
<string name="settings_autoconnect_condition_label">Condizione per la connessione automatica</string>
|
||||
<string name="settings_autoconnect_condition_description">Quando dovremmo provare a connetere il tuo dispositivo?</string>
|
||||
<string name="settings_autoconnect_condition_description">Quando dovremmo provare a connettere il tuo dispositivo?</string>
|
||||
<string name="settings_reaction_label">Reazioni</string>
|
||||
<string name="settings_reaction_description">Reazione ad eventi o comportamenti.</string>
|
||||
<string name="settings_reaction_description">Reazione a eventi o comportamenti.</string>
|
||||
<string name="settings_category_yourdevice_label">Il tuo dispositivo</string>
|
||||
<string name="settings_category_compatibility_options_title">Opzioni di compatibilità</string>
|
||||
<string name="settings_category_compatibility_options_description">Non toccare se funziona tutto ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">Disabilita il filtro hardware</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">Non delegare il filtraggio dei dati al sistema, invece ricevi tutti i dati e filtrali nell\'applicazione.</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">Disabilita il batching hardware</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">Non concedere al sistema di raggruppare i dati BLE raccolti prima di inviarli a noi.</string>
|
||||
<string name="settings_maindevice_address_label">L\'indirizzo del tuo dispositivo</string>
|
||||
<string name="settings_maindevice_address_description">L\'indirizzo del dispositivo connesso. L\'applicazione usa questo per determinare quando il tuo dispositivo è connesso al telefono.</string>
|
||||
<string name="settings_maindevice_address_none">Niente</string>
|
||||
@@ -42,19 +45,22 @@
|
||||
<string name="settings_maindevice_model_description">Il modello del tuo dispositivo principale. Questo aiuta la applicazione a riconoscere il tuo dispositivo quando non è connesso al tuo telefono.</string>
|
||||
<string name="settings_onepod_mode_label">Modalità singolo pod</string>
|
||||
<string name="settings_onepod_mode_description">Indossare entrambi i pod non è necessario, indossare un singolo pod è sufficiente per far funzionare le reazioni.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostra popup della custodia</string>
|
||||
<string name="settings_popup_caseopen_description">Mostra un popup quando la custodia del dispositivo è aperta (sperimentale).</string>
|
||||
<string name="settings_popup_connected_label">Mostra popup di connessione</string>
|
||||
<string name="settings_popup_connected_description">Mostra un popup quando il dispositivo viene connesso per la prima volta.</string>
|
||||
<string name="notification_channel_device_status_label">Stato dispositivo</string>
|
||||
<string name="debug_debuglog_size_label">Dimensione</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Dimensione compressa</string>
|
||||
<string name="debug_notification_channel_label">Notifiche di Debug</string>
|
||||
<string name="debug_debuglog_file_label">Log file salvato</string>
|
||||
<string name="debug_debuglog_file_label">File di log registrati</string>
|
||||
<string name="debug_debuglog_record_action">Log di debug</string>
|
||||
<string name="settings_support_installid_label">ID installazione</string>
|
||||
<string name="settings_support_installid_desc">Le segnalazioni automatiche degli errori sono anonime. Condividi il tuo ID di installazione con lo sviluppatore se necessità di trovare la tua segnalazione all\'interno del registro segnalazioni.</string>
|
||||
<string name="settings_support_installid_label">ID d\'installazione</string>
|
||||
<string name="settings_support_installid_desc">Le segnalazioni automatiche degli errori sono anonime. Condividi il tuo ID d\'installazione con lo sviluppatore se necessita di trovare la tua segnalazione all\'interno del registro segnalazioni.</string>
|
||||
<string name="settings_support_label">Supporto</string>
|
||||
<string name="settings_support_description">Se ti serve un aiuto.</string>
|
||||
<string name="issue_tracker_label">Tracker problemi</string>
|
||||
<string name="issue_tracker_description">Un issue tracker pubblico per segnalare i problemi e le richieste per aggiungere nuove funzionalità (solo in inglese).</string>
|
||||
<string name="settings_support_description">Se ti serve aiuto.</string>
|
||||
<string name="issue_tracker_label">Tracker di problemi</string>
|
||||
<string name="issue_tracker_description">Un tracker di problemi pubblico per segnalare problemi e richieste di nuove funzionalità (solo in inglese).</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
<string name="discord_description">Un posto dove poter fare domande.</string>
|
||||
<string name="changelog_label">Changelog</string>
|
||||
@@ -77,11 +83,23 @@
|
||||
<string name="help_translate_label">Traduzione</string>
|
||||
<string name="help_translate_description">Aiuta a tradurre l\'applicazione nella tua lingua preferita.</string>
|
||||
<string name="translators_thanks_title">Traduttori</string>
|
||||
<string name="translators_thanks_description">darken</string>
|
||||
<string name="translators_thanks_description">darken
|
||||
Filippo Lolli</string>
|
||||
<string name="widget_description">Un widget che mostra l\'ultimo stato del dispositivo.</string>
|
||||
<string name="settings_compat_indirectcallback_title">Consegna indiretta dei dati</string>
|
||||
<string name="settings_compat_indirectcallback_summary">Utilizza un metodo alternativo per ricevere dati BLE dal sistema (broadcast invece di callback).</string>
|
||||
<string name="troubleshooter_title">Risoluzione dei problemi</string>
|
||||
<string name="troubleshooter_ble_intro_title">Trasmissioni con Bluetooth Low Energy</string>
|
||||
<string name="troubleshooter_ble_intro_body1">Le AirPods (e cuffie simili) trasmettono le informazioni di stato utilizzando una tecnologia BLE chiamata \"annunci\". Alcuni smartphone non implementano questa tecnologia correttamente. CAPod può provare a risolvere ciò provando opzioni compatibili differenti fino a quando i dati vengono ricevuti. Riproduci della musica nelle cuffie e mettile vicino al tuo smartphone, successivamente avvia la procedura.</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">Avvia la risoluzione dei problemi</string>
|
||||
<string name="troubleshooter_ble_process_title">Risoluzione dei problemi in corso</string>
|
||||
<string name="troubleshooter_ble_process_subtile">Ogni passaggio richiede 5-10 secondi</string>
|
||||
<string name="troubleshooter_ble_result_success_title">Eseguito</string>
|
||||
<string name="troubleshooter_ble_result_success_body">La trasmissione \"annunci\" BLE è stata ricevuta da CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Fallito</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Diagnostica fallita. Nessuna combinazione di opzioni compatibili ha funzionato.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Il tuo smartphone non ha ricevuto dati BLE. Puoi riprovare questo test in un area affollata per vedere se le fonti dati (diverse dalle tue cuffie) vengono ricevuti. La mancata ricezione indica un possibile problema del sistema operativo del tuo smartphone.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Il tuo smartphone ha ricevuto i dati BLE, ma i dati non provengono da un dispositivo supportato. Le tue cuffie sono accese/cariche? CAPod supporta le tue cuffie?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Riprova</string>
|
||||
<string name="troubleshoot_action">Risoluzione dei problemi</string>
|
||||
</resources>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<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_onepod_mode_label">Satu mod pod</string>
|
||||
<string name="settings_onepod_mode_description">Tidak perlu memakai kedua-dua pod, memakai satu pod sudah memadai untuk mencetuskan tindak balas.</string>
|
||||
<string name="settings_popup_caseopen_label">Tunjukkan pop timbul kes</string>
|
||||
<string name="settings_popup_caseopen_description">Tunjukkan popup apabila sarung peranti dibuka (percubaan).</string>
|
||||
<string name="settings_popup_connected_label">Tunjukkan pop timbul sambungan</string>
|
||||
<string name="settings_popup_connected_description">Tunjukkan pop timbul apabila peranti terhubung buat kali pertama.</string>
|
||||
<string name="notification_channel_device_status_label">Status peranti</string>
|
||||
<string name="debug_debuglog_size_label">Saiz</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Saiz termampat</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">Siaran iklan BLE sedang diterima oleh CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Tidak berjaya</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Penyelesaian masalah gagal. Tiada gabungan pilihan keserasian dapat membantu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefon anda tidak menerima sebarang data BLE sama sekali.. Anda boleh mencuba semula ujian ini di kawasan yang sesak untuk melihat sama ada sumber data (selain fon kepala anda) boleh diterima. Tiada data yang diterima menunjukkan masalah dengan sistem pengendalian telefon anda.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefon anda menerima data BLE, tetapi data itu tidak datang daripada mana-mana peranti yang disokong. Adakah fon kepala anda dihidupkan? Adakah CAPod menyokong fon kepala anda?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Cuba semula</string>
|
||||
<string name="troubleshoot_action">Selesaikan masalah</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Het model van uw hoofdapparaat. Dit helpt de app uw apparaat te herkennen wanneer het niet is verbonden met uw telefoon.</string>
|
||||
<string name="settings_onepod_mode_label">Eén pod-modus</string>
|
||||
<string name="settings_onepod_mode_description">Het dragen van beide pods is niet vereist, het dragen van een enkele pod is voldoende om reacties uit te lokken.</string>
|
||||
<string name="settings_popup_caseopen_label">Case-pop-up weergeven</string>
|
||||
<string name="settings_popup_caseopen_description">Een pop-up weergeven wanneer de behuizing van het apparaat wordt geopend (experimenteel).</string>
|
||||
<string name="settings_popup_connected_label">Verbindingspop-up weergeven</string>
|
||||
<string name="settings_popup_connected_description">Toon een pop-up wanneer het apparaat voor de eerste keer verbinding maakt.</string>
|
||||
<string name="notification_channel_device_status_label">Apparaatstatus</string>
|
||||
<string name="debug_debuglog_size_label">Grootte</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Gecomprimeerde grootte</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">BLE-advertentie-uitzendingen worden door CAPod ontvangen.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Mislukt</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Problemen oplossen mislukt. Geen enkele combinatie van compatibiliteitsopties heeft geholpen.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Je telefoon heeft helemaal geen BLE-gegevens ontvangen. Je kunt deze test opnieuw proberen in een druk gebied om te zien of gegevensbronnen (anders dan uw hoofdtelefoon) kunnen worden ontvangen. Er worden geen gegevens ontvangen die wijzen op een probleem met het besturingssysteem van uw telefoon.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Je telefoon heeft BLE-gegevens ontvangen, maar de gegevens zijn niet afkomstig van een ondersteund apparaat. Staat je koptelefoon aan? Ondersteunt CAPod je koptelefoon?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Probeer opnieuw</string>
|
||||
<string name="troubleshoot_action">Problemen oplossen</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Modellen til hovedenheten din. Dette hjelper appen med å gjenkjenne enheten din når den ikke er koblet til telefonen.</string>
|
||||
<string name="settings_onepod_mode_label">En pod modus</string>
|
||||
<string name="settings_onepod_mode_description">Du trenger kun ha på deg en pod for å utløse reaksjoner, i stedet for begge.</string>
|
||||
<string name="settings_popup_caseopen_label">Vis etui popup</string>
|
||||
<string name="settings_popup_caseopen_description">Vis en popup når enhetens deksel åpnes (eksperimentelt).</string>
|
||||
<string name="settings_popup_connected_label">Vis tilkobling popup</string>
|
||||
<string name="settings_popup_connected_description">Vis en popup første gang enheten kobles til.</string>
|
||||
<string name="notification_channel_device_status_label">Enhetsstatus</string>
|
||||
<string name="debug_debuglog_size_label">Størrelse</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Komprimert størrelse</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">BLE advertisement kringkastinger blir mottatt av CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Mislykket</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Feilsøking mislyktes. Ingen kombinasjoner av kompatibilitets-alternativer fungerte.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefonen din mottok ingen BLE-data i det hele tatt. Du kan prøve denne testen på nytt i et folksomt område for å se om datakilder (annet enn hodetelefonene dine) kan mottas. Ingen data mottatt peker mot et problem med telefonens operativsystem.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefonen din mottok BLE-data, men dataene kommer ikke fra en støttet enhet. Er hodetelefonene dine slått på? Støtter CAPod din type hodetelefoner?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Prøv igjen</string>
|
||||
<string name="troubleshoot_action">Feilsøk</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Model twojego głównego urządzenia. Pomaga aplikacji rozpoznać twoje urządzenie, gdy nie jest połączone z telefonem.</string>
|
||||
<string name="settings_onepod_mode_label">Tryb jednego pod\'a</string>
|
||||
<string name="settings_onepod_mode_description">Noszenie obu pod\'ów nie jest wymagane. Wystarczy jeden, aby aktywować reakcje.</string>
|
||||
<string name="settings_popup_caseopen_label">Wyświetl okienko przybornika</string>
|
||||
<string name="settings_popup_caseopen_description">Wyświetla informację, gdy obudowa urządzenia jest otwarta (eksperymentalnie).</string>
|
||||
<string name="settings_popup_connected_label">Wyświetl okienko połączenia</string>
|
||||
<string name="settings_popup_connected_description">Wyświetla okienko, gdy urządzenie łączy się po raz pierwszy.</string>
|
||||
<string name="notification_channel_device_status_label">Status urządzenia</string>
|
||||
<string name="debug_debuglog_size_label">Rozmiar</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Rozmiar skompresowanego</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">Audycje reklamowe BLE są odbierane przez CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Niepowodzenie</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Rozwiązywanie problemów nie powiodło się. Nie pomogła żadna kombinacja opcji kompatybilności.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Twój telefon nie odebrał żadnych danych BLE. Możesz ponowić test w zatłoczonym obszarze, aby sprawdzić, czy źródła danych (inne niż twoje słuchawki) mogą być odbierane. Brak odbioru danych wskazuje na problem z systemem operacyjnym telefonu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Twój telefon odebrał dane BLE, jednak nie pochodzą one od obsługiwanego urządzenia. Czy twoje słuchawki są włączone? Czy CAPod obsługuje twoje słuchawki?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Spróbuj ponownie</string>
|
||||
<string name="troubleshoot_action">Rozwiązywanie problemów</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">O modelo do seu dispositivo principal. Isto ajuda a aplicação a reconhecer o seu dispositivo quando não está conectado ao seu telemóvel.</string>
|
||||
<string name="settings_onepod_mode_label">Modo de um pod</string>
|
||||
<string name="settings_onepod_mode_description">Usar os dois pods não é necessário, usar um único pod é suficiente para desencadear reações.</string>
|
||||
<string name="settings_popup_caseopen_label">Mostrar pop-up da caixa</string>
|
||||
<string name="settings_popup_caseopen_description">Mostrar pop-up quando a caixa do dispositivo está aberta (experimental).</string>
|
||||
<string name="settings_popup_connected_label">Mostrar pop-up da conexão</string>
|
||||
<string name="settings_popup_connected_description">Mostrar pop-up quando o dispositivo conecta pela primeira vez.</string>
|
||||
<string name="notification_channel_device_status_label">Estado do dispositivo</string>
|
||||
<string name="debug_debuglog_size_label">Tamanho</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Tamanho comprimido</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">As transmissões de anúncios BLE são recebidas pelo CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Sem sucesso</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">A resolução de problemas falhou. Nenhuma combinação de opções de compatibilidade funcionou.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">O seu telemóvel não recebeu nenhum dado BLE. Tente novamente numa zona movimentada para ver se fontes de dados (fora dos seus auscultadores) podem ser recebidas. Nenhum dado recebido significa um problema no sistema operativo do seu telemóvel.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">O seu telefone recebeu dados BLE, mas os dados não vêm de nenhum dispositivo compatível. Os seus auscultadores estão ligados? O CAPod é compatível com os seus auscultadores?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Tentar de novo</string>
|
||||
<string name="troubleshoot_action">Resolver problemas</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Модель Вашего основного устройства. Это помогает приложению опознать Ваше устройство, когда оно не подключено к Вашему телефону.</string>
|
||||
<string name="settings_onepod_mode_label">Режим одного наушника</string>
|
||||
<string name="settings_onepod_mode_description">Нет необходимости носить оба наушника, один наушник уже запускает реакции.</string>
|
||||
<string name="settings_popup_caseopen_label">Показать открытие футляра</string>
|
||||
<string name="settings_popup_caseopen_description">Показывать всплывающее окно, когда футляр открыт (эксперимент).</string>
|
||||
<string name="settings_popup_connected_label">Показать соединение</string>
|
||||
<string name="settings_popup_connected_description">Показывать окно при первом подключении.</string>
|
||||
<string name="notification_channel_device_status_label">Статус устройства</string>
|
||||
<string name="debug_debuglog_size_label">Размер</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Сжатый размер</string>
|
||||
@@ -95,6 +98,7 @@ AL_Cool_T</string>
|
||||
<string name="troubleshooter_ble_result_success_body">BLE рекламные трансляции принимаются на CAPod.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Неудачный</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Не удалось устранить неполадки. Ни одна комбинация параметров совместимости не помогала.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Ваш телефон не получал никаких BLE данных. Вы можете повторить этот тест в людном месте, чтобы проверить, могут ли быть получены данные (c других источников кроме наушников). Отсутствие полученных данных указывает на проблему с операционной системой Вашего телефона.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Ваш телефон получил BLE данные, но данные не поступают ни с одного поддерживаемого устройства. Ваши наушники включены? Поддерживает ли CAPod ваши наушники?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Попробуйте еще раз</string>
|
||||
<string name="troubleshoot_action">Устранение неполадок</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Model vášho hlavného zariadenia. Pomáha to aplikácii rozpoznať vaše zariadenie, keď nie je pripojené k telefónu.</string>
|
||||
<string name="settings_onepod_mode_label">Režim jedného slúchadla</string>
|
||||
<string name="settings_onepod_mode_description">Nosenie oboch slúchadiel nie je potrebné, na spustenie reakcií postačuje nosenie jedného slúchadla.</string>
|
||||
<string name="settings_popup_caseopen_label">Zobraziť vyskakovacie okno puzdra</string>
|
||||
<string name="settings_popup_caseopen_description">Po otvorení puzdra zariadenia zobraziť kontextové okno (experimentálne).</string>
|
||||
<string name="settings_popup_connected_label">Zobraziť vyskakovacie okno pri pripojení</string>
|
||||
<string name="settings_popup_connected_description">Pri prvom pripojení zariadenia zobraziť vyskakovacie okno.</string>
|
||||
<string name="notification_channel_device_status_label">Stav zariadenia</string>
|
||||
<string name="debug_debuglog_size_label">Veľkosť</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Komprimovaná veľkosť</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod prijíma reklamné vysielanie BLE.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Neúspešné</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Riešenie problémov zlyhalo. Nepomohla žiadna kombinácia možností kompatibility.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Váš telefón neprijal vôbec žiadne údaje BLE. Tento test môžete zopakovať v preplnenej oblasti a zistiť, či je možné prijímať zdroje údajov (iné ako vaše slúchadlá). Žiadne prijímané údaje neukazujú na problém s operačným systémom vášho telefónu.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Váš telefón prijal údaje BLE, ale údaje nepochádzajú zo žiadneho podporovaného zariadenia. Máte zapnuté slúchadlá? Podporuje CAPod vaše slúchadlá?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Skúste znova</string>
|
||||
<string name="troubleshoot_action">Riešiť problém</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Ana aygıtın modeli. Bu, uygulamanın telefonunuza bağlı olmadığında aygıtınızı tanımasına yardımcı olur.</string>
|
||||
<string name="settings_onepod_mode_label">Tek kulaklık modu</string>
|
||||
<string name="settings_onepod_mode_description">Her iki kulaklığı da takmak gerekli değildir, tek bir kulaklık takmak eylemleri tetiklemek için yeterlidir.</string>
|
||||
<string name="settings_popup_caseopen_label">Şarj kutusu için açılır pencere göster</string>
|
||||
<string name="settings_popup_caseopen_description">Şarj kutusu açıldığında açılır bir pencere gösterir (deneysel).</string>
|
||||
<string name="settings_popup_connected_label">Bağlantı için açılır pencere göster</string>
|
||||
<string name="settings_popup_connected_description">Cihaz ilk kez bağlantı kurduğunda, açılır bir pencere gösterir.</string>
|
||||
<string name="notification_channel_device_status_label">Aygıt durumu</string>
|
||||
<string name="debug_debuglog_size_label">Boyut</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Sıkıştırılmış boyut</string>
|
||||
@@ -55,7 +58,7 @@
|
||||
<string name="settings_support_installid_label">Kurulum Kimliği</string>
|
||||
<string name="settings_support_installid_desc">Otomatik hata raporları anonimdir. Geliştiricinin hata raporlarınızı bulması gerekiyorsa kurulum kimliğinizi paylaşabilirsiniz.</string>
|
||||
<string name="settings_support_label">Destek</string>
|
||||
<string name="settings_support_description">Yardıma ihtiyacın olursa.</string>
|
||||
<string name="settings_support_description">Yardıma ihtiyacınız olursa.</string>
|
||||
<string name="issue_tracker_label">Sorun izleyici</string>
|
||||
<string name="issue_tracker_description">Hata raporları ve yeni özellik talepleri için genel bir sorun izleyici (yalnızca İngilizce).</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">BLE reklam yayınları CAPod tarafından alınmaktadır.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Başarısız</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Sorun giderme başarısız oldu. Uyumluluk seçeneklerinin hiçbir kombinasyonu yardımcı olmadı.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Telefonunuz hiç BLE verisi almadı. Veri kaynaklarının (kulaklığınız dışında) alınıp alınamayacağını görmek için bu testi kalabalık bir alanda tekrar deneyebilirsiniz. Alınan hiçbir veri, telefonunuzun işletim sistemiyle ilgili bir soruna işaret etmez.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Telefonunuz BLE verilerini aldı, ancak veriler desteklenen herhangi bir aygıttan gelmiyor. Kulaklığınız açık mı? CAPod kulaklığınızı destekliyor mu?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Tekrar deneyin</string>
|
||||
<string name="troubleshoot_action">Sorun giderme</string>
|
||||
|
||||
@@ -45,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">Модель вашого пристрою. Це допомагає розпізнати ваш пристрій коли він не підʼєднаний до вашого телефону.</string>
|
||||
<string name="settings_onepod_mode_label">Режим одного навушника</string>
|
||||
<string name="settings_onepod_mode_description">Одягання обох навушників не є необхідним, одягання одного навушника цілком достатньо для запуску реагування.</string>
|
||||
<string name="settings_popup_caseopen_label">Показувати спливаюче вікно при відкритті футляра</string>
|
||||
<string name="settings_popup_caseopen_description">Показувати спливаюче вікно при відкритті футляра пристрою (експериментально).</string>
|
||||
<string name="settings_popup_connected_label">Показувати спливаюче вікно при приєднанні</string>
|
||||
<string name="settings_popup_connected_description">Показувати спливаюче вікно коли пристрій підключається вперше.</string>
|
||||
<string name="notification_channel_device_status_label">Статус пристрою</string>
|
||||
<string name="debug_debuglog_size_label">Розмір</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Стиснутий розмір</string>
|
||||
@@ -94,6 +97,7 @@
|
||||
<string name="troubleshooter_ble_result_success_body">CAPod приймає трансляцію BLE-реклами.</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">Невдало</string>
|
||||
<string name="troubleshooter_ble_result_failure_body">Не вдалося виправити неполадки. Жодна комбінація варіантів сумісності не допомогла.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Ваш смартфон не отримав жодних даних BLE. Ви можете повторити цей тест у людному місці, щоб перевірити, чи можна отримати дані з інших джерел (окрім ваших навушників). Не отримання жодних даних свідчить про проблему з операційною системою вашого смартфону.</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Ваш смартфон отримав BLE дані, проте вони не від одного з підтримуваних пристроїв. Ваші навушники увімкнено? CAPod підтримує цей тип навушників?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Спробувати знову</string>
|
||||
<string name="troubleshoot_action">Вирішення проблем</string>
|
||||
|
||||
@@ -39,7 +39,10 @@
|
||||
<string name="settings_maindevice_model_description">Kiểu thiết bị chính của bạn. Điều này giúp ứng dụng nhận ra thiết bị của bạn khi thiết bị không được kết nối với điện thoại của bạn.</string>
|
||||
<string name="settings_onepod_mode_label">Chế độ 1 tai nghe</string>
|
||||
<string name="settings_onepod_mode_description">Không cần đeo cả hai, chỉ đeo một tai nghe là đủ để kích hoạt phản ứng.</string>
|
||||
<string name="settings_popup_caseopen_label">Hiển thị case popup</string>
|
||||
<string name="settings_popup_caseopen_description">Hiển thị cửa sổ bật lên khi hộp thiết bị được mở (thử nghiệm).</string>
|
||||
<string name="settings_popup_connected_label">Hiển thị popup kết nối</string>
|
||||
<string name="settings_popup_connected_description">Hiển thị cửa sổ bật lên khi thiết bị kết nối lần đầu tiên.</string>
|
||||
<string name="notification_channel_device_status_label">Trạng thái thiết bị</string>
|
||||
<string name="debug_debuglog_size_label">Kích thước</string>
|
||||
<string name="debug_debuglog_size_compressed_label">Kích thước nén</string>
|
||||
@@ -75,4 +78,5 @@
|
||||
<string name="help_translate_description">Giúp dịch ứng dụng này sang ngôn ngữ yêu thích của bạn.</string>
|
||||
<string name="translators_thanks_title">Dịch thuật</string>
|
||||
<string name="translators_thanks_description">dovanchuc7521</string>
|
||||
<string name="troubleshooter_ble_result_failure_phone_body">Điện thoại của bạn hoàn toàn không nhận được bất kỳ dữ liệu BLE nào. Bạn có thể thử lại bài kiểm tra này ở khu vực đông người để xem có thể nhận được các nguồn dữ liệu (không phải tai nghe của bạn) hay không. Không nhận được dữ liệu nào cho thấy có vấn đề với hệ điều hành điện thoại của bạn.</string>
|
||||
</resources>
|
||||
|
||||
@@ -34,6 +34,10 @@
|
||||
<string name="settings_category_yourdevice_label">您的设备</string>
|
||||
<string name="settings_category_compatibility_options_title">兼容性选项</string>
|
||||
<string name="settings_category_compatibility_options_description">如果一切正常,请不要修改 ;)</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_title">禁用硬件过滤</string>
|
||||
<string name="settings_compat_offloaded_filtering_disabled_summary">不将数据过滤委托给系统,而是在应用内获取所有数据并进行过滤</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_title">禁用硬件批处理</string>
|
||||
<string name="settings_compat_offloaded_batching_disabled_summary">在转发给我们之前,不要让系统组收集BLE数据。</string>
|
||||
<string name="settings_maindevice_address_label">您的设备地址</string>
|
||||
<string name="settings_maindevice_address_description">已配对设备的地址,本应用通过它来确定其连接到您手机的时间</string>
|
||||
<string name="settings_maindevice_address_none">无</string>
|
||||
@@ -41,7 +45,10 @@
|
||||
<string name="settings_maindevice_model_description">您的主设备的型号。这有助于应用程序在设备未连接到您的手机时识别该设备。</string>
|
||||
<string name="settings_onepod_mode_label">单耳模式</string>
|
||||
<string name="settings_onepod_mode_description">不需要同时佩戴两支耳机,单支即可引发反应</string>
|
||||
<string name="settings_popup_caseopen_label">显示开盖弹窗</string>
|
||||
<string name="settings_popup_caseopen_description">设备充电仓打开时显示弹窗(实验性)</string>
|
||||
<string name="settings_popup_connected_label">显示连接弹窗</string>
|
||||
<string name="settings_popup_connected_description">当设备初次连接时显示弹窗</string>
|
||||
<string name="notification_channel_device_status_label">设备状态</string>
|
||||
<string name="debug_debuglog_size_label">大小</string>
|
||||
<string name="debug_debuglog_size_compressed_label">压缩后大小</string>
|
||||
@@ -54,6 +61,7 @@
|
||||
<string name="settings_support_description">如果你需要一些帮助。</string>
|
||||
<string name="issue_tracker_label">问题追踪器</string>
|
||||
<string name="issue_tracker_description">用于缺陷报告和功能请求的问题追踪系统(仅限英语)。</string>
|
||||
<string name="discord_label">Discord</string>
|
||||
<string name="discord_description">一个闲聊和提问的去处</string>
|
||||
<string name="changelog_label">更新日志</string>
|
||||
<string name="settings_label">设置</string>
|
||||
@@ -76,4 +84,17 @@
|
||||
<string name="help_translate_description">帮助翻译本应用</string>
|
||||
<string name="translators_thanks_title">翻译人员</string>
|
||||
<string name="translators_thanks_description">木仔</string>
|
||||
<string name="widget_description">显示上次连接设备状态的小部件</string>
|
||||
<string name="settings_compat_indirectcallback_title">间接数据传送</string>
|
||||
<string name="settings_compat_indirectcallback_summary">使用替代方法从系统接收 BLE 数据(广播而不是回调)。</string>
|
||||
<string name="troubleshooter_title">故障排除</string>
|
||||
<string name="troubleshooter_ble_intro_title">低延迟蓝牙广播</string>
|
||||
<string name="troubleshooter_ble_intro_body1">Andpods (以及和其相似的耳机) 使用一种叫做 ”advertisement“ 的BLE技术来广播设备信息和状态。 一些手机不一定能很好地实现这种技术。CAPod能尝试使用不同兼容性选项来修复连接直到数据被接收。把耳机靠近手机并播放音乐,然后开始:</string>
|
||||
<string name="troubleshooter_ble_intro_start_action">开始故障排除</string>
|
||||
<string name="troubleshooter_ble_process_title">故障排除进行中</string>
|
||||
<string name="troubleshooter_ble_process_subtile">每个步骤需花费 5-10 秒钟</string>
|
||||
<string name="troubleshooter_ble_result_success_title">成功</string>
|
||||
<string name="troubleshooter_ble_result_failure_title">失败</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">重试</string>
|
||||
<string name="troubleshoot_action">故障排除</string>
|
||||
</resources>
|
||||
|
||||
@@ -119,4 +119,13 @@
|
||||
<string name="troubleshooter_ble_result_failure_phone_headphones">Your phone received BLE data, but the data does not come from any supported device. Are your headphones powered on? Does CAPod support your headphone?</string>
|
||||
<string name="troubleshooter_ble_result_failure_action">Try again</string>
|
||||
<string name="troubleshoot_action">Troubleshoot</string>
|
||||
|
||||
|
||||
<string name="onboarding_body1">This app adds support for AirPod specific features to Android.</string>
|
||||
<string name="onboarding_body2">Not all Android devices fully support the extra AirPod features. Your operating system requires a correctly working Bluetooth-Low-Energy implemtation.</string>
|
||||
<string name="onboarding_body3">CAPod has no ads and does not collect your data.</string>
|
||||
<string name="onboarding_body4">You can upgrade to CAPod Pro to gain extra features and support development.</string>
|
||||
|
||||
<string name="general_continue_action">Continue</string>
|
||||
|
||||
</resources>
|
||||
@@ -4,7 +4,7 @@
|
||||
<PreferenceCategory
|
||||
android:title="@string/general_thank_you_label"
|
||||
app:iconSpaceReserved="false">
|
||||
<Preference
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="thanks.translators"
|
||||
android:summary="@string/translators_thanks_description"
|
||||
android:title="@string/translators_thanks_title"
|
||||
@@ -12,8 +12,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://crowdin.com/project/capod/activity-stream" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="thanks.maxpatchs"
|
||||
android:summary="Thanks for the lovely icons."
|
||||
android:title="Max Patchs"
|
||||
@@ -21,8 +21,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://twitter.com/maxpatchs" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="thanks.openpods"
|
||||
android:summary="Pioneering AirPod support on Android"
|
||||
android:title="OpenPods project"
|
||||
@@ -30,8 +30,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/adolfintel/OpenPods" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="thanks.furiousmac"
|
||||
android:summary="Research on the continuity protocol"
|
||||
android:title="FuriousMAC"
|
||||
@@ -39,22 +39,13 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/furiousMAC/continuity" />
|
||||
</Preference>
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:title="@string/settings_licenses_label"
|
||||
app:iconSpaceReserved="false">
|
||||
<Preference
|
||||
android:key="license.bugsnag"
|
||||
android:summary="Client side library for crash monitoring via bugsnag.com. (MIT)"
|
||||
android:title="Bugsnag"
|
||||
app:iconSpaceReserved="false">
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/bugsnag/bugsnag-android" />
|
||||
</Preference>
|
||||
<Preference
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="license.glide"
|
||||
android:summary="An image loading and caching library for Android focused on smooth scrolling. (Multiple licenses)"
|
||||
android:title="Glide"
|
||||
@@ -62,8 +53,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/bumptech/glide" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="license.materialdesignicons"
|
||||
android:summary="materialdesignicons.com (SIL Open Font License 1.1 / Attribution 4.0 International)"
|
||||
android:title="Material Design Icons"
|
||||
@@ -71,8 +62,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/Templarian/MaterialDesign" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="license.zwiconiconset"
|
||||
android:summary="Creative Commons Attribution 4.0 International"
|
||||
android:title="Zwicon Icon Set"
|
||||
@@ -80,8 +71,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://iconduck.com/sets/zwicon-icon-set" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="license.kotlin"
|
||||
android:summary="The Kotlin Programming Language. (APACHE 2.0)"
|
||||
android:title="Kotlin"
|
||||
@@ -89,8 +80,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/JetBrains/kotlin" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="license.dagger"
|
||||
android:summary="A fast dependency injector for Android and Java. (APACHE 2.0)"
|
||||
android:title="Dagger"
|
||||
@@ -98,8 +89,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/google/dagger" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="license.moshi"
|
||||
android:summary="A modern JSON library for Kotlin and Java. (APACHE 2.0)"
|
||||
android:title="Moshi"
|
||||
@@ -107,8 +98,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/square/moshi" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="android.android"
|
||||
android:summary="Android Open Source Project (APACHE 2.0)"
|
||||
android:title="Android"
|
||||
@@ -116,8 +107,8 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://source.android.com/source/licenses.html" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:key="android.logo"
|
||||
android:summary="The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License."
|
||||
android:title="Android"
|
||||
@@ -125,6 +116,6 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://developer.android.com/distribute/tools/promote/brand.html" />
|
||||
</Preference>
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
@@ -20,7 +20,7 @@
|
||||
app:title="@string/settings_support_label" />
|
||||
|
||||
<PreferenceCategory android:title="@string/settings_category_other_label">
|
||||
<Preference
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:icon="@drawable/ic_changelog_onsurface"
|
||||
android:key="core.changelog"
|
||||
android:title="@string/changelog_label"
|
||||
@@ -28,9 +28,9 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/d4rken-org/capod/releases/latest" />
|
||||
</Preference>
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
|
||||
<Preference
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:icon="@drawable/ic_baseline_translate_24"
|
||||
android:key="core.translation"
|
||||
android:title="@string/help_translate_label"
|
||||
@@ -38,7 +38,7 @@
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://crowdin.com/project/capod" />
|
||||
</Preference>
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/ic_heart"
|
||||
|
||||
@@ -1,33 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<Preference
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:icon="@drawable/ic_discord_onsurface"
|
||||
android:summary="@string/discord_description"
|
||||
android:title="@string/discord_label">
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://discord.gg/rrxxng35jq" />
|
||||
</Preference>
|
||||
<Preference
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
<eu.darken.capod.common.preferences.IntentPreference
|
||||
android:icon="@drawable/ic_github_onsurface"
|
||||
android:summary="@string/issue_tracker_description"
|
||||
android:title="@string/issue_tracker_label">
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:data="https://github.com/d4rken-org/capod/issues" />
|
||||
</Preference>
|
||||
</eu.darken.capod.common.preferences.IntentPreference>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_category_other_label">
|
||||
<Preference
|
||||
android:icon="@drawable/ic_id_onsurface"
|
||||
android:key="support.installid"
|
||||
android:summary="@string/settings_support_installid_desc"
|
||||
android:title="@string/settings_support_installid_label" />
|
||||
android:title="@string/settings_support_installid_label"
|
||||
app:isPreferenceVisible="false" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:icon="@drawable/ic_spider_thread_onsurface"
|
||||
android:key="debug.bugreport.automatic.enabled"
|
||||
app:isPreferenceVisible="false"
|
||||
android:summary="@string/settings_debug_autoreports_description"
|
||||
android:title="@string/settings_debug_autoreports_label" />
|
||||
</PreferenceCategory>
|
||||
|
||||
@@ -8,7 +8,6 @@ buildscript {
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.Kotlin.core}")
|
||||
classpath("com.google.dagger:hilt-android-gradle-plugin:${Versions.Dagger.core}")
|
||||
classpath("androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.AndroidX.Navigation.core}")
|
||||
classpath("com.bugsnag:bugsnag-android-gradle-plugin:7.2.1")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import com.android.build.api.dsl.Packaging
|
||||
import com.android.build.gradle.LibraryExtension
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.JavaVersion
|
||||
@@ -83,7 +84,7 @@ fun LibraryExtension.setupLibraryDefaults() {
|
||||
)
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
fun Packaging.() {
|
||||
resources.excludes += "DebugProbesKt.bin"
|
||||
}
|
||||
}
|
||||
@@ -116,39 +117,3 @@ fun com.android.build.api.dsl.SigningConfig.setupCredentials(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getBugSnagApiKey(
|
||||
propertiesPath: File?
|
||||
): String? {
|
||||
val bugsnagProps = Properties().apply {
|
||||
propertiesPath?.takeIf { it.canRead() }?.let { load(FileInputStream(it)) }
|
||||
}
|
||||
|
||||
return System.getenv("BUGSNAG_API_KEY") ?: bugsnagProps.getProperty("bugsnag.apikey")
|
||||
}
|
||||
|
||||
/**
|
||||
* Use extra["useBugsnag"] = true per flavor to enable
|
||||
*/
|
||||
fun <T> T.setupBugsnagPlugin() where T : Project {
|
||||
fun Project.`android`(configure: Action<com.android.build.gradle.internal.dsl.BaseAppModuleExtension>): Unit =
|
||||
(this as org.gradle.api.plugins.ExtensionAware).extensions.configure("android", configure)
|
||||
|
||||
val key = "useBugsnag"
|
||||
|
||||
android {
|
||||
productFlavors {
|
||||
forEach {
|
||||
val paramString = gradle.startParameter.taskRequests.toString().toLowerCase(Locale.ROOT)
|
||||
val useBugsnag = if (it.extra.has(key)) it.extra[key] as Boolean else false
|
||||
|
||||
if (paramString.contains(it.name) && useBugsnag) {
|
||||
println("Bugsnag plugin (com.bugsnag.android.gradle) applied to ${it.name} ($paramString)")
|
||||
apply(plugin = "com.bugsnag.android.gradle")
|
||||
} else {
|
||||
println("Bugsnag plugin (com.bugsnag.android.gradle) NOT applied to ${it.name} ($paramString)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,22 @@ platform :android do
|
||||
skip_upload_metadata: 'true',
|
||||
aab_paths: [
|
||||
"app/build/outputs/bundle/gplayRelease/app-gplay-beta.aab",
|
||||
],
|
||||
)
|
||||
end
|
||||
|
||||
lane :beta_wearos do
|
||||
gradle(task: 'clean bundleGplayBeta')
|
||||
sh "bash ./remove_unsupported_languages.sh"
|
||||
supply(
|
||||
track: 'wear:beta',
|
||||
package_name: 'eu.darken.capod',
|
||||
skip_upload_changelogs: 'false',
|
||||
skip_upload_apk: 'true',
|
||||
skip_upload_images: 'true',
|
||||
skip_upload_screenshots: 'true',
|
||||
skip_upload_metadata: 'true',
|
||||
aab_paths: [
|
||||
"app-wear/build/outputs/bundle/gplayRelease/app-wear-gplay-beta.aab",
|
||||
],
|
||||
)
|
||||
@@ -51,6 +67,22 @@ platform :android do
|
||||
skip_upload_metadata: 'true',
|
||||
aab_paths: [
|
||||
"app/build/outputs/bundle/gplayRelease/app-gplay-release.aab",
|
||||
],
|
||||
)
|
||||
end
|
||||
|
||||
lane :production_wearos do
|
||||
gradle(task: 'clean bundleGplayRelease')
|
||||
sh "bash ./remove_unsupported_languages.sh"
|
||||
supply(
|
||||
track: 'wear:beta',
|
||||
package_name: 'eu.darken.capod',
|
||||
skip_upload_changelogs: 'false',
|
||||
skip_upload_apk: 'true',
|
||||
skip_upload_images: 'true',
|
||||
skip_upload_screenshots: 'true',
|
||||
skip_upload_metadata: 'true',
|
||||
aab_paths: [
|
||||
"app-wear/build/outputs/bundle/gplayRelease/app-wear-gplay-release.aab",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
CAPod - رفيق سماعات AirPod.
|
||||
CAPod is a companion app for AirPods.
|
||||
|
||||
الميزات:
|
||||
|
||||
|
||||
@@ -10,9 +10,6 @@ CAPod — праграма-кампаньён для AirPods.
|
||||
* Аўтаматычнае злучэнне тэлефона і AirPods.
|
||||
* Адлюстраванне апавяшчэння пры адкрытым футляры.
|
||||
|
||||
У CAPod ёсць версія для Wear-OS, якая паказвае стан бліжэйшай да вас прылады.
|
||||
CAPod для Wear-OS з'яўляецца аўтаномнай праграмай і не патрабуе наяўнасці тэлефона.
|
||||
|
||||
CAPod не змяшчае рэкламы. Некаторыя функцыі патрабуюць пакупак у праграме.
|
||||
|
||||
Падтрымліваюцца найбольш папулярныя мадэлі AirPods і Beats.
|
||||
|
||||
@@ -10,9 +10,6 @@ Característiques:
|
||||
* Connecta automàticament el telèfon i els AirPods.
|
||||
* Mostra una finestra emergent quan s'obre la funda.
|
||||
|
||||
El CAPod té una versió Wear-OS que mostra l'estat del dispositiu AirPod que està més a prop vostre.
|
||||
El CAPod per al Wear-OS és una aplicació autònoma i no requereix un telèfon.
|
||||
|
||||
CAPod no inclou anuncis. Algunes funcions requereixen una compra des de l'aplicació.
|
||||
|
||||
Els dispositius AirPods i Beats més populars són compatibles.
|
||||
|
||||
@@ -10,9 +10,6 @@ Funkce:
|
||||
* Automatické připojení telefonu a sluchátek AirPods.
|
||||
* Zobrazení vyskakovacího okna při otevření pouzdra.
|
||||
|
||||
CAPod má verzi Wear-OS zobrazující stav sluchátek, která jsou nejblíže k vám.
|
||||
CAPod pro Wear-OS je samostatná aplikace a nevyžaduje telefon.
|
||||
|
||||
CAPod je bez reklam. Některé funkce vyžadují nákup v aplikaci.
|
||||
|
||||
Podporována je většina oblíbených zařízení AirPods a Beats.
|
||||
|
||||
@@ -10,9 +10,6 @@ Funktionen:
|
||||
* Telefon und AirPods automatisch verbinden.
|
||||
* Zeigt Pop-Ups an, wenn das Case geöffnet wird.
|
||||
|
||||
CAPod hat eine Wear-OS-Version, die den Status des Pod-Geräts anzeigt, das Ihnen am nächsten ist.
|
||||
CAPod für Wear-OS ist eine eigenständige App und erfordert kein Telefon.
|
||||
|
||||
CAPod ist werbefrei. Einige Funktionen erfordern einen In-App-Kauf.
|
||||
|
||||
Die beliebtesten AirPods und Beats Kopfhörer werden unterstützt.
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
|
||||
A detailed changelog is available on GitHub:
|
||||
https://github.com/d4rken-org/capod/releases/latest
|
||||
@@ -0,0 +1,5 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
|
||||
A detailed changelog is available on GitHub:
|
||||
https://github.com/d4rken-org/capod/releases/latest
|
||||
@@ -0,0 +1,5 @@
|
||||
Bugfixes, performance improvements and maybe new features.
|
||||
¯\_(ツ)_/¯
|
||||
|
||||
A detailed changelog is available on GitHub:
|
||||
https://github.com/d4rken-org/capod/releases/latest
|
||||
@@ -10,9 +10,6 @@ Features:
|
||||
* Automatically connect phone and AirPods.
|
||||
* Show popup when case is opened.
|
||||
|
||||
CAPod has a Wear OS version that shows the status of the pod device that is closest to you.
|
||||
CAPod for Wear OS is a stand-alone app and does not require a phone.
|
||||
|
||||
CAPod is ad-free. Some features require an in-app purchase.
|
||||
|
||||
Most popular AirPods and Beats devices are supported.
|
||||
|
||||
@@ -10,9 +10,9 @@ Funciones:
|
||||
* Conecta automáticamente el teléfono y los AirPods.
|
||||
* Muestra un aviso emergente de estuche abierto.
|
||||
|
||||
CAPod es libre de publicidad. Algunas funciones requieren compras en la aplicación.
|
||||
CAPod no tiene publicidad. Algunas funciones requieren una compra dentro de la aplicación.
|
||||
|
||||
Válido para la mayoría de AirPods populares y Beats.
|
||||
Si su dispositivo es similar a AirPods pero aún no es compatible, envíeme un correo.
|
||||
Son compatibles los AirPods y los dispositivos Beats más populares.
|
||||
Si tu dispositivo es similar a los AirPods pero aún no es compatible, envíame un breve correo electrónico.
|
||||
|
||||
¿Tienes una buena idea para una nueva característica? ¡Háznoslo saber!
|
||||
@@ -10,9 +10,6 @@ Funciones:
|
||||
* Conecta automáticamente el teléfono y los AirPods.
|
||||
* Aviso emergente de estuche abierto.
|
||||
|
||||
CAPod tiene una versión Wear-OS que muestra el estado de los auriculares más cercanos.
|
||||
CAPod para Wear-OS es una aplicación independiente y no requiere un teléfono.
|
||||
|
||||
CAPod es sin publicidad. Algunas características requieren una compra en la aplicación.
|
||||
|
||||
Valido para la mayoria de Airpods y Beats.
|
||||
|
||||
@@ -10,9 +10,6 @@ Võimalused:
|
||||
* telefon ja AirPodsid ühenduvad ise;
|
||||
* hüpikakna näitamine, kui kaas avatud.
|
||||
|
||||
CAPodist on klapi lähimat olekut näitav Wear-OS versioon.
|
||||
CAPod Wear-OS-ile on eraldi rakendus, mis ei vaja telefoni.
|
||||
|
||||
CAPodis pole reklaame. Osa võimalusi saab osta rakendusest.
|
||||
|
||||
Tuntuimad AirPodsid ja Beatsi seadmed on toetatud.
|
||||
|
||||
@@ -10,9 +10,6 @@ Features:
|
||||
* Automatically connect phone and AirPods.
|
||||
* Show popup when case is opened.
|
||||
|
||||
CAPod has a Wear-OS version that shows the status of the pod device that is closest to you.
|
||||
CAPod for Wear-OS is a stand-alone app and does not require a phone.
|
||||
|
||||
CAPod is ad-free. Some features require an in-app purchase.
|
||||
|
||||
Most popular AirPods and Beats devices are supported.
|
||||
|
||||
@@ -8,10 +8,7 @@ Caractéristiques :
|
||||
* Peut se connecter à tous les appareils à proximité et les présenter.
|
||||
* Détection de la mise en oreille avec lecture et pause automatiques.
|
||||
* Connecter automatiquement le téléphone et les AirPods.
|
||||
* Affiche une notification quand l'étui est ouvert.
|
||||
|
||||
CAPod propose une version pour Wear OS qui affiche l’état des AirPods les plus proches de vous.
|
||||
CAPod pour Wear OS est une appli autonome qui n’a pas besoin de téléphone.
|
||||
* Afficher une fenêtre surgissante à l’ouverture de l’étui.
|
||||
|
||||
CAPod est exempt de publicités. L’achat intégré donne accès à des fonctions supplémentaires.
|
||||
|
||||
|
||||
@@ -10,9 +10,6 @@ CAPod एंड्राइड पर AirPods के लिए एक सहय
|
||||
* स्वचालित रूप से फोन और एयरपॉड्स को कनेक्ट करें।
|
||||
* केस खुलने पर पॉपअप दिखाएं।
|
||||
|
||||
CAPod में एक Wear-OS संस्करण है जो आपके निकटतम पॉड डिवाइस की स्थिति दिखाता है।
|
||||
Wear-OS के लिए CAPod एक स्टैंड-अलोन ऐप है और इसके लिए फोन की आवश्यकता नहीं है।
|
||||
|
||||
CAPod विज्ञापन-मुक्त है। कुछ सुविधाओं के लिए इन-ऐप खरीदारी की आवश्यकता होती है।
|
||||
|
||||
सबसे लोकप्रिय AirPods और Beats डिवाइस समर्थित हैं।
|
||||
|
||||
@@ -2,7 +2,7 @@ A CAPod az AirPods kísérőalkalmazása.
|
||||
|
||||
Jellemzők:
|
||||
|
||||
* Akkumulátor töltöttségi szintje fejhallgatókhoz és tokokhoz.
|
||||
* Battery level for pods and cases.
|
||||
* A fejhallgatók és a tok töltöttségi állapota.
|
||||
* További információk a csatlakozásról, a mikrofonról és a tokról.
|
||||
* Képes fogadni és megjeleníteni az összes közeli eszközt.
|
||||
|
||||
@@ -10,9 +10,6 @@ Fitur:
|
||||
* Secara otomatis menghubungkan telepon dan AirPods.
|
||||
* Menampilkan PopUp saat kasing dibuka.
|
||||
|
||||
CAPod memiliki versi Wear-OS yang menunjukkan status perangkat pod yang paling dekat dengan Anda.
|
||||
CAPod untuk Wear-OS adalah aplikasi yang berdiri sendiri dan tidak memerlukan telepon.
|
||||
|
||||
CAPod bebas iklan. Beberapa fitur memerlukan pembelian dalam aplikasi.
|
||||
|
||||
Mendukung perangkat AirPods & Beats.
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
CAPod é una companion app per le AirPods.
|
||||
CAPod è un'app per le AirPods.
|
||||
|
||||
Caratteristiche:
|
||||
|
||||
* Percentuale della batteria sia per le pods che per il case.
|
||||
* Percentuale della batteria per le pods e il case.
|
||||
* Stato della carica sia per le pods che per il case.
|
||||
* Maggiori info sulla connessione, il microfono ed il case.
|
||||
* Puo ricevere e mostrare tutti i dispositivi vicini.
|
||||
* Riconoscimento dell'orecchio con pausa e play automatici.
|
||||
* Maggiori informazioni sulla connessione, il microfono e il case.
|
||||
* Può ricevere e mostrare tutti i dispositivi vicini.
|
||||
* Riconoscimento dell'orecchio con play/pausa automatici.
|
||||
* Connetti automaticamente il telefono alle AirPods.
|
||||
* Mostra un popup quando il case é aperto.
|
||||
* Mostra un popup quando il case è aperto.
|
||||
|
||||
CAPod é privo di pubblicità. Alcune funzioni necessitano di acquisti in app.
|
||||
CAPod è privo di pubblicità. Alcune funzioni necessitano di acquisti in app.
|
||||
|
||||
Sono supportate le Airpods e Beats più popolari.
|
||||
Se il tuo device é simile ad un Airpods ma non é già supportato, mandami una breve mail.
|
||||
Se il tuo dispositivo è simile alle AirPods ma non è ancora supportato, mandami una breve mail.
|
||||
|
||||
Hai un'idea interessante per una nuova funzione da aggiungere all'app? Fammelo sapere!
|
||||
@@ -1 +1 @@
|
||||
CAPod é una companion app per le Airpods su Android.
|
||||
CAPod è un'app per le Airpods su Android.
|
||||
@@ -1 +1 @@
|
||||
Companion app per le Airpods
|
||||
CAPod - App per AirPods
|
||||
@@ -10,9 +10,6 @@ CAPod היא אפליקציה נלווית עבור AirPods.
|
||||
* חיבור אוטומטי של טלפון ו-AirPods.
|
||||
* הצג קופץ כאשר המארז נפתח.
|
||||
|
||||
CAPod בגרסת Wear-OS מציגה את מצב מכשיר הפוד הקרוב אליכם.
|
||||
CAPod עבור Wear-OS היא אפליקציה עצמאית ואינה דורשת טלפון.
|
||||
|
||||
CAPod ללא פרסומות. חלק מהתכונות הנוספות דורשות רכישה בתוך האפליקציה.
|
||||
|
||||
רוב מכשירי ה-AirPods וה-Beats הפופולריים נתמכים.
|
||||
|
||||
@@ -10,9 +10,6 @@ Ciri-ciri:
|
||||
* Sambungkan telefon dan AirPod secara automatik.
|
||||
* Pamerkan timbul apabila sarung dibuka.
|
||||
|
||||
CAPod mempunyai versi Wear-OS yang menunjukkan status peranti pod yang paling hampir dengan anda.
|
||||
CAPod untuk Wear-OS ialah apl yang berdiri sendiri dan tidak memerlukan telefon.
|
||||
|
||||
CAPod adalah bebas iklan. Sesetengah ciri memerlukan pembelian dalam aplikasi.
|
||||
|
||||
Kebanyakan peranti AirPods dan Beats yang popular disokong.
|
||||
|
||||
@@ -10,9 +10,6 @@ Functies:
|
||||
* Automatisch verbinding maken met telefoon en AirPods.
|
||||
* Toont pop-up wanneer case wordt geopend.
|
||||
|
||||
CAPod heeft een Wear-OS versie die je de status van de dichtsbijzijnde pod toont.
|
||||
CAPod voor Wear-OS is een standalone applicatie die ook zonder telefoon werkt.
|
||||
|
||||
CAPod is advertentievrij. Sommige extra functies vereisen een in-app aankoop.
|
||||
|
||||
De meeste populaire AirPods- en Beats-apparaten worden ondersteund.
|
||||
|
||||
@@ -10,9 +10,6 @@ Funksjoner:
|
||||
* Koble telefonen til AirPods automatisk.
|
||||
* Vis popup når dekselet åpnes.
|
||||
|
||||
CAPod har en Wear-OS-versjon som viser statusen til pod-enheten nærmest deg.
|
||||
CAPod for Wear-OS er en frittstående app og krever ikke en telefon.
|
||||
|
||||
CAPod er reklamefri. Noen funksjoner krever et kjøp i appen.
|
||||
|
||||
De fleste populære AirPods og Beats-enheter støttes.
|
||||
|
||||
@@ -10,9 +10,6 @@ Funkcje:
|
||||
* Automatyczne łączenie telefonu oraz AirPods.
|
||||
* Wyświetlanie okienka, gdy obudowa jest otwarta.
|
||||
|
||||
CAPod ma wersję na Wear-OS, która pokazuje stan pod'ów znajdujących się najbliżej Ciebie.
|
||||
CAPod dla Wear-OS to samodzielna aplikacja, która nie wymaga telefonu.
|
||||
|
||||
CAPod jest bez reklam. Niektóre funkcje wymagają zakupów wewnątrz aplikacji.
|
||||
|
||||
Większość popularnych urządzeń AirPods oraz Beats jest obsługiwana.
|
||||
|
||||
@@ -10,9 +10,6 @@ Recursos:
|
||||
* Conecte automaticamente o smartphone e os AirPods.
|
||||
* Mostrar pop-up quando o estojo é aberto.
|
||||
|
||||
O CAPod possui uma versão Wear-OS que mostra o status do dispositivo Airpod mais próximo de você.
|
||||
O CAPod para Wear-OS é um aplicativo independente e não requer um telefone.
|
||||
|
||||
O CAPod é livre de anúncios. Alguns recursos exigem uma compra no aplicativo.
|
||||
|
||||
Os dispositivos AirPods e Beats mais populares são suportados.
|
||||
|
||||
@@ -10,9 +10,6 @@ Funcionalidades:
|
||||
* Automaticamente conectar telemóvel e AirPods.
|
||||
* Mostrar pop-up quando a caixa é aberta.
|
||||
|
||||
O CAPod contém uma versão Wear-OS que mostra o estado do dispositivo mais próximo de si.
|
||||
O CAPod para Wear-OS é uma aplicação independente e não requer um telefone.
|
||||
|
||||
CAPod é livre de anúncios. Algumas funcionalidades exigem uma compra na aplicação.
|
||||
|
||||
Os dispositivos AirPods e Beats mais populares são suportados.
|
||||
|
||||
@@ -10,9 +10,6 @@ CAPod - это приложение для AirPods.
|
||||
* Автоматическое подключение телефона и AirPods.
|
||||
* Отображение всплывающего окна при открытии футляра.
|
||||
|
||||
У CAPod есть версия для Wear-OS, она отображает статус ближайшего устройства.
|
||||
CAPod для Wear-OS - независимое приложение, оно не требует телефона.
|
||||
|
||||
CAPod не содержит рекламы. Некоторые функции требуют покупок внутри приложения.
|
||||
|
||||
Поддерживаются наиболее популярные модели AirPods и Beats.
|
||||
|
||||
@@ -10,9 +10,6 @@ Funkcie:
|
||||
* Automatické pripojenie telefónu a AirPods.
|
||||
* Zobrazenie vyskakovacieho okna pri otvorení puzdra.
|
||||
|
||||
CAPod má verziu Wear-OS, ktorá zobrazuje stav pod-zariadenia, ktoré je najbližšie k vám.
|
||||
CAPod pre Wear-OS je samostatná aplikácia, ktorá nevyžaduje telefón.
|
||||
|
||||
CAPod je bez reklám. Niektoré funkcie vyžadujú nákup v aplikácii.
|
||||
|
||||
Podporovaná je väčšina obľúbených zariadení AirPods a Beats.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
CAPod is a companion app for AirPods.
|
||||
சி. எ. பாட் ஏர்பாட்ஸ்க்கு ஒரு துணை செயலி.
|
||||
|
||||
Features:
|
||||
அம்சங்கள்:
|
||||
|
||||
* Battery level for pods and cases.
|
||||
* Charging status for pods and case.
|
||||
|
||||
@@ -10,9 +10,6 @@ CAPod, AirPods aygıtlar için yardımcı bir uygulamadır.
|
||||
* Telefonu ve AirPods aygıtları otomatik olarak bağlar.
|
||||
* Şarj kutusu açıldığında açılır pencereyi gösterir.
|
||||
|
||||
CAPod, size en yakın pod aygıtının durumunu gösteren bir Wear-OS sürümüne sahiptir.
|
||||
CAPod for Wear-OS bağımsız bir uygulamadır ve telefon gerektirmez.
|
||||
|
||||
CAPod reklamsızdır. Bazı özellikler için uygulama içi satın alma gereklidir.
|
||||
|
||||
En popüler AirPods ve Beats aygıtları desteklenmektedir.
|
||||
|
||||
@@ -10,9 +10,6 @@ CAPod - програма-компаньйон для AirPods на Android.
|
||||
* Автоматичне з'єднання телефону та навушників.
|
||||
* Показувати спливаюче сповіщення, якщо футляр відчинений.
|
||||
|
||||
CAPod має версію додатку для Wear-OS, який показує статус пристрою який найближче до вас.
|
||||
CAPod для Wear-OS це самостійний додаток який не потребує смартфона.
|
||||
|
||||
CAPod є вільною від реклами. Деякі функції можуть вимагати придбання у програмі.
|
||||
|
||||
Підтримуються найпопулярніші AirPods та пристрої Beats.
|
||||
|
||||
@@ -1 +1 @@
|
||||
Bạn đồng hành cho AirPods
|
||||
CAPod - Companion for AirPods
|
||||
@@ -10,9 +10,6 @@ CAPod 是一個能提供 AirPods 相關功能的應用程式。
|
||||
* 自動連線手機和 AirPods。
|
||||
* 開啟充電盒時顯示彈出式視窗。
|
||||
|
||||
CAPod 有一個 Wear-OS 版本,可以顯示離您最近的 Pod 裝置的狀態。
|
||||
CAPod 的 Wear-OS 版本是一個獨立的應用程式,不需要手機。
|
||||
|
||||
CAPod 是無廣告的應用程式。 一些功能需要應用程式內購。
|
||||
|
||||
支援大部分流行的 AirPods 和 Beats 裝置。
|
||||
|
||||
@@ -10,9 +10,6 @@ CAPod 是一個能提供 AirPods 相關功能的應用程式。
|
||||
* 自動連線手機和 AirPods。
|
||||
* 開啟充電盒時顯示彈出式視窗。
|
||||
|
||||
CAPod 有一個 Wear-OS 版本,可以顯示離您最近的 Pod 裝置的狀態。
|
||||
CAPod 的 Wear-OS 版本是一個獨立的應用程式,不需要手機。
|
||||
|
||||
CAPod 是無廣告的應用程式。 一些功能需要應用程式內購。
|
||||
|
||||
支援大部分流行的 AirPods 和 Beats 裝置。
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user