Compare commits

...
34 Commits
Author SHA1 Message Date
darken 3784084abc Fix fastlane build arguments 2022-07-25 19:53:23 +02:00
darken 2f463b7735 Adjust description to pass markdown parsing 2022-07-25 19:42:15 +02:00
darken 7be5625d66 Fix gplay deploy script 2022-07-25 19:40:49 +02:00
darken aef14a9cd2 Create changelog file for v1.3.13(1031300) 2022-07-25 17:42:26 +02:00
darken 67648a04d3 Update translations 2022-07-25 17:36:29 +02:00
Matthias Urhahn 58345e3194 Update FUNDING.yml 2022-07-25 10:22:32 +02:00
darken 4cb2ad9a5a Adjust support item order 2022-07-25 01:29:18 +02:00
darken 27395d8e22 Remove email from readme 2022-07-25 01:29:07 +02:00
darken 230c5ea180 Adjust donation links in foss build 2022-07-25 01:22:07 +02:00
Matthias Urhahn 4d4370ddce Update README.md 2022-07-24 16:01:07 +02:00
darken 7e913e7847 Make bugsnag opt-out in gplay and opt-in in foss builds. 2022-07-24 16:00:38 +02:00
darken ec7871e4e9 Change issue tracker icon 2022-07-24 16:00:07 +02:00
darken cc5a45a14f Update repo links 2022-07-24 16:00:07 +02:00
Matthias Urhahn 5fff3457ba Update README.md 2022-07-24 15:03:19 +02:00
darken 6f5d66c1d9 Update README.md 2022-07-24 14:02:53 +02:00
darken d94795bf4f Update PRIVACY_POLICY.md 2022-07-24 13:58:17 +02:00
darken 009b71c42a Update PP 2022-07-24 13:43:47 +02:00
darken a10716d74e Update gitignore 2022-07-24 13:43:06 +02:00
darken b44bf5f401 Setup CI for testing, gplay release and foss release. 2022-07-24 13:38:52 +02:00
Matthias Urhahn e0af1838e2 Delete local.properties 2022-07-24 13:38:43 +02:00
darken 7d5502a34f Version bump (1.3.13) 2022-07-08 19:27:28 +02:00
darken 78ccddf87c Fix notification icon/text color to match light/dark theme. 2022-05-01 17:48:32 +02:00
darken df1bc48e84 Version bump (1.3.12) 2022-05-01 17:36:17 +02:00
darken 3b48d61571 Version bump (1.3.11) 2022-05-01 17:17:53 +02:00
darken 92d5e2a40d Updated translations 2022-05-01 17:13:42 +02:00
darken 234857c414 When enabling unfiltered BLE data, also enable "show all" to make debugging easier. 2022-05-01 16:42:17 +02:00
darken b1bbe785ea Fix debug log naming 2022-04-18 11:10:10 +02:00
darken 487fb49bff Update translations 2022-04-17 13:27:23 +02:00
darken b14b7fa926 Version bump (1.3.10) 2022-04-17 13:08:42 +02:00
darken 4cc1ab143d Change fake airpods pro name. 2022-04-17 13:07:27 +02:00
darken c23de67cd2 Fix ANR 2022-04-09 14:08:07 +02:00
darken e9bb4868c8 Fix NPE on some Android 9 ROMs due to bug in AOSP 2022-04-09 13:54:14 +02:00
darken ae6fd0eabd Updated translations 2022-04-09 11:43:21 +02:00
darken f4f73906bc Version bump (1.3.9) 2022-04-08 23:24:28 +02:00
85 changed files with 715 additions and 227 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
# These are supported funding model platforms
github:
- d4rken
custom:
- "https://www.buymeacoffee.com/tydarken"
@@ -1,4 +1,4 @@
name: Android CI
name: Code tests & eval
on:
push:
@@ -7,13 +7,13 @@ on:
branches: [ main ]
jobs:
build:
build-and-test:
name: Build and test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 11
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
@@ -22,7 +22,13 @@ jobs:
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew assembleDebug
- name: Run tests
run: ./gradlew testGplayDebugUnitTest testFossDebugUnitTest
- name: Build FOSS variant
run: ./gradlew assembleFossDebug
- name: Test FOSS variant
run: ./gradlew testFossDebugUnitTest
- name: Build Google Play variant
run: ./gradlew assembleGplayDebug
- name: Test Google Play variant
run: ./gradlew testGplayDebugUnitTest
+153
View File
@@ -0,0 +1,153 @@
name: Tagged releases
on:
push:
tags:
- 'v*'
jobs:
release-github:
name: Create GitHub release
runs-on: ubuntu-latest
environment: foss-production
steps:
- name: Decode Keystore
env:
ENCODED_KEYSTORE: ${{ secrets.SIGNING_KEYSTORE_BASE64 }}
run: |
TMP_KEYSTORE_DIR_PATH="${RUNNER_TEMP}"/keystore
mkdir -p "${TMP_KEYSTORE_DIR_PATH}"
TMP_KEYSTORE_FILE_PATH="${TMP_KEYSTORE_DIR_PATH}"/keystore.jks
echo $ENCODED_KEYSTORE | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"
echo "STORE_PATH=$(echo $TMP_KEYSTORE_FILE_PATH)" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get the version
id: tagger
uses: jimschubert/query-tag-action@v2
with:
skip-unshallow: 'true'
abbrev: false
commit-ish: HEAD
- name: Install JDK ${{ matrix.java_version }}
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: 11
- name: Assemble beta APK
if: contains(steps.tagger.outputs.tag, '-beta')
run: ./gradlew assembleFossBeta
env:
VERSION: ${{ github.ref }}
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')"
run: ./gradlew assembleFossRelease
env:
VERSION: ${{ github.ref }}
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')
uses: softprops/action-gh-release@v1
with:
prerelease: true
tag_name: ${{ steps.tagger.outputs.tag }}
name: ${{ steps.tagger.outputs.tag }}
generate_release_notes: true
files: app/build/outputs/apk/beta/*.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create release
if: "!contains(steps.tagger.outputs.tag, '-beta')"
uses: softprops/action-gh-release@v1
with:
prerelease: false
tag_name: ${{ steps.tagger.outputs.tag }}
name: ${{ steps.tagger.outputs.tag }}
generate_release_notes: true
files: app/build/outputs/apk/release/*.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release-gplay:
name: Create Google Play release
runs-on: ubuntu-latest
environment: gplay-production
steps:
- name: Decode Keystore
env:
ENCODED_KEYSTORE: ${{ secrets.SIGNING_KEYSTORE_BASE64 }}
run: |
TMP_KEYSTORE_DIR_PATH="${RUNNER_TEMP}"/keystore
mkdir -p "${TMP_KEYSTORE_DIR_PATH}"
TMP_KEYSTORE_FILE_PATH="${TMP_KEYSTORE_DIR_PATH}"/keystore.jks
echo $ENCODED_KEYSTORE | base64 -di > "${TMP_KEYSTORE_FILE_PATH}"
echo "STORE_PATH=$(echo $TMP_KEYSTORE_FILE_PATH)" >> $GITHUB_ENV
- name: Decode Google Play service account key
env:
ENCODED_SERVICE_KEY: ${{ secrets.GPLAY_SERVICE_ACCOUNT_KEY_JSON_BASE64 }}
run: |
TMP_SERVICEKEY_DIR="${RUNNER_TEMP}"/gplaykey
mkdir -p "${TMP_SERVICEKEY_DIR}"
TMP_SERVICEKEY_FILE_PATH="${TMP_SERVICEKEY_DIR}"/service_account.json
echo $ENCODED_SERVICE_KEY | base64 -di > "${TMP_SERVICEKEY_FILE_PATH}"
echo "SUPPLY_JSON_KEY=$(echo $TMP_SERVICEKEY_FILE_PATH)" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get the version
id: tagger
uses: jimschubert/query-tag-action@v2
with:
skip-unshallow: 'true'
abbrev: false
commit-ish: HEAD
- name: Install JDK ${{ matrix.java_version }}
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: 11
- name: Set up ruby env
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7.6
bundler-cache: true
- name: Assemble beta and upload to Google Play
if: contains(steps.tagger.outputs.tag, '-beta')
run: bundle exec fastlane beta
env:
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
- name: Assemble production and upload to Google Play
if: "!contains(steps.tagger.outputs.tag, '-beta')"
run: bundle exec fastlane production
env:
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
+12
View File
@@ -2,3 +2,15 @@
.gradle
build/
/fastlane/report.xml
*.iml
local.properties
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
/.idea/**/*
!/.idea/codeStyles/
!/.idea/codeStyles/**/*
*.jks
.local/*
+28 -10
View File
@@ -1,24 +1,42 @@
# Privacy policy for the app `CAPod`
# Privacy policy
This is the privacy policy for the Android app "CAPod - Companion for AirPods".
* I do not collect personal information
* I do not sell, monetize or otherwise misappropriate any collected data.
## Preamble
CAPod respects your privacy.
Anonymous device information may be collected in the event of a crash (see [Automatic crash reports](#automatic-crash-reports)).
I do not collect, share or sell personal information.
Send a [quick mail](mailto:support@darken.eu) if you have questions.
My underlying privacy principle is the [Golden Rule](https://en.wikipedia.org/wiki/Golden_Rule).
Send a [quick mail](mailto:support@darken.eu) if you have further questions.
## Location data
CAPod does not collect, share or sell location data.
Location permissions are required to receive Bluetooth Low Energy (BLE) data and ebale its core functionality.
The permission "access fine location" (`ACCESS_FINE_LOCATION`) and "access coarse location" (`ACCESS_COARSE_LOCATION`) are required to receive Bluetooth Low Energy data on Android 11 and lower.
On Android 12+ the newer and more fine grained `BLUETOOTH_SCAN` permission is used instead.
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.
### 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.
## Automatic crash reports
The app uses "Bugsnag" for automatic crash reports:
Anonymous device information may be collected in the event of an app crash or error.
To do this the app uses the service "Bugsnag":
https://www.bugsnag.com/
Bugsnags privacy policy can be found here:
Bugsnag's privacy policy can be found here:
https://docs.bugsnag.com/legal/privacy-policy/
Crash reports may contain device and app related information.
Crash reports may contain device and app related information, e.g. your phone model, Android version and app version.
You can disable automatic crash reports in the app's settings.
You can disable automatic reports in the app's settings.
+12 -10
View File
@@ -1,9 +1,10 @@
<img src="https://github.com/d4rken/capod/raw/main/.assets/banner.png" width="400">
<img src="https://github.com/d4rken-org/capod/raw/main/.assets/banner.png" width="400">
# Companion App for AirPods (CAPod)
![Build](https://github.com/d4rken/capod/actions/workflows/android.yml/badge.svg)
[![Github All Releases](https://img.shields.io/github/downloads/d4rken/capod/total.svg)](https://github.com/d4rken/capod/releases/latest)
[![GitHub release (latest SemVer including pre-releases)](https://img.shields.io/github/v/release/d4rken-org/capod?include_prereleases)](https://github.com/d4rken-org/capod/releases/latest)
[![Code tests & eval](https://github.com/d4rken-org/capod/actions/workflows/code-checks.yml/badge.svg)](https://github.com/d4rken/capod/actions/workflows/code-checks.yml)
[![Crowdin](https://badges.crowdin.net/capod/localized.svg)](https://crowdin.com/project/capod)
[![Github All Releases](https://img.shields.io/github/downloads/d4rken-org/capod/total.svg)](https://github.com/d4rken-org/capod/releases/latest)
A companion app that adds support for AirPod specific features to Android:
@@ -19,8 +20,9 @@ CAPod is ad-free. Some additional features require an in-app purchase.
Currently supported models:
* AirPods Gen1
* AirPods Gen2
* AirPods 1. Generation
* AirPods 2. Generation
* AirPods 3. Generation
* AirPods Pro
* AirPods Max
* Power Beats Pro
@@ -33,22 +35,22 @@ Currently supported models:
## Download
* [Google Play](https://play.google.com/store/apps/details?id=eu.darken.capod)
* [GitHub](https://github.com/d4rken/capod/releases/latest)
* [GitHub](https://github.com/d4rken-org/capod/releases/latest)
## Support the project
* Buy the CAPod Pro In-App purchase on [Google Play](https://play.google.com/store/apps/details?id=eu.darken.capod)
* [Sponsor development](https://github.com/sponsors/d4rken) on GitHub
* Help translate CAPod [on Crowdin](https://crowdin.com/project/capod)
* [Buy me a coffee](https://www.buymeacoffee.com/tydarken)
## Get help
* [Github Issues](https://github.com/d4rken/capod/issues)
* [Github Issues](https://github.com/d4rken-org/capod/issues)
* [Discord](https://discord.gg/vHubYPp)
## Screenshots
<img src="https://github.com/d4rken/capod/raw/main/.assets/screenshots/1.png" width="200"><img src="https://github.com/d4rken/capod/raw/main/.assets/screenshots/2.png" width="200"><img src="https://github.com/d4rken/capod/raw/main/.assets/screenshots/3.png" width="200"><img src="https://github.com/d4rken/capod/raw/main/.assets/screenshots/4.png" width="200">
<img src="https://github.com/d4rken-org/capod/raw/main/.assets/screenshots/1.png" width="200"><img src="https://github.com/d4rken-org/capod/raw/main/.assets/screenshots/2.png" width="200"><img src="https://github.com/d4rken-org/capod/raw/main/.assets/screenshots/3.png" width="200"><img src="https://github.com/d4rken-org/capod/raw/main/.assets/screenshots/4.png" width="200">
## Thanks to
+57 -28
View File
@@ -16,10 +16,6 @@ android {
compileSdkVersion buildConfig.compileSdk
Properties bugsnagProps = new Properties()
def bugsnagPropsFile = new File(System.properties['user.home'], ".appconfig/${packageName}/bugsnag.properties")
if (bugsnagPropsFile.canRead()) bugsnagProps.load(new FileInputStream(bugsnagPropsFile))
defaultConfig {
applicationId "${packageName}"
@@ -38,22 +34,55 @@ android {
}
signingConfigs {
release {}
releaseFoss {}
releaseGplay {}
}
def signingPropFile = new File(System.properties['user.home'], ".appconfig/${packageName}/signing.properties")
if (signingPropFile.canRead()) {
Properties signingProps = new Properties()
signingProps.load(new FileInputStream(signingPropFile))
signingConfigs {
release {
storeFile new File(signingProps['release.storePath'])
keyAlias signingProps['release.keyAlias']
storePassword signingProps['release.storePassword']
keyPassword signingProps['release.keyPassword']
signingConfigs {
releaseFoss {
def signingFossPropFile = new File(System.properties['user.home'], ".appconfig/${packageName}/signing-foss.properties")
Properties signingPropsFoss = new Properties()
if (signingFossPropFile.canRead()) signingPropsFoss.load(new FileInputStream(signingFossPropFile))
String keyStorePathFoss = System.getenv("STORE_PATH") ?: signingPropsFoss["release.storePath"]
File keyStoreFoss = keyStorePathFoss ? new File(keyStorePathFoss) : null
if (keyStoreFoss?.canRead()) {
storeFile keyStoreFoss
storePassword System.getenv("STORE_PASSWORD") ?: signingPropsFoss['release.storePassword']
keyAlias System.getenv("KEY_ALIAS") ?: signingPropsFoss['release.keyAlias']
keyPassword System.getenv("KEY_PASSWORD") ?: signingPropsFoss['release.keyPassword']
}
}
releaseGplay {
def signingGplayPropFile = new File(System.properties['user.home'], ".appconfig/${packageName}/signing-gplay.properties")
Properties signingPropsGplay = new Properties()
if (signingGplayPropFile.canRead()) signingPropsGplay.load(new FileInputStream(signingGplayPropFile))
String keyStorePathGplay = System.getenv("STORE_PATH") ?: signingPropsGplay["release.storePath"]
File keyStoreGplay = keyStorePathGplay ? new File(keyStorePathGplay) : null
if (keyStoreGplay?.canRead()) {
storeFile keyStoreGplay
storePassword System.getenv("STORE_PASSWORD") ?: signingPropsGplay['release.storePassword']
keyAlias System.getenv("KEY_ALIAS") ?: signingPropsGplay['release.keyAlias']
keyPassword System.getenv("KEY_PASSWORD") ?: signingPropsGplay['release.keyPassword']
}
}
}
flavorDimensions "version"
productFlavors {
foss {
signingConfig signingConfigs.releaseFoss
}
gplay {
signingConfig signingConfigs.releaseGplay
}
}
Properties bugsnagProps = new Properties()
def bugsnagPropsFile = new File(System.properties['user.home'], ".appconfig/${packageName}/bugsnag.properties")
if (bugsnagPropsFile.canRead()) bugsnagProps.load(new FileInputStream(bugsnagPropsFile))
String bugSnagApiKey = System.getenv("BUGSNAG_API_KEY") ?: bugsnagProps.getProperty("bugsnag.apikey", "")
buildTypes {
def proguardRulesRelease = fileTree(dir: "../proguard", include: ["*.pro"]).asList().toArray()
debug {
@@ -62,10 +91,9 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
proguardFiles proguardRulesRelease
proguardFiles 'proguard-rules-debug.pro'
manifestPlaceholders = [bugsnagApiKey: bugsnagProps.getProperty("bugsnag.apikey", "")]
manifestPlaceholders = [bugsnagApiKey: bugSnagApiKey]
}
release {
signingConfig signingConfigs.release
beta {
lintOptions {
abortOnError true
fatal 'StopShip'
@@ -74,17 +102,18 @@ android {
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
proguardFiles proguardRulesRelease
manifestPlaceholders = [bugsnagApiKey: bugsnagProps.getProperty("bugsnag.apikey", "")]
manifestPlaceholders = [bugsnagApiKey: bugSnagApiKey]
}
}
flavorDimensions "version"
productFlavors {
gplay {
}
foss {
release {
lintOptions {
abortOnError true
fatal 'StopShip'
}
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')
proguardFiles proguardRulesRelease
manifestPlaceholders = [bugsnagApiKey: bugSnagApiKey]
}
}
@@ -40,7 +40,7 @@ class UpgradeControlFoss @Inject constructor(
upgradedAt = Instant.now(),
reason = FossUpgrade.Reason.DONATED
)
webpageTool.open("https://github.com/d4rken/capod")
webpageTool.open("https://github.com/d4rken-org/capod#support-the-project")
Toast.makeText(activity, R.string.general_thank_you_label, Toast.LENGTH_SHORT).show()
}
setNegativeButton(R.string.foss_upgrade_alreadydonated_label) { _, _ ->
+1 -1
View File
@@ -2,5 +2,5 @@
<resources>
<string name="foss_upgrade_donate_label">Spenden</string>
<string name="foss_upgrade_alreadydonated_label">Ich habe schon gespendet</string>
<string name="foss_upgrade_no_money_label">Ich gebe mein ganzes Geld für AirPods aus</string>
<string name="foss_upgrade_no_money_label" comment="Can't be too long otherwise the dialog ellipsizes it. foss_upgrade_no_money_label" maxLength="35">Hab alles für AirPods ausgegeben</string>
</resources>
+5 -1
View File
@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="foss_upgrade_donate_label">Donar</string>
<string name="foss_upgrade_alreadydonated_label">Ya doné</string>
<string name="foss_upgrade_no_money_label">Gasto todo mi dinero en AirPods</string>
</resources>
+5 -1
View File
@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="foss_upgrade_donate_label">दान करना</string>
<string name="foss_upgrade_alreadydonated_label">मैंने पहले ही दान कर दिया है</string>
<string name="foss_upgrade_no_money_label">मैं अपना सारा पैसा AirPods पर खर्च करता हूं</string>
</resources>
+1 -1
View File
@@ -2,5 +2,5 @@
<resources>
<string name="foss_upgrade_donate_label">Quyên tặng</string>
<string name="foss_upgrade_alreadydonated_label">Tôi đã quyên góp</string>
<string name="foss_upgrade_no_money_label">Tôi tiêu hết tiền cho AirPods</string>
<string name="foss_upgrade_no_money_label" comment="Can't be too long otherwise the dialog ellipsizes it. foss_upgrade_no_money_label" maxLength="35">Tôi tiêu hết tiền cho AirPods</string>
</resources>
+4 -1
View File
@@ -1,2 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="upgrades_gplay_unavailable_error">Los servicios de Google Play no están disponibles.</string>
<string name="upgrades_no_purchases_found_check_account">No se han encontrado compras. ¿Estás usando la cuenta correcta?</string>
</resources>
+4 -1
View File
@@ -1,2 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="upgrades_gplay_unavailable_error">Google Play सेवाएं अनुपलब्ध हैं।</string>
<string name="upgrades_no_purchases_found_check_account">कोई खरीदारी नहीं मिली. क्या आप सही खाते का उपयोग कर रहे हैं?</string>
</resources>
@@ -6,10 +6,34 @@ import eu.darken.capod.BuildConfig
// Can't be const because that prevents them from being mocked in tests
@Suppress("MayBeConstant")
object BuildConfigWrap {
val FLAVOR: String = BuildConfig.FLAVOR
val BUILD_TYPE: String = BuildConfig.BUILD_TYPE
val DEBUG: Boolean = BuildConfig.DEBUG
val BUILD_TYPE: BuildType = when (val typ = BuildConfig.BUILD_TYPE) {
"debug" -> BuildType.DEV
"beta" -> BuildType.BETA
"release" -> BuildType.RELEASE
else -> throw IllegalArgumentException("Unknown buildtype: $typ")
}
enum class BuildType {
DEV,
BETA,
RELEASE,
;
}
val FLAVOR: Flavor = when (val flav = BuildConfig.FLAVOR) {
"gplay" -> Flavor.GPLAY
"foss" -> Flavor.FOSS
else -> throw IllegalStateException("Unknown flavor: $flav")
}
enum class Flavor {
GPLAY,
FOSS,
;
}
val APPLICATION_ID = BuildConfig.APPLICATION_ID
val VERSION_CODE: Long = BuildConfig.VERSION_CODE.toLong()
@@ -1,5 +1,5 @@
package eu.darken.capod.common
object PrivacyPolicy {
const val URL = "https://raw.githubusercontent.com/d4rken/capod-public/main/PRIVACY_POLICY.md"
const val URL = "https://raw.githubusercontent.com/d4rken-org/capod/main/PRIVACY_POLICY.md"
}
@@ -56,7 +56,11 @@ class BleScanner @Inject constructor(
lastScanAt = System.currentTimeMillis()
"onScanResult(delay=${delay}ms, callbackType=$callbackType, result=$result)"
}
val toSend = if (supportsOffloadFiltering || filters.isEmpty() || filters.any { it.matches(result) }) {
val toSend = if (
supportsOffloadFiltering
|| filters.isEmpty()
|| filters.any { it.matchesSafe(result) }
) {
listOf(BleScanResult.fromScanResult(result))
} else {
log(TAG, VERBOSE) { "Manual filtering: No match for $result" }
@@ -1,8 +0,0 @@
package eu.darken.capod.common.bluetooth
import android.bluetooth.BluetoothDevice
import android.os.ParcelUuid
fun BluetoothDevice.hasFeature(uuid: ParcelUuid): Boolean {
return uuids?.contains(uuid) ?: false
}
@@ -0,0 +1,26 @@
package eu.darken.capod.common.bluetooth
import android.bluetooth.BluetoothDevice
import android.bluetooth.le.ScanFilter
import android.bluetooth.le.ScanResult
import android.os.ParcelUuid
import eu.darken.capod.common.debug.logging.asLog
import eu.darken.capod.common.debug.logging.log
fun BluetoothDevice.hasFeature(uuid: ParcelUuid): Boolean {
return uuids?.contains(uuid) ?: false
}
/**
* java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.util.SparseArray.get(int)' on a null object reference
* at android.bluetooth.le.ScanRecord.getManufacturerSpecificData(ScanRecord.java:118)
* at android.bluetooth.le.ScanFilter.matches(ScanFilter.java:369)
* ZenFone Max Pro M1 (ZB602KL) (WW) / Max Pro M1 (ZB601KL) (IN) (ZB602KL), Android 9, PKQ1.WW_Phone-16.2017.2009.087-20200826
* Intel Gemini Lake Chromebook (octopus), Android 9, R99-14469.59.0 release-keys
*/
fun ScanFilter.matchesSafe(scanResult: ScanResult): Boolean = try {
matches(scanResult)
} catch (e: NullPointerException) {
log { "AOSP error: ${e.asLog()}" }
false
}
@@ -28,12 +28,12 @@ class AutoReporting @Inject constructor(
) {
fun setup() {
val isEnabled = debugSettings.isAutoReportEnabled.value
val isEnabled = debugSettings.isAutoReportingEnabled.value
log(TAG) { "setup(): isEnabled=$isEnabled" }
try {
val bugsnagConfig = Configuration.load(context).apply {
if (debugSettings.isAutoReportEnabled.value) {
if (debugSettings.isAutoReportingEnabled.value) {
Logging.install(bugsnagLogger.get())
setUser(installId.id, null, null)
autoTrackSessions = true
@@ -4,6 +4,7 @@ import android.content.Context
import android.content.SharedPreferences
import androidx.preference.PreferenceDataStore
import dagger.hilt.android.qualifiers.ApplicationContext
import eu.darken.capod.common.BuildConfigWrap
import eu.darken.capod.common.preferences.PreferenceStoreMapper
import eu.darken.capod.common.preferences.Settings
import eu.darken.capod.common.preferences.createFlowPreference
@@ -17,8 +18,11 @@ class DebugSettings @Inject constructor(
override val preferences: SharedPreferences = context.getSharedPreferences("settings_debug", Context.MODE_PRIVATE)
val isAutoReportEnabled = preferences.createFlowPreference("debug.bugreport.automatic.enabled", true)
val isAutoReportingEnabled = preferences.createFlowPreference(
key = "debug.bugreport.automatic.enabled",
// Reporting is opt-out for gplay, and opt-in for github builds
defaultValue = BuildConfigWrap.FLAVOR == BuildConfigWrap.Flavor.GPLAY
)
val isDebugModeEnabled = preferences.createFlowPreference("debug.mode.enabled", false)
val showFakeData = preferences.createFlowPreference("debug.fakedata.enabled", false)
@@ -32,7 +32,7 @@ class BugsnagErrorHandler @Inject constructor(
context.tryFormattedSignature()?.let { event.addMetadata(tab, "signatures", it) }
}
return debugSettings.isAutoReportEnabled.value && !BuildConfigWrap.DEBUG
return debugSettings.isAutoReportingEnabled.value && !BuildConfigWrap.DEBUG
}
companion object {
@@ -90,7 +90,7 @@ class RecorderModule @Inject constructor(
private fun createRecordingFilePath() = File(
File(context.cacheDir, "debug/logs"),
"bb_logfile_${System.currentTimeMillis()}.log"
"capod_logfile_${System.currentTimeMillis()}.log"
)
suspend fun startRecorder(): File {
@@ -123,6 +123,6 @@ class RecorderModule @Inject constructor(
companion object {
internal val TAG = logTag("Debug", "Log", "Recorder", "Module")
private const val FORCE_FILE = "bb_force_debug_run"
private const val FORCE_FILE = "capod_force_debug_run"
}
}
@@ -67,6 +67,6 @@ class GeneralSettings @Inject constructor(
showAll,
minimumSignalQuality,
mainDeviceAddress,
debugSettings.isAutoReportEnabled,
debugSettings.isAutoReportingEnabled,
)
}
@@ -34,6 +34,7 @@ class DebugSettingsFragment : PreferenceFragment2() {
vm.toggleRecorder()
true
}
super.onViewCreated(view, savedInstanceState)
}
@@ -3,10 +3,15 @@ package eu.darken.capod.main.ui.settings.general.debug
import androidx.lifecycle.SavedStateHandle
import dagger.hilt.android.lifecycle.HiltViewModel
import eu.darken.capod.common.coroutine.DispatcherProvider
import eu.darken.capod.common.debug.autoreport.DebugSettings
import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag
import eu.darken.capod.common.debug.recording.core.RecorderModule
import eu.darken.capod.common.uix.ViewModel3
import eu.darken.capod.main.core.GeneralSettings
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.onEach
import javax.inject.Inject
@HiltViewModel
@@ -14,10 +19,24 @@ class DebugSettingsFragmentVM @Inject constructor(
private val handle: SavedStateHandle,
dispatcherProvider: DispatcherProvider,
private val recorderModule: RecorderModule,
private val generalSettings: GeneralSettings,
private val debugSettings: DebugSettings,
) : ViewModel3(dispatcherProvider) {
val state = recorderModule.state.asLiveData2()
init {
debugSettings.showUnfiltered.flow
.distinctUntilChanged()
.onEach { showUnfiltered ->
if (showUnfiltered) {
log(TAG) { "Enabling 'show all' due to debug setting 'show unfiltered' enabled" }
generalSettings.showAll.value = true
}
}
.launchInViewModel()
}
fun toggleRecorder() = launch {
if (recorderModule.state.first().isRecording) {
recorderModule.stopRecorder()
@@ -15,9 +15,9 @@ import javax.inject.Inject
@HiltViewModel
class SupportFragmentVM @Inject constructor(
private val handle: SavedStateHandle,
private val dispatcherProvider: DispatcherProvider,
private val emailTool: EmailTool,
private val installId: InstallId,
private val dispatcherProvider: DispatcherProvider,
) : ViewModel3(dispatcherProvider) {
val emailEvent = SingleLiveEvent<Intent>()
@@ -104,7 +104,7 @@ interface PodDevice {
"TWS i99999"
),
@Json(name = "fakes.varunr.airpodspro") VARUNR_AIRPODS_PRO(
"Varunr AirPods Pro"
"Fake AirPods Pro"
),
@Json(name = "unknown") UNKNOWN(
"Unknown"
@@ -12,13 +12,11 @@ import dagger.hilt.android.AndroidEntryPoint
import eu.darken.capod.R
import eu.darken.capod.common.uix.PreferenceFragment2
import eu.darken.capod.common.upgrade.UpgradeRepo
import eu.darken.capod.common.upgrade.isPro
import eu.darken.capod.main.core.GeneralSettings
import eu.darken.capod.main.core.MonitorMode
import eu.darken.capod.main.ui.settings.general.DeviceSelectionDialogFactory
import eu.darken.capod.reaction.autoconnect.AutoConnectCondition
import eu.darken.capod.reaction.settings.ReactionSettings
import kotlinx.coroutines.runBlocking
import javax.inject.Inject
@Keep
@@ -36,6 +34,7 @@ class ReactionSettingsFragment : PreferenceFragment2() {
override val preferenceFile: Int = R.xml.preferences_reactions
private var isPro: Boolean = false
private val autoConnectConditionPref by lazy { findPreference<ListPreference>(settings.autoConnectCondition.key)!! }
override fun onPreferencesCreated() {
@@ -44,12 +43,11 @@ class ReactionSettingsFragment : PreferenceFragment2() {
entryValues = AutoConnectCondition.values().map { settings.autoConnectCondition.rawWriter(it) as String }
.toTypedArray()
}
super.onPreferencesCreated()
}
override fun onPreferenceTreeClick(preference: Preference): Boolean {
val isPro = runBlocking { upgradeRepo.isPro() }
if (preference.key == reactionSettings.autoPlay.key && !isPro) {
preference as CheckBoxPreference
upgradeRepo.launchBillingFlow(requireActivity())
@@ -95,6 +93,8 @@ class ReactionSettingsFragment : PreferenceFragment2() {
autoConnectConditionPref.isEnabled = it
}
vm.isPro.observe2 { isPro = true }
super.onViewCreated(view, savedInstanceState)
}
@@ -6,6 +6,8 @@ import eu.darken.capod.common.bluetooth.BluetoothManager2
import eu.darken.capod.common.coroutine.DispatcherProvider
import eu.darken.capod.common.debug.logging.logTag
import eu.darken.capod.common.uix.ViewModel3
import eu.darken.capod.common.upgrade.UpgradeRepo
import kotlinx.coroutines.flow.map
import javax.inject.Inject
@HiltViewModel
@@ -13,10 +15,13 @@ class ReactionSettingsFragmentVM @Inject constructor(
private val handle: SavedStateHandle,
private val dispatcherProvider: DispatcherProvider,
private val bluetoothManager: BluetoothManager2,
private val upgradeRepo: UpgradeRepo,
) : ViewModel3(dispatcherProvider) {
val bondedDevices = bluetoothManager.bondedDevices().toList()
val isPro = upgradeRepo.upgradeInfo.map { it.isPro }.asLiveData2()
companion object {
private val TAG = logTag("Settings", "Reaction", "VM")
}
@@ -6,5 +6,5 @@
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M20.38,8.53C20.54,8.13 21.06,6.54 20.21,4.39C20.21,4.39 18.9,4 15.91,6C14.66,5.67 13.33,5.62 12,5.62C10.68,5.62 9.34,5.67 8.09,6C5.1,3.97 3.79,4.39 3.79,4.39C2.94,6.54 3.46,8.13 3.63,8.53C2.61,9.62 2,11 2,12.72C2,19.16 6.16,20.61 12,20.61C17.79,20.61 22,19.16 22,12.72C22,11 21.39,9.62 20.38,8.53M12,19.38C7.88,19.38 4.53,19.19 4.53,15.19C4.53,14.24 5,13.34 5.8,12.61C7.14,11.38 9.43,12.03 12,12.03C14.59,12.03 16.85,11.38 18.2,12.61C19,13.34 19.5,14.23 19.5,15.19C19.5,19.18 16.13,19.38 12,19.38M8.86,13.12C8.04,13.12 7.36,14.12 7.36,15.34C7.36,16.57 8.04,17.58 8.86,17.58C9.69,17.58 10.36,16.58 10.36,15.34C10.36,14.11 9.69,13.12 8.86,13.12M15.14,13.12C14.31,13.12 13.64,14.11 13.64,15.34C13.64,16.58 14.31,17.58 15.14,17.58C15.96,17.58 16.64,16.58 16.64,15.34C16.64,14.11 16,13.12 15.14,13.12Z" />
android:pathData="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z" />
</vector>
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24.0"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M20.38,8.53C20.54,8.13 21.06,6.54 20.21,4.39C20.21,4.39 18.9,4 15.91,6C14.66,5.67 13.33,5.62 12,5.62C10.68,5.62 9.34,5.67 8.09,6C5.1,3.97 3.79,4.39 3.79,4.39C2.94,6.54 3.46,8.13 3.63,8.53C2.61,9.62 2,11 2,12.72C2,19.16 6.16,20.61 12,20.61C17.79,20.61 22,19.16 22,12.72C22,11 21.39,9.62 20.38,8.53M12,19.38C7.88,19.38 4.53,19.19 4.53,15.19C4.53,14.24 5,13.34 5.8,12.61C7.14,11.38 9.43,12.03 12,12.03C14.59,12.03 16.85,11.38 18.2,12.61C19,13.34 19.5,14.23 19.5,15.19C19.5,19.18 16.13,19.38 12,19.38M8.86,13.12C8.04,13.12 7.36,14.12 7.36,15.34C7.36,16.57 8.04,17.58 8.86,17.58C9.69,17.58 10.36,16.58 10.36,15.34C10.36,14.11 9.69,13.12 8.86,13.12M15.14,13.12C14.31,13.12 13.64,14.11 13.64,15.34C13.64,16.58 14.31,17.58 15.14,17.58C15.96,17.58 16.64,16.58 16.64,15.34C16.64,14.11 16,13.12 15.14,13.12Z" />
</vector>
@@ -18,12 +18,12 @@
<ImageView
android:id="@+id/pod_left_icon"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_airpod_left_24" />
<TextView
android:id="@+id/pod_left_label"
style="@style/TextAppearance.Compat.Notification.Title"
style="@style/PodInfoItemText.Notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
@@ -31,12 +31,12 @@
<ImageView
android:id="@+id/pod_left_charging"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_power_24" />
<ImageView
android:id="@+id/pod_left_ear"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_hearing_24" />
</LinearLayout>
@@ -52,12 +52,12 @@
<ImageView
android:id="@+id/pod_case_icon"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_airpod_case_24" />
<TextView
android:id="@+id/pod_case_label"
style="@style/TextAppearance.Compat.Notification.Title"
style="@style/PodInfoItemText.Notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
@@ -65,7 +65,7 @@
<ImageView
android:id="@+id/pod_case_charging"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_power_24" />
</LinearLayout>
@@ -81,12 +81,12 @@
<ImageView
android:id="@+id/pod_right_icon"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_airpod_right_24" />
<TextView
android:id="@+id/pod_right_label"
style="@style/TextAppearance.Compat.Notification.Title"
style="@style/PodInfoItemText.Notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
@@ -94,12 +94,12 @@
<ImageView
android:id="@+id/pod_right_charging"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_power_24" />
<ImageView
android:id="@+id/pod_right_ear"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_hearing_24" />
</LinearLayout>
@@ -7,7 +7,7 @@
<TextView
android:id="@+id/headphones_label"
style="@style/TextAppearance.Compat.Notification.Title"
style="@style/PodInfoItemText.Notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
@@ -21,12 +21,12 @@
<ImageView
android:id="@+id/headphones_battery_icon"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_battery_unknown_24" />
<TextView
android:id="@+id/headphones_battery_label"
style="@style/TextAppearance.Compat.Notification.Title"
style="@style/PodInfoItemText.Notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
@@ -35,12 +35,12 @@
<ImageView
android:id="@+id/headphones_charging"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_power_24" />
<ImageView
android:id="@+id/headphones_worn"
style="@style/PodInfoItemIcon"
style="@style/PodInfoItemIcon.Notification"
android:src="@drawable/ic_baseline_hearing_24" />
</LinearLayout>
@@ -6,7 +6,7 @@
<TextView
android:id="@+id/device"
style="@style/TextAppearance.Compat.Notification.Title"
style="@style/PodInfoItemText.Notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
+1 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Bütün tətbiqə təsir edən ümumi incə tənzimləmələr.</string>
<string name="settings_acknowledgements_label">Təşəkkürlər</string>
<string name="changelog_label">Dəyişiklik jurnalı</string>
<string name="settings_support_email_developer_label">Tərtibatçıya e-poçt göndər</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Tərtibatçıya e-poçt göndər</string>
<string name="settings_support_installid_label">Quraşdırma kimliyi</string>
<string name="settings_support_installid_desc">Avtomatik xəta hesabatları anonimdir. Tərtibatçının xəta hesabatlarınızı tapmasına ehtiyacı varsa quraşdırma kimliyinizi paylaşın.</string>
<string name="settings_support_label">Dəstək</string>
+28 -1
View File
@@ -1,2 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">CAPod</string>
<string name="app_name_pro">CAPod Pro</string>
<string name="app_name_foss">CAPod FOSS</string>
<string name="notification_channel_device_status_label">Статус прылады</string>
<string name="general_error_label">Памылка</string>
<string name="general_share_action">Падзяліцца</string>
<string name="general_done_action">Гатова</string>
<string name="general_copy_action">Скапіраваць</string>
<string name="general_thank_you_label">Дзякуй</string>
<string name="general_value_not_available_label">Н</string>
<string name="general_grant_permission_action">Даць дазвол</string>
<string name="general_upgrade_action">Палепшыць</string>
<string name="general_check_action">Праверыць</string>
<string name="general_close_action">Закрыць</string>
<string name="debug_debuglog_size_label">Памер</string>
<string name="debug_debuglog_size_compressed_label">Сціснуты памер</string>
<string name="debug_notification_channel_label">Апавяшчэнні адладкі</string>
<string name="debug_debuglog_file_label">Файл журнала</string>
<string name="debug_debuglog_record_action">Запісаць лог аладкі ў журнал</string>
<string name="permission_bluetooth_connect_label">Злучэнне па Bluetooth</string>
<string name="permission_bluetooth_connect_description">Гэтай праграме патрабуецца дазвол на выкарыстанне Bluetooth для ўзаемадзеяння са спалучанымі прыладамі і стварэння новых злучэнняў.</string>
<string name="permission_bluetooth_scan_label">Сканіраванне Bluetooth</string>
<string name="permission_bluetooth_scan_description">Дазвол на сканіраванне Bluetooth дасць магчымасць гэтай праграме выяўляць і атрымліваць даныя па Bluetooth з навакольных прылад, такіх як вашы AirPods.</string>
<string name="permission_bluetooth_label">Bluetooth</string>
<string name="permission_bluetooth_description">Гэтай праграме патрабуецца дазвол на выкарыстанне Bluetooth для злучэння са спалучанымі прыладамі.</string>
<string name="permission_access_fine_location_label">Доступ да дакладнага месцазнаходжання</string>
</resources>
@@ -2,6 +2,8 @@
<resources>
<string name="general_done_action">সম্পন্ন</string>
<string name="general_thank_you_label">ধন্যবাদ</string>
<string name="general_grant_permission_action">অনুমতি প্রদান করুন</string>
<string name="general_upgrade_action">আপগ্রেড</string>
<string name="debug_debuglog_size_label">আকার</string>
<string name="settings_general_label">সেটিংস</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Configuracions generals que afecten a tota l\'aplicació.</string>
<string name="settings_acknowledgements_label">Agraïments</string>
<string name="changelog_label">Registre de canvis</string>
<string name="settings_support_email_developer_label">Correu del desenvolupador</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Correu del desenvolupador</string>
<string name="settings_support_installid_label">ID d\'instal·lació</string>
<string name="settings_support_installid_desc">Els informes d\'error automàtics són anònims. Compartiu el vostre ID d\'instal·lació si el desenvolupador necessita trobar els vostres informes d\'error.</string>
<string name="settings_support_label">Suport</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Cal el permís següent:</string>
<string name="settings_compatibility_mode_label">Mode de compatibilitat</string>
<string name="settings_compatibility_mode_description">Desactiva les optimitzacions per millorar la compatibilitat. Proveu això si no veieu cap dada.</string>
<string name="translators_thanks_title">Traductors</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">Jaime Muñoz(jmmartin_5@outlook.com)</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Obecná vylepšení, která ovlivňují celou aplikaci.</string>
<string name="settings_acknowledgements_label">Poděkování</string>
<string name="changelog_label">Seznam změn</string>
<string name="settings_support_email_developer_label">E-mail vývojáři</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">E-mail vývojáři</string>
<string name="settings_support_installid_label">ID instalace</string>
<string name="settings_support_installid_desc">Automatická hlášení chyb jsou anonymní. Sdílíte pouze své ID instalace, pokud vývojář potřebuje najít vaše chybová hlášení.</string>
<string name="settings_support_label">Podpora</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Je vyžadováno následující oprávnění:</string>
<string name="settings_compatibility_mode_label">Režim kompatibility</string>
<string name="settings_compatibility_mode_description">Vypnutí optimalizace pro zlepšení kompatibility. Zkuste to, pokud se vám nezobrazují žádná data.</string>
<string name="translators_thanks_title">Překladatelé</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">novas78@xda; woytazzer</string>
</resources>
+5 -3
View File
@@ -11,7 +11,7 @@
<string name="general_thank_you_label">Danke</string>
<string name="general_value_not_available_label">k.A.</string>
<string name="general_grant_permission_action">Berechtigung erteilen</string>
<string name="general_upgrade_action">Aktualisierung</string>
<string name="general_upgrade_action">Upgrade</string>
<string name="general_check_action">Überprüfen</string>
<string name="general_close_action">Schließen</string>
<string name="debug_debuglog_size_label">Größe</string>
@@ -64,7 +64,7 @@
<string name="settings_general_description">Allgemeine Optimierungen, die die gesamte App betreffen.</string>
<string name="settings_acknowledgements_label">Danksagungen</string>
<string name="changelog_label">Änderungsprotokoll</string>
<string name="settings_support_email_developer_label">E-Mail-Entwickler</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">E-Mail-Entwickler</string>
<string name="settings_support_installid_label">ID installieren</string>
<string name="settings_support_installid_desc">Automatische Fehlermeldungen sind anonym. Teilen Sie Ihre Installations- ID mit, wenn der Entwickler Ihre Fehlerberichte finden muss.</string>
<string name="settings_support_label">Unterstützung</string>
@@ -115,7 +115,7 @@
<string name="settings_reaction_autoconnect_whenseen_label">Wenn gesehen</string>
<string name="settings_reaction_autoconnect_caseopen_label">Fall ist offen</string>
<string name="settings_reaction_autoconnect_inear_label">Im Ohr</string>
<string name="upgrade_capod_label">Aktualisieren Sie CAPod</string>
<string name="upgrade_capod_label">Verbesser CAPod</string>
<string name="upgrade_capod_description">Erhalten Sie zusätzliche Funktionen und unterstützen Sie den Entwickler.</string>
<string name="settings_popup_caseopen_label">Popup zeigen</string>
<string name="settings_popup_caseopen_description">Ein Popup anzeigen, wenn das Gerätegehäuse geöffnet wird (experimentell).</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Die folgende Genehmigung ist erforderlich:</string>
<string name="settings_compatibility_mode_label">Kompatibilitätsmodus</string>
<string name="settings_compatibility_mode_description">Deaktivieren Sie Optimierungen, um die Kompatibilität zu verbessern. Versuchen Sie dies, wenn Sie keine Daten sehen.</string>
<string name="translators_thanks_title">Übersetzer</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">Gamechanger181</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Γενικές ρυθμίσεις που επηρεάζουν όλη την εφαρμογή.</string>
<string name="settings_acknowledgements_label">Ευχαριστίες</string>
<string name="changelog_label">Αρχείο αλλαγών</string>
<string name="settings_support_email_developer_label">Email στον προγραμματιστή</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Email στον προγραμματιστή</string>
<string name="settings_support_installid_label">Αναγνωριστικό εγκατάστασης</string>
<string name="settings_support_installid_desc">Οι αυτόματες αναφορές σφαλμάτων είναι ανώνυμες. Κοινοποιήστε το αναγνωριστικό εγκατάστασης εάν ο προγραμματιστής πρέπει να βρει τις αναφορές σας σφαλμάτων.</string>
<string name="settings_support_label">Υποστήριξη</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Η ακόλουθη άδεια είναι απαραίτητη:</string>
<string name="settings_compatibility_mode_label">Λειτουργία συμβατότητας</string>
<string name="settings_compatibility_mode_description">Απενεργοποίηση βελτιστοποιήσεων για βελτίωση συμβατότητας. Δοκιμάστε αυτό εάν δε βλέπετε δεδομένα.</string>
<string name="translators_thanks_title">Μεταφραστές</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">Vagelis1608</string>
</resources>
@@ -25,4 +25,31 @@
<string name="permission_bluetooth_scan_description">El permiso \"Escaneo Bluetooth\" permite que esta aplicación descubra y reciba datos de Bluetooth de dispositivos cercanos como tus AirPods.</string>
<string name="permission_bluetooth_label">Bluetooth</string>
<string name="permission_bluetooth_description">Esta aplicacion requiere el permiso \"Bluetooth\" para conectarse a los dispositivos vinculados.</string>
<string name="permission_access_fine_location_label">Acceso a la ubicación precisa</string>
<string name="permission_access_fine_location_description">CAPod utiliza el permiso de \"ubicación precisa\" para recibir Datos de Bluetooth de bajo consumo. Sus auriculares utilizan la tecnología Datos de Bluetooth de bajo consumo para transmitir su estado. Esta aplicación NO utilizará datos de Bluetooth para determinar su ubicación.</string>
<string name="permission_background_location_label">Acceso a la ubicación en segundo plano</string>
<string name="permission_background_location_description">CAPod usa el \"acceso a la ubicación en segundo plano\" para habilitar funciones como \"Mostrar ventana emergente\" y \"Conexión automática\" mientras la aplicación está cerrada. El acceso a la ubicación en segundo plano permite que la aplicación reciba datos de Bluetooth de bajo consumo mientras está en segundo plano. Esta aplicación NO utilizará datos de Bluetooth para determinar su ubicación.</string>
<string name="permission_ignore_battery_optimizations_label">Deshabilitar optimizaciones de batería</string>
<string name="permission_ignore_battery_optimizations_description">Las optimizaciones de la batería evitan que esta aplicación reciba datos de Bluetooth de manera confiable mientras la aplicación está en segundo plano.</string>
<string name="pods_dual_left_label">Audífono izquierdo</string>
<string name="pods_dual_right_label">Audífono derecho</string>
<string name="pods_case_label">Estuche</string>
<string name="pods_case_status_open_label">Estuche abierto</string>
<string name="pods_case_status_closed_label">Estuche cerrado</string>
<string name="pods_connection_state_disconnected_label">No está conectado a un dispositivo</string>
<string name="pods_connection_state_idle_label">Conectado a un dispositivo, pero inactivo</string>
<string name="pods_connection_state_music_label">En modo música</string>
<string name="pods_connection_state_call_label">En modo llamada</string>
<string name="pods_connection_state_ringing_label">Sonando</string>
<string name="pods_connection_state_hanging_up_label">Colgar</string>
<string name="pods_connection_state_unknown_label">Estado de conexión desconocido</string>
<string name="pods_unknown_raw_data_label">Datos sin procesar</string>
<string name="pods_unknown_label">Dispositivo desconocido</string>
<string name="pods_unknown_contact_dev">Este es un dispositivo desconocido, pero está usando un formato de mensaje similar. Agreguemos soporte para ello, contáctame :)</string>
<string name="pods_none_label_short">Sin dispositivo</string>
<string name="pods_charging_label">Cargando</string>
<string name="pods_inear_label">En el oído</string>
<string name="pods_microphone_label">Micrófono</string>
<string name="pods_yours">Tuyos</string>
<string name="headset_being_worn_label">En uso</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Ajustes generales que afectan a toda la aplicación.</string>
<string name="settings_acknowledgements_label">Agradecimientos</string>
<string name="changelog_label">Registro de cambios</string>
<string name="settings_support_email_developer_label">Correo del desarrollador</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Correo del desarrollador</string>
<string name="settings_support_installid_label">ID de instalación</string>
<string name="settings_support_installid_desc">Los informes automáticos de errores son anónimos. Comparta su ID de instalación si el desarrollador necesita encontrar sus informes de error.</string>
<string name="settings_support_label">Ayuda</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Se requiere el siguiente permiso:</string>
<string name="settings_compatibility_mode_label">Modo de compatibilidad</string>
<string name="settings_compatibility_mode_description">Deshabilita las optimizaciones para mejorar la compatibilidad. Prueba esto si no ves ningún dato.</string>
<string name="translators_thanks_title">Traductores</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">Jaime Muñoz(jmmartin_5@outlook.com)</string>
</resources>
+4 -1
View File
@@ -1,2 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="pods_dual_left_label">Vasak klapp</string>
<string name="pods_dual_right_label">Parem klapp</string>
</resources>
+14
View File
@@ -13,5 +13,19 @@
<string name="debug_debuglog_size_label">Sukat</string>
<string name="permission_bluetooth_connect_description">Ang app na ito ay kailangan ng \"Bluetooth connect\" permission para makipag interact sa mga na-paired na devices at maka gawa ng connection.</string>
<string name="permission_bluetooth_scan_description">Ang \"Bluetooth scanning\" permission ay pag na ibigay, itong app na ito ay puwedeng mag diskubre o maka receive ng data galing sa isang malapit na Bluetooth devices tulad ng iyong AirPods.</string>
<string name="permission_bluetooth_label">Bluetooth</string>
<string name="permission_bluetooth_description">Ang app na ito ay kailangan ng \"Bluetooth\" permission upang maka connect sa naka-paired na bluetooth device.</string>
<string name="permission_access_fine_location_description">Ang CAPod app ay gumagamit ng \"Fine location\" permission para maka receiveng Bluetooth Low Energy Data. Iyong headphones ay gumagamit ng Bluetooth Low Energy technology pa ma-broadcaast ang kanilang Status. Itong app na ito ay HINDI gagamitin ang Bluetooth data para malaman ang iyong lokasyon.</string>
<string name="pods_dual_left_label">Kaliwang pod</string>
<string name="pods_dual_right_label">Kanan na pod</string>
<string name="pods_case_status_open_label">Buksan</string>
<string name="pods_case_status_closed_label">Sarado</string>
<string name="pods_connection_state_disconnected_label">Hindi Konektado sa device</string>
<string name="pods_unknown_contact_dev">Ito ay hindi kilalang Device, pero ginagamit ang kilalang message format. lagyan nating ng support para diyan, contact mo ko :)</string>
<string name="pods_yours">Sayo</string>
<string name="headset_being_worn_label">Ginagamit</string>
<string name="pods_case_unknown_state">Hindi alam ang stado</string>
<string name="overview_nomaindevice_description">Lahat ng mga device ay malabong saiyo. I-power on at i-connect ang device mo o i-adjust ang settings.</string>
<string name="settings_licenses_label">Lisensiya</string>
<string name="settings_category_other_label">Iba</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Réglage généraux qui affectent l\'appli entière.</string>
<string name="settings_acknowledgements_label">Remerciements</string>
<string name="changelog_label">Journal des changements</string>
<string name="settings_support_email_developer_label">Envoyer un courriel au développeur</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Envoyer un courriel au développeur</string>
<string name="settings_support_installid_label">ID dinstallation</string>
<string name="settings_support_installid_desc">Les relevés automatiques derreur sont anonymes. Partagez votre ID dinstallation au cas où le développeur aurait besoin de trouver votre relevé derreur.</string>
<string name="settings_support_label">Assistance</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Lautorisation suivante est nécessaire :</string>
<string name="settings_compatibility_mode_label">Mode de compatibilité</string>
<string name="settings_compatibility_mode_description">Désactiver les optimisations pour améliorer la compatibilité. À essayer si vous ne voyez aucune donnée.</string>
<string name="translators_thanks_title">Traducteurs</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">AO</string>
</resources>
+12 -1
View File
@@ -1,2 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_name">CAPod</string>
<string name="app_name_pro">CAPod Pro</string>
<string name="app_name_foss">CAPod FOSS</string>
<string name="notification_channel_device_status_label">उपकरण की स्थिति</string>
<string name="general_error_label">त्रुटि</string>
<string name="general_share_action">साझा करना</string>
<string name="general_done_action">पूर्ण</string>
<string name="general_copy_action">प्रतिलिपि</string>
<string name="general_thank_you_label">शुक्रिया</string>
<string name="general_value_not_available_label">N/A</string>
</resources>
+2 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Általános módosítások, amelyek az egész alkalmazást érintik.</string>
<string name="settings_acknowledgements_label">Köszönetnyilvánítások</string>
<string name="changelog_label">Napló</string>
<string name="settings_support_email_developer_label">Fejlesztő Email címe</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Fejlesztő Email címe</string>
<string name="settings_support_installid_label">Azonosító</string>
<string name="settings_support_installid_desc">Az automatikus hibajelentések névtelenek. Ossza meg azonosítóját, hogy a fejlesztő megtalálja a hibajelentéseket.</string>
<string name="settings_support_label">Támogatás</string>
@@ -127,4 +127,5 @@
<string name="settings_blescanner_unfiltered_label">Szűretlen BLE adatok</string>
<string name="settings_blescanner_unfiltered_description">Távolítson el minden szűrőt a BLE szkennerből, hogy megjelenjen az összes adat. Hasznos új fejhallgató típusok támogatásához.</string>
<string name="permission_required_title">A következő engedély szükséges:</string>
<string name="translators_thanks_title">Fordító</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Penyesuaian umum yang memengaruhi seluruh aplikasi.</string>
<string name="settings_acknowledgements_label">Ucapan terima kasih</string>
<string name="changelog_label">Catatan perubahan</string>
<string name="settings_support_email_developer_label">Email pengembang</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Email pengembang</string>
<string name="settings_support_installid_label">ID pemasangan</string>
<string name="settings_support_installid_desc">Laporan kesalahan otomatis bersifat anonim. Bagikan ID pemasangan anda jika pengembang perlu menemukan laporan kesalahan anda.</string>
<string name="settings_support_label">Dukungan</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Izin berikut diperlukan:</string>
<string name="settings_compatibility_mode_label">Mode kompatibilitas</string>
<string name="settings_compatibility_mode_description">Nonaktifkan pengoptimalan untuk meningkatkan kompatibilitas. Coba ini jika anda tidak melihat data apa pun.</string>
<string name="translators_thanks_title">Penerjemah</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">darken</string>
</resources>
+6 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Modifiche generali che riguardano l\'intera applicazione.</string>
<string name="settings_acknowledgements_label">Riconoscimenti</string>
<string name="changelog_label">Changelog</string>
<string name="settings_support_email_developer_label">Email sviluppatore</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Email sviluppatore</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_label">Supporto</string>
@@ -93,7 +93,9 @@
<string name="settings_showall_label">Mostra tutti i dispositivi</string>
<string name="settings_showall_description">Mostra i dispositivi delle altre persone vicine a te.</string>
<string name="settings_autopplay_label">Riproduzione automatica</string>
<string name="settings_autoplay_description">Avvia riproduzione audio quando il dispositivo è indossato.</string>
<string name="settings_fake_data_label">Dati immaginari</string>
<string name="settings_fake_data_description">Mostra dati fittizi, ovvero simula dispositivi che in realtà non esistono.</string>
<string name="settings_debug_label">Impostazioni di debug</string>
<string name="settings_debug_description">Impostazioni aggiuntive che possono aiutare a risolvere i problemi con l\'applicazione.</string>
<string name="settings_signal_minimum_label">Qualità del segnale minima</string>
@@ -128,6 +130,9 @@
<string name="last_seen_x">Ultimo accesso: %s</string>
<string name="first_seen_x">Primo accesso: %s</string>
<string name="settings_blescanner_unfiltered_label">Dati BLE non filtrati</string>
<string name="settings_blescanner_unfiltered_description">Rimuovi eventuali filtri dallo scanner BLE per mostrate tutti i dati BLE trasmetti. Utile per aggiungere supporto per nuovi tipi di cuffie.</string>
<string name="permission_required_title">È richiesta la seguente autorizzazione:</string>
<string name="settings_compatibility_mode_label">Modalità di compatibilità</string>
<string name="settings_compatibility_mode_description">Disattiva le ottimizzazioni per migliorare la compatibilità. Prova questa opzione se non vedi alcun dato.</string>
<string name="translators_thanks_title">Traduttori</string>
</resources>
+4 -2
View File
@@ -9,7 +9,7 @@
<string name="general_done_action">בוצע</string>
<string name="general_copy_action">העתק</string>
<string name="general_thank_you_label">תודה רבה</string>
<string name="general_value_not_available_label">לא ישים</string>
<string name="general_value_not_available_label">לא זמין</string>
<string name="general_grant_permission_action">מתן רשות</string>
<string name="general_upgrade_action">שידרוג</string>
<string name="general_check_action">בדיקה</string>
@@ -64,7 +64,7 @@
<string name="settings_general_description">שינויים כלליים שמשפיעים על האפליקציה כולה.</string>
<string name="settings_acknowledgements_label">תודות</string>
<string name="changelog_label">יומן שינויים</string>
<string name="settings_support_email_developer_label">אימייל של המפתח</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">אימייל של המפתח</string>
<string name="settings_support_installid_label">מזהה התקנה</string>
<string name="settings_support_installid_desc">דוחות שגיאה אוטומטיים הם אנונימיים. שתף את מזהה ההתקנה שלך אם המפתח צריך למצוא את דוחות השגיאות שלך.</string>
<string name="settings_support_label">תמיכה</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">ההרשאה הבאה נדרשת:</string>
<string name="settings_compatibility_mode_label">מצב תאימות</string>
<string name="settings_compatibility_mode_description">נטרול אופטימיזציה לשיפור התאימות. נסו את זה אם לא מוצגים נתונים כלל.</string>
<string name="translators_thanks_title">מתרגמים</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">AL_Cool_T</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">앱 전체에 영향을 주는 일반적인 설정들입니다.</string>
<string name="settings_acknowledgements_label">감사의 말</string>
<string name="changelog_label">체인지로그</string>
<string name="settings_support_email_developer_label">개발자에게 메일 보내기</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">개발자에게 메일 보내기</string>
<string name="settings_support_installid_label">설치 ID</string>
<string name="settings_support_installid_desc">자동 오류 보고는 익명성이 보장됩니다. 개발자가 오류 보고서를 필요로 할 때 설치 ID를 알려주세요.</string>
<string name="settings_support_label">지원</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">다음 권한을 부여해야 합니다:</string>
<string name="settings_compatibility_mode_label">호환성 모드</string>
<string name="settings_compatibility_mode_description">최적화 설정들 몇 개를 비활성화해 호환성을 높입니다. 데이터가 보이지 않을 때 사용하세요.</string>
<string name="translators_thanks_title">번역가</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">윤지호(annyeong1alt@gmail.com)</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Tweak umum yang mempengaruhi keseluruhan apl.</string>
<string name="settings_acknowledgements_label">Ucapan terima kasih</string>
<string name="changelog_label">Changelog</string>
<string name="settings_support_email_developer_label">Pembangun e-mel</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Pembangun e-mel</string>
<string name="settings_support_installid_label">Pasang ID</string>
<string name="settings_support_installid_desc">Laporan ralat automatik adalah tanpa nama. Kongsi ID pemasangan anda jika pembangun perlu mencari laporan ralat anda.</string>
<string name="settings_support_label">Sokongan</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Kebenaran berikut diperlukan:</string>
<string name="settings_compatibility_mode_label">Mod keserasian</string>
<string name="settings_compatibility_mode_description">Nyahdayakan pengoptimuman untuk tingkatkan keserasian. Cuba ini jika anda tidak melihat sebarang data.</string>
<string name="translators_thanks_title">Penterjemah</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">bob hasnul(bobhasnul@gmail. com)</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Algemene aanpassingen die de hele app beïnvloeden.</string>
<string name="settings_acknowledgements_label">Dankbetuigingen</string>
<string name="changelog_label">Wijzigingslog</string>
<string name="settings_support_email_developer_label">E-mailontwikkelaar</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">E-mailontwikkelaar</string>
<string name="settings_support_installid_label">Installatie-ID</string>
<string name="settings_support_installid_desc">Automatische foutmeldingen zijn anoniem. Deel uw installatie-ID als de ontwikkelaar uw foutrapporten moet vinden.</string>
<string name="settings_support_label">Ondersteuning</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">De volgende toestemming is vereist:</string>
<string name="settings_compatibility_mode_label">Compatibiliteitsmodus</string>
<string name="settings_compatibility_mode_description">Schakel optimalisaties uit om de compatibiliteit te verbeteren. Probeer dit als u geen gegevens ziet.</string>
<string name="translators_thanks_title">Vertalers</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">darken</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Generelle justeringer som påvirker hele appen.</string>
<string name="settings_acknowledgements_label">Anerkjennelser</string>
<string name="changelog_label">Endringslogg</string>
<string name="settings_support_email_developer_label">Send e-post til utvikler</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Send e-post til utvikler</string>
<string name="settings_support_installid_label">Installasjons-ID</string>
<string name="settings_support_installid_desc">Automatiske feilrapporter er anonyme. Del installasjons-ID-en din hvis utvikleren skal finne feilrapportene dine.</string>
<string name="settings_support_label">Brukerstøtte</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Følgende tillatelse kreves:</string>
<string name="settings_compatibility_mode_label">Kompatibilitetsmodus</string>
<string name="settings_compatibility_mode_description">Deaktiver optimaliseringer for å forbedre kompatibiliteten. Prøv dette hvis du ikke ser noen data.</string>
<string name="translators_thanks_title">Oversettere</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">Kristoffer Vassbø(kristoffervassbo@gmail.com)</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Ogólne opcje, które mają wpływ na całą aplikację.</string>
<string name="settings_acknowledgements_label">Podziękowania</string>
<string name="changelog_label">Lista zmian</string>
<string name="settings_support_email_developer_label">E-mail autora</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">E-mail autora</string>
<string name="settings_support_installid_label">ID instalacji</string>
<string name="settings_support_installid_desc">Automatyczne raporty błędów są anonimowe. Udostępni swoje ID instalacji, aby autor mógł znaleźć twój raport błędu.</string>
<string name="settings_support_label">Wsparcie</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Następujące uprawnienie jest wymagane:</string>
<string name="settings_compatibility_mode_label">Tryb kompatybilność</string>
<string name="settings_compatibility_mode_description">Wyłącza optymalizacje, aby poprawić kompatybilność. Wypróbuj, jeśli nie widzisz żadnych danych.</string>
<string name="translators_thanks_title">Tłumacze</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">darken; K4r0lSz;</string>
</resources>
+5 -3
View File
@@ -62,9 +62,9 @@
<string name="settings_category_other_label">Outros</string>
<string name="settings_general_label">Configurações</string>
<string name="settings_general_description">Ajustes gerais que afetam todo o aplicativo.</string>
<string name="settings_acknowledgements_label">Reconhecimentos</string>
<string name="settings_acknowledgements_label">Agradecimentos</string>
<string name="changelog_label">Registro de alterações</string>
<string name="settings_support_email_developer_label">Email do desenvolvedor</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Email do desenvolvedor</string>
<string name="settings_support_installid_label">ID de instalação</string>
<string name="settings_support_installid_desc">Os relatórios automáticos de erros são anônimos. Compartilhe seu ID de instalação se o desenvolvedor precisar encontrar seus relatórios de erros.</string>
<string name="settings_support_label">Suporte</string>
@@ -118,7 +118,7 @@
<string name="upgrade_capod_label">Atualizar CAPod</string>
<string name="upgrade_capod_description">Obtenha recursos adicionais e dê suporte ao desenvolvedor.</string>
<string name="settings_popup_caseopen_label">Mostrar pop-up</string>
<string name="settings_popup_caseopen_description">Mostrar um pop-up quando o estojo do dispositivo for aberta (experimental).</string>
<string name="settings_popup_caseopen_description">Mostrar um pop-up quando o estojo do dispositivo for aberto (experimental).</string>
<string name="overview_bluetooth_disabled_label">Bluetooth está desativado</string>
<string name="overview_bluetooth_disabled_description">O Bluetooth está desabilitado, habilite-o ;)</string>
<string name="help_translate_label">Tradução</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">A seguinte permissão é necessária:</string>
<string name="settings_compatibility_mode_label">Modo de compatibilidade</string>
<string name="settings_compatibility_mode_description">Desative as otimizações para melhorar a compatibilidade. Tente isso se você não estiver vendo nenhum dado.</string>
<string name="translators_thanks_title">Tradutores</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">Igor Silva (ferrare42@gmail.com)</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Общие настройки, влияющие на всё приложение.</string>
<string name="settings_acknowledgements_label">Благодарности</string>
<string name="changelog_label">История изменений</string>
<string name="settings_support_email_developer_label">Написать разработчику</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Написать разработчику</string>
<string name="settings_support_installid_label">ID установки</string>
<string name="settings_support_installid_desc">Автоматические отчёты об ошибках анонимны. Поделитесь Вашим ID установки, если разработчику нужен доступ к Вашим отчётам об ошибках.</string>
<string name="settings_support_label">Поддержка</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Требуется следующее разрешение:</string>
<string name="settings_compatibility_mode_label">Режим совместимости</string>
<string name="settings_compatibility_mode_description">Отключите оптимизацию для улучшения совместимости. Попробуйте это, если не видите данных.</string>
<string name="translators_thanks_title">Переводчики</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">AL_Cool_T</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Všeobecné vylepšenia, ktoré ovplyvňujú celú aplikáciu.</string>
<string name="settings_acknowledgements_label">Poďakovania</string>
<string name="changelog_label">Zoznam zmien</string>
<string name="settings_support_email_developer_label">E-mail vývojárovi</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">E-mail vývojárovi</string>
<string name="settings_support_installid_label">ID inštalácie</string>
<string name="settings_support_installid_desc">Automatické chybové hlásenia sú anonymné. Zdieľajte svoje ID inštalácie, ak vývojár potrebuje nájsť vaše chybové hlásenia.</string>
<string name="settings_support_label">Podpora</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Vyžaduje sa nasledujúce povolenie:</string>
<string name="settings_compatibility_mode_label">Režim kompatibility</string>
<string name="settings_compatibility_mode_description">Zakázať optimalizáciu na zlepšenie kompatibility. Skúste to, ak nevidíte žiadne údaje.</string>
<string name="translators_thanks_title">Prekladatelia</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">dukelc</string>
</resources>
+1 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">Tüm uygulamayı etkileyen genel düzenlemeler.</string>
<string name="settings_acknowledgements_label">Teşekkür</string>
<string name="changelog_label">Değişiklik Günlüğü</string>
<string name="settings_support_email_developer_label">E-posta geliştiricisi</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">E-posta geliştiricisi</string>
<string name="settings_support_installid_label">Yükleme Kimliği</string>
<string name="settings_support_installid_desc">Otomatik hata raporları anonimdir. Geliştiricinin hata raporlarınızı bulması gerekiyorsa yükleme kimliğinizi paylaşın.</string>
<string name="settings_support_label">Destek</string>
+17 -1
View File
@@ -2,6 +2,7 @@
<resources>
<string name="app_name">CAPod</string>
<string name="app_name_pro">CAPod Професійна</string>
<string name="app_name_foss">CAPod FOSS</string>
<string name="notification_channel_device_status_label">Статус пристрою</string>
<string name="general_error_label">Помилка</string>
<string name="general_share_action">Поділитися</string>
@@ -14,6 +15,7 @@
<string name="general_check_action">Перевірити</string>
<string name="general_close_action">Зачинити</string>
<string name="debug_debuglog_size_label">Розмір</string>
<string name="debug_debuglog_size_compressed_label">Стиснутий розмір</string>
<string name="permission_bluetooth_label">Bluetooth</string>
<string name="permission_access_fine_location_label">Доступ до точного місцезнаходження</string>
<string name="permission_background_location_label">Доступ до місцезнаходження у тлі</string>
@@ -29,6 +31,7 @@
<string name="pods_connection_state_call_label">У режимі виклику</string>
<string name="pods_connection_state_unknown_label">Невідомий стан з\'єднання</string>
<string name="pods_unknown_label">Невідомий пристрій</string>
<string name="pods_unknown_contact_dev">Це невідомий пристрій, проте він використовує подібний формат повідомлень. Додаймо його підтримку, надішліть мені лист :)</string>
<string name="pods_none_label_short">Немає пристрою</string>
<string name="pods_charging_label">Заряджання</string>
<string name="pods_inear_label">У вусі</string>
@@ -44,16 +47,26 @@
<string name="settings_general_description">Загальні функції, що впливають на всю програму.</string>
<string name="settings_acknowledgements_label">Подяки</string>
<string name="changelog_label">Список змін</string>
<string name="settings_support_email_developer_label">Лист розробнику</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Лист розробнику</string>
<string name="settings_support_label">Підтримка</string>
<string name="settings_support_description">Якщо необхідна допомога.</string>
<string name="discord_label">Discord</string>
<string name="discord_description">Місце для зависання та задавання питань.</string>
<string name="settings_support_email_developer_description">Зауважте, що я можу відповідати лише німецькою або англійською.</string>
<string name="settings_debug_autoreports_label">Автоматичні звіти про помилки</string>
<string name="settings_debug_mode_label">Режим налагодження</string>
<string name="settings_debug_mode_description">Відображення додаткової інформації щодо помилок.</string>
<string name="settings_monitor_mode_label">Режим відстеження</string>
<string name="settings_monitor_mode_description">За яких умов ця програма відстежує дані Bluetooth.</string>
<string name="settings_scanner_mode_label">Режим сканера</string>
<string name="settings_scanner_mode_description">Сканер даних Bluetooth Low Energy має зосередитися на продуктивності чи збереженні заряду батареї?</string>
<string name="settings_monitor_mode_manual_label">Коли програму відкрито</string>
<string name="settings_monitor_mode_automatic_label">При під\'єднаному пристрої</string>
<string name="settings_monitor_mode_always_label">Завжди</string>
<string name="settings_scanner_mode_lowpower_label">Низький заряд</string>
<string name="settings_scanner_mode_balanced_label">Збалансовано</string>
<string name="settings_autopause_label">Автопауза</string>
<string name="settings_autopause_description">Зупинка відтворення аудіо, коли навушник прибрано з Вашого вуха.</string>
<string name="settings_showall_label">Показувати усі пристрої</string>
<string name="settings_showall_description">Відображення пристроїв інших людей побизу Вас.</string>
<string name="settings_autopplay_label">Автовідтворення</string>
@@ -82,4 +95,7 @@
<string name="last_seen_x">Востаннє був: %s</string>
<string name="first_seen_x">Уперше був: %s</string>
<string name="permission_required_title">Необхідні наступні дозволи:</string>
<string name="settings_compatibility_mode_label">Режим сумісності</string>
<string name="translators_thanks_title">Перекладачі</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">Ievgen Gil</string>
</resources>
+14 -12
View File
@@ -6,7 +6,7 @@
<string name="notification_channel_device_status_label">Trạng thái thiết bị</string>
<string name="general_error_label">Lỗi</string>
<string name="general_share_action">Chia sẻ</string>
<string name="general_done_action">Xong</string>
<string name="general_done_action">Hoàn tất</string>
<string name="general_copy_action">Sao chép</string>
<string name="general_thank_you_label">Cảm ơn</string>
<string name="general_value_not_available_label">Không rõ</string>
@@ -22,20 +22,20 @@
<string name="permission_bluetooth_connect_label">Kết nối Bluetooth</string>
<string name="permission_bluetooth_connect_description">Ứng dụng này yêu cầu quyền \"Kết nối Bluetooth\" để tương tác với các thiết bị được ghép nối và bắt đầu kết nối.</string>
<string name="permission_bluetooth_scan_label">Quét qua Bluetooth</string>
<string name="permission_bluetooth_scan_description">Quyền \"quét Bluetooth\" cho phép ứng dụng này khám phá và nhận dữ liệu Bluetooth từ các thiết bị lân cận, chẳng hạn như AirPods của bạn.</string>
<string name="permission_bluetooth_scan_description">Quyền \"quét qua Bluetooth\" cho phép ứng dụng này khám phá và nhận dữ liệu Bluetooth từ các thiết bị lân cận, chẳng hạn như AirPods của bạn.</string>
<string name="permission_bluetooth_label">Bluetooth</string>
<string name="permission_bluetooth_description">Ứng dụng này yêu cầu quyền \"Bluetooth\" để kết nối với các thiết bị bluetooth được ghép nối.</string>
<string name="permission_access_fine_location_label">Truy cập vị trí tốt</string>
<string name="permission_access_fine_location_description">CAPod sử dụng quyền \"vị trí tốt\" để nhận dữ liệu Bluetooth Low Energy. Tai nghe của bạn sử dụng công nghệ Bluetooth Low Energy để phát trạng thái của chúng. Ứng dụng này sẽ KHÔNG sử dụng dữ liệu Bluetooth để xác định vị trí của bạn.</string>
<string name="permission_background_location_label">Quyền truy cập vị trí nền</string>
<string name="permission_background_location_description">CAPod sử dụng \"quyền truy cập vị trí nền\" để bật các tính năng như \"Hiển thị cửa sổ bật lên\" và \"Tự động kết nối\" trong khi ứng dụng đóng. Quyền truy cập vị trí trong nền cho phép ứng dụng nhận dữ liệu Bluetooth Low Energy khi đang ở chế độ nền. Ứng dụng này sẽ KHÔNG sử dụng dữ liệu Bluetooth để xác định vị trí của bạn.</string>
<string name="permission_bluetooth_description">Ứng dụng này yêu cầu quyền \"Bluetooth\" để kết nối với các thiết bị Bluetooth được ghép nối.</string>
<string name="permission_access_fine_location_label">Truy cập vị trí chính xác</string>
<string name="permission_access_fine_location_description">CAPod sử dụng quyền \"vị trí chính xác\" để nhận dữ liệu Bluetooth Năng Lượng Thấp. Tai nghe của bạn sử dụng công nghệ Bluetooth Năng Lượng Thấp để phát trạng thái của chúng. Ứng dụng này sẽ KHÔNG sử dụng dữ liệu Bluetooth để xác định vị trí của bạn.</string>
<string name="permission_background_location_label">Quyền truy cập vị trí trong nền</string>
<string name="permission_background_location_description">CAPod sử dụng \"quyền truy cập vị trí trong nền\" để bật các tính năng như \"Hiển thị cửa sổ bật lên\" và \"Tự động kết nối\" trong khi ứng dụng đóng. Quyền truy cập vị trí trong nền cho phép ứng dụng nhận dữ liệu Bluetooth Năng Lượng Thấp khi đang ở chế độ nền. Ứng dụng này sẽ KHÔNG sử dụng dữ liệu Bluetooth để xác định vị trí của bạn.</string>
<string name="permission_ignore_battery_optimizations_label">Tắt tối ưu hóa pin</string>
<string name="permission_ignore_battery_optimizations_description">Tối ưu hóa pin ngăn ứng dụng này nhận dữ liệu Bluetooth một cách đáng tin cậy khi ứng dụng ở chế độ nền.</string>
<string name="permission_ignore_battery_optimizations_description">Tối ưu hóa pin ngăn ứng dụng này nhận dữ liệu Bluetooth một cách chính xác khi ứng dụng ở chế độ nền.</string>
<string name="pods_dual_left_label">Tai bên trái</string>
<string name="pods_dual_right_label">Tai bên phải</string>
<string name="pods_case_label">Hộp đựng</string>
<string name="pods_case_status_open_label">Mở</string>
<string name="pods_case_status_closed_label">Đã đóng</string>
<string name="pods_case_status_closed_label">Đóng</string>
<string name="pods_connection_state_disconnected_label">Không được kết nối với thiết bị</string>
<string name="pods_connection_state_idle_label">Đã kết nối với một thiết bị nhưng không hoạt động</string>
<string name="pods_connection_state_music_label">Ở chế độ âm nhạc</string>
@@ -44,7 +44,7 @@
<string name="pods_connection_state_hanging_up_label">Cúp máy</string>
<string name="pods_connection_state_unknown_label">Trạng thái kết nối không xác định</string>
<string name="pods_unknown_raw_data_label">Dữ liệu thô</string>
<string name="pods_unknown_label">Thiết bị chưa biết</string>
<string name="pods_unknown_label">Thiết bị không xác định</string>
<string name="pods_unknown_contact_dev">Đây là một thiết bị không xác định, nhưng nó đang sử dụng định dạng tin nhắn tương tự. Cần thêm hỗ trợ cho nó, liên hệ với tôi :)</string>
<string name="pods_none_label_short">Không có thiết bị</string>
<string name="pods_charging_label">Đang sạc</string>
@@ -62,9 +62,9 @@
<string name="settings_category_other_label">Khác</string>
<string name="settings_general_label">Cài đặt</string>
<string name="settings_general_description">Các chỉnh sửa chung ảnh hưởng đến toàn bộ ứng dụng.</string>
<string name="settings_acknowledgements_label">Nhìn nhận</string>
<string name="settings_acknowledgements_label">Đóng góp và cảm ơn</string>
<string name="changelog_label">Các thay đổi</string>
<string name="settings_support_email_developer_label">Gửi email cho nhà phát triển</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">Gửi email cho nhà phát triển</string>
<string name="settings_support_installid_label">ID Cài đặt</string>
<string name="settings_support_installid_desc">Các báo cáo lỗi tự động được ẩn danh. Chia sẻ ID cài đặt của bạn nếu nhà phát triển cần tìm các báo cáo lỗi của bạn.</string>
<string name="settings_support_label">Hỗ trợ</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">Quyền sau đây là bắt buộc:</string>
<string name="settings_compatibility_mode_label">Chế độ tương thích</string>
<string name="settings_compatibility_mode_description">Tắt tối ưu hóa để cải thiện khả năng tương thích. Hãy thử điều này nếu bạn không thấy bất kỳ dữ liệu nào.</string>
<string name="translators_thanks_title">Dịch thuật</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">dovanchuc7521</string>
</resources>
+3 -1
View File
@@ -64,7 +64,7 @@
<string name="settings_general_description">影响整个应用的一般性设置。</string>
<string name="settings_acknowledgements_label">鸣谢</string>
<string name="changelog_label">更新日志</string>
<string name="settings_support_email_developer_label">给开发者发电子邮件</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">给开发者发电子邮件</string>
<string name="settings_support_installid_label">安装 ID</string>
<string name="settings_support_installid_desc">自动发送的错误报告是匿名的。如果需要,给开发者发送您的安装 ID 以便找出您的错误报告。</string>
<string name="settings_support_label">用户支持</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">需要下列权限:</string>
<string name="settings_compatibility_mode_label">兼容模式</string>
<string name="settings_compatibility_mode_description">禁用优化以提高兼容性,请在未看到任何数据时尝试此操作</string>
<string name="translators_thanks_title">翻译人员</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">木仔</string>
</resources>
+8 -6
View File
@@ -8,7 +8,7 @@
<string name="general_share_action">分享</string>
<string name="general_done_action">完成</string>
<string name="general_copy_action">複製</string>
<string name="general_thank_you_label">謝你們</string>
<string name="general_thank_you_label">謝你們</string>
<string name="general_value_not_available_label">不可用</string>
<string name="general_grant_permission_action">授予權限</string>
<string name="general_upgrade_action">升級</string>
@@ -17,12 +17,12 @@
<string name="debug_debuglog_size_label">大小</string>
<string name="debug_debuglog_size_compressed_label">壓縮後大小</string>
<string name="debug_notification_channel_label">偵錯通知</string>
<string name="debug_debuglog_file_label">已記錄的日誌</string>
<string name="debug_debuglog_record_action">記錄偵錯日誌</string>
<string name="debug_debuglog_file_label">已記錄的記錄</string>
<string name="debug_debuglog_record_action">記錄偵錯記錄</string>
<string name="permission_bluetooth_connect_label">藍牙連線</string>
<string name="permission_bluetooth_connect_description">本應用程式需要「藍牙連線」權限以與已配對的裝置交互或配對新裝置。</string>
<string name="permission_bluetooth_scan_label">藍牙掃描</string>
<string name="permission_bluetooth_scan_description">「藍牙掃描」權限允許該應用程式發現附近的裝置並接收藍牙資料,你的 AirPods 需要如此。</string>
<string name="permission_bluetooth_scan_description">「藍牙掃描」權限允許該應用程式發現附近的裝置並接收藍牙資料,你的 AirPods 需要如此。</string>
<string name="permission_bluetooth_label">藍牙</string>
<string name="permission_bluetooth_description">該應用程式需要「藍牙」權限與已配對裝置連線。</string>
<string name="permission_access_fine_location_label">存取精確位置</string>
@@ -61,10 +61,10 @@
<string name="settings_licenses_label">授權條款</string>
<string name="settings_category_other_label">其它</string>
<string name="settings_general_label">設定</string>
<string name="settings_general_description">影響整個應用程式的一般調。</string>
<string name="settings_general_description">影響整個應用程式的一般調</string>
<string name="settings_acknowledgements_label">致謝</string>
<string name="changelog_label">變更記錄</string>
<string name="settings_support_email_developer_label">向開發人員寄出電子郵件</string>
<string name="settings_support_email_developer_label" comment="settings_support_email_developer_label&#10;&#10;Pressing this setting will open your default email app with a template for a mail to me and some device info (e.g. versions).">向開發人員寄出電子郵件</string>
<string name="settings_support_installid_label">安裝 ID</string>
<string name="settings_support_installid_desc">自動傳送的錯誤報告是匿名的。如果開發人員需要找出你的錯誤報告將分享你的安裝 ID。</string>
<string name="settings_support_label">支援</string>
@@ -134,4 +134,6 @@
<string name="permission_required_title">可能要求下列權限:</string>
<string name="settings_compatibility_mode_label">相容模式</string>
<string name="settings_compatibility_mode_description">停用最佳化以提高相容性。請在未看到任何資料時開啟。</string>
<string name="translators_thanks_title">翻譯人員</string>
<string name="translators_thanks_description" comment="translators_thanks_description&#10;&#10;You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings&gt;Acknowledgements&gt;Thank you section.&#10;&#10;Separate names by semicolons and an optional email may be included in brackets, example:&#10;&#10;darken(darken@darken.eu);John Doe(john@example.com)&#10;&#10;&quot;darken&quot; is just a placeholder and does not have to be kept if/when you add yours.&#10;&#10;Be nice to each other!">人工知能</string>
</resources>
+11 -1
View File
@@ -7,7 +7,17 @@
<item name="android:layout_marginEnd">8dp</item>
</style>
<style name="PodInfoItemIcon">
<style name="PodInfoItemIcon.Notification" parent="TextAppearance.Compat.Notification.Title">
<item name="android:layout_height">20dp</item>
<item name="android:layout_width">20dp</item>
</style>
<style name="PodInfoItemText.Notification" parent="TextAppearance.Compat.Notification.Title">
<item name="android:singleLine">true</item>
<item name="android:ellipsize">end</item>
</style>
<style name="PodInfoItemIcon" parent="TextAppearance.MaterialComponents.Body2">
<item name="android:layout_height">20dp</item>
<item name="android:layout_width">20dp</item>
</style>
@@ -50,13 +50,6 @@
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_category_other_label">
<CheckBoxPreference
android:icon="@drawable/ic_spider_thread_onsurface"
android:key="debug.bugreport.automatic.enabled"
android:summary="@string/settings_debug_autoreports_description"
android:title="@string/settings_debug_autoreports_label" />
<Preference
android:fragment="eu.darken.capod.main.ui.settings.general.debug.DebugSettingsFragment"
android:icon="@drawable/ic_baseline_bug_report_24"
+1 -1
View File
@@ -27,7 +27,7 @@
app:summary="v?.?.?">
<intent
android:action="android.intent.action.VIEW"
android:data="https://github.com/d4rken/capod-public/releases/latest" />
android:data="https://github.com/d4rken-org/capod/releases/latest" />
</Preference>
<Preference
+14 -9
View File
@@ -1,15 +1,6 @@
<?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
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/capod-public/issues" />
</Preference>
<Preference
android:icon="@drawable/ic_discord_onsurface"
android:summary="@string/discord_description"
@@ -18,6 +9,14 @@
android:action="android.intent.action.VIEW"
android:data="https://discord.gg/rrxxng35jq" />
</Preference>
<Preference
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>
<Preference
android:icon="@drawable/ic_email_onsurface"
android:key="support.email.darken"
@@ -30,5 +29,11 @@
android:key="support.installid"
android:summary="@string/settings_support_installid_desc"
android:title="@string/settings_support_installid_label" />
<CheckBoxPreference
android:icon="@drawable/ic_spider_thread_onsurface"
android:key="debug.bugreport.automatic.enabled"
android:summary="@string/settings_debug_autoreports_description"
android:title="@string/settings_debug_autoreports_label" />
</PreferenceCategory>
</PreferenceScreen>
+2 -2
View File
@@ -8,8 +8,8 @@ buildscript {
'version' : [
'major': 1,
'minor': 3,
'patch': 8,
'build': 0,
'patch': 13,
'build': 2,
],
]
+2 -2
View File
@@ -1,2 +1,2 @@
json_key_file "~/.fastlaneconfig/androiddev-console-darken_development-4f6965ff0eda.json" # Path to the json secret file - Follow https://github.com/fastlane/supply#setup to get one
package_name "eu.darken.capod" # e.g. com.krausefx.app
#json_key_file "~/.appconfig/eu.darken.capod/gplay-capod-ci_api.json"
package_name "eu.darken.capod"
+21 -9
View File
@@ -11,7 +11,7 @@
# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "2.204.3"
fastlane_version "2.175.0"
default_platform :android
@@ -21,17 +21,29 @@ platform :android do
end
lane :beta do
ensure_git_branch(branch: 'dev')
git_pull
gradle(task: 'clean assembleRelease')
supply(track: 'beta')
gradle(task: 'clean bundleGplayBeta')
sh "bash ./remove_unsupported_languages.sh"
supply(
track: 'beta',
skip_upload_changelogs: 'false',
skip_upload_images: 'true',
skip_upload_screenshots: 'true',
skip_upload_aab: 'true',
skip_upload_metadata: 'true',
)
end
lane :production do
ensure_git_branch(branch: 'master')
git_pull
gradle(task: 'clean assembleRelease')
supply(track: 'rollout', rollout: '0.1')
gradle(task: 'clean bundleGplayRelease')
sh "bash ./remove_unsupported_languages.sh"
supply(
track: 'beta',
skip_upload_changelogs: 'false',
skip_upload_images: 'true',
skip_upload_screenshots: 'true',
skip_upload_aab: 'true',
skip_upload_metadata: 'true',
)
end
lane :listing_only do
@@ -0,0 +1,4 @@
v1.3.13(1031300)
• Updated translations
• Updated internal dependencies
• Tweaked placement of UI elements
@@ -0,0 +1,4 @@
v1.3.13(1031301)
• Updated translations
• Updated internal dependencies
• Tweaked placement of UI elements
@@ -0,0 +1,4 @@
v1.3.13(1031302)
• Updated translations
• Updated internal dependencies
• Tweaked placement of UI elements
@@ -1,6 +1,7 @@
CAPod is a companion app for AirPods.
Features:
* Battery level for pods and cases.
* Charging status for pods and case.
* Additional infos about connection, microphone and case.
@@ -1,17 +1,17 @@
CAPod is a companion app for AirPods.
CAPod es una aplicación complementaria para AirPods.
Features:
* Battery level for pods and cases.
* Charging status for pods and case.
* Additional infos about connection, microphone and case.
* Can receive and show all nearby devices.
* Ear detection with automatic play/pause.
* Automatically connect phone and AirPods.
* Show popup when case is opened.
Características:
* Nivel de batería para auriculares y estuches.
* Estado de carga para auriculares y estuche.
* Información adicional sobre conexión, micrófono y estuche.
* Puede recibir y mostrar todos los dispositivos cercanos.
* Detección de oído con reproducción/pausa automática.
* Conectarse automáticamente al celular y los AirPods.
* Mostrar ventana emergente cuando se abre el estuche.
CAPod is ad-free. Some features require an in-app purchase.
CAPod no tiene publicidad. Algunas características requieren ser compradas dentro de la aplicación.
Most popular AirPods and Beats devices are supported.
If your device is similar to AirPods but not yet supported, send me a short mail.
Los AirPods y Beats más populares son soportados.
Si su dispositivo es similar a AirPods pero aún no es compatible, envíeme un correo.
Got a cool idea for a new feature? Reach out!
¿Tienes una buena idea para una nueva característica? ¡Háznoslo saber!
@@ -1 +1 @@
CAPod is a companion app for AirPods on Android.
CAPod es una aplicación complementaria para AirPods en Android.
+1 -1
View File
@@ -1 +1 @@
CAPod - Companion for AirPods
CAPod - Ayudante para AirPods
@@ -1,17 +1,17 @@
CAPod is a companion app for AirPods.
CAPod AirPods का एक साथी ऐप है।
Features:
* Battery level for pods and cases.
* Charging status for pods and case.
* Additional infos about connection, microphone and case.
* Can receive and show all nearby devices.
* Ear detection with automatic play/pause.
* Automatically connect phone and AirPods.
* Show popup when case is opened.
विशेषताएं:
* फली और मामलों के लिए बैटरी स्तर।
* पॉड्स और केस के लिए चार्जिंग स्टेटस।
* कनेक्शन, माइक्रोफ़ोन और केस के बारे में अतिरिक्त जानकारी।
* सभी आस-पास के उपकरणों को प्राप्त और दिखा सकते हैं।
* स्वचालित प्ले / पॉज़ के साथ कान का पता लगाना।
* स्वचालित रूप से फोन और एयरपॉड्स को कनेक्ट करें।
* केस खुलने पर पॉपअप दिखाएं।
CAPod is ad-free. Some features require an in-app purchase.
CAPod विज्ञापन-मुक्त है। कुछ सुविधाओं के लिए इन-ऐप खरीदारी की आवश्यकता होती है।
Most popular AirPods and Beats devices are supported.
If your device is similar to AirPods but not yet supported, send me a short mail.
सबसे लोकप्रिय AirPods और Beats डिवाइस समर्थित हैं।
यदि आपका उपकरण AirPods के समान है, लेकिन अभी तक समर्थित नहीं है, तो मुझे एक संक्षिप्त संदेश भेजें
Got a cool idea for a new feature? Reach out!
एक नई सुविधा के लिए एक अच्छा विचार मिला? तक पहुँच!
@@ -1 +1 @@
CAPod is a companion app for AirPods on Android.
CAPod Android पर AirPods के लिए एक सहयोगी ऐप है।
+1 -1
View File
@@ -1 +1 @@
CAPod - Companion for AirPods
CAPod - AirPods के लिए साथी
+1 -1
View File
@@ -1 +1 @@
CAPod - Companion for AirPods
CAPod - Companion app per le Airpods
+1
View File
@@ -11,5 +11,6 @@ rm -rv ./metadata/android/ku-TR
rm -rv ./metadata/android/kmr-TR
rm -rv ./metadata/android/ur-IN
rm -rv ./metadata/android/zu
rm -rv ./metadata/android/si-LK
find ./metadata/android -empty -type d -delete
exit 0
-10
View File
@@ -1,10 +0,0 @@
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=/home/darken/Android/sdk