Compare commits

...
38 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
darken c437decbbf Add VarunrAirPodsPro.kt 2022-04-08 23:18:35 +02:00
darken 1d36677ead Updated translations 2022-02-16 20:03:59 +01:00
darken 542b69ca92 Add acknowledgement entry for translator names. 2022-02-16 19:58:52 +01:00
darken 8547c9c396 Version bump (1.3.7) 2022-02-13 21:52:53 +01:00
94 changed files with 936 additions and 236 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>()
@@ -103,6 +103,9 @@ interface PodDevice {
@Json(name = "fakes.tws.i99999") TWS_I99999(
"TWS i99999"
),
@Json(name = "fakes.varunr.airpodspro") VARUNR_AIRPODS_PRO(
"Fake AirPods Pro"
),
@Json(name = "unknown") UNKNOWN(
"Unknown"
);
@@ -8,6 +8,7 @@ import dagger.multibindings.IntoSet
import eu.darken.capod.pods.core.apple.airpods.*
import eu.darken.capod.pods.core.apple.beats.*
import eu.darken.capod.pods.core.apple.misc.Twsi99999
import eu.darken.capod.pods.core.apple.misc.VarunrAirPodsPro
@InstallIn(SingletonComponent::class)
@Module
@@ -28,4 +29,6 @@ abstract class AppleFactoryModule {
@Binds @IntoSet abstract fun powerBeatsPro(factory: PowerBeatsPro.Factory): ApplePodsFactory<out ApplePods>
@Binds @IntoSet abstract fun fakesTwsi999999(factory: Twsi99999.Factory): ApplePodsFactory<out ApplePods>
@Binds @IntoSet
abstract fun fakesVarunrAirPodsPro(factory: VarunrAirPodsPro.Factory): ApplePodsFactory<out ApplePods>
}
@@ -0,0 +1,143 @@
package eu.darken.capod.pods.core.apple.misc
import eu.darken.capod.common.bluetooth.BleScanResult
import eu.darken.capod.common.debug.logging.log
import eu.darken.capod.common.debug.logging.logTag
import eu.darken.capod.common.isBitSet
import eu.darken.capod.common.lowerNibble
import eu.darken.capod.common.upperNibble
import eu.darken.capod.pods.core.DualPodDevice
import eu.darken.capod.pods.core.HasCase
import eu.darken.capod.pods.core.HasDualMicrophone
import eu.darken.capod.pods.core.PodDevice
import eu.darken.capod.pods.core.apple.ApplePods
import eu.darken.capod.pods.core.apple.ApplePodsFactory
import eu.darken.capod.pods.core.apple.protocol.ProximityPairing
import java.time.Instant
import javax.inject.Inject
/**
* AirPods Pro clone similar to Twsi999999.
* Shorter data structure.
*/
data class VarunrAirPodsPro constructor(
override val identifier: PodDevice.Id = PodDevice.Id(),
override val seenLastAt: Instant = Instant.now(),
override val seenFirstAt: Instant = Instant.now(),
override val seenCounter: Int = 1,
override val scanResult: BleScanResult,
override val proximityMessage: ProximityPairing.Message,
override val confidence: Float = PodDevice.BASE_CONFIDENCE,
private val rssiAverage: Int? = null,
private val cachedBatteryPercentage: Float? = null,
) : ApplePods, DualPodDevice, HasDualMicrophone, HasCase {
override val model: PodDevice.Model = PodDevice.Model.VARUNR_AIRPODS_PRO
override val rssi: Int
get() = rssiAverage ?: super<ApplePods>.rssi
/**
* Normally values for the left pod are in the lower nibbles, if the left pod is primary (microphone)
* If the right pod is the primary, the values are flipped.
*/
val areValuesFlipped: Boolean
get() = !rawStatus.isBitSet(5)
override val batteryLeftPodPercent: Float?
get() {
val value = when (areValuesFlipped) {
true -> rawPodsBattery.upperNibble.toInt()
false -> rawPodsBattery.lowerNibble.toInt()
}
return when (value) {
15 -> null
else -> if (value > 10) {
log { "Left pod: Above 100% battery: $value" }
1.0f
} else {
(value / 10f)
}
}
}
override val batteryRightPodPercent: Float?
get() {
val value = when (areValuesFlipped) {
true -> rawPodsBattery.lowerNibble.toInt()
false -> rawPodsBattery.upperNibble.toInt()
}
return when (value) {
15 -> null
else -> if (value > 10) {
log { "Right pod: Above 100% battery: $value" }
1.0f
} else {
value / 10f
}
}
}
val isThisPodInThecase: Boolean
get() = rawStatus.isBitSet(6)
/**
* The data flip bit is set if the left pod is primary.
* For the pod that is in the case, this is flipped again though.
*/
override val isLeftPodMicrophone: Boolean
get() = rawStatus.isBitSet(5) xor isThisPodInThecase
/**
* The data flip bit is UNset if the right pod is primary.
* For the pod that is in the case, this is flipped again though.
*/
override val isRightPodMicrophone: Boolean
get() = !rawStatus.isBitSet(5) xor isThisPodInThecase
override val batteryCasePercent: Float?
get() = when (val value = rawCaseBattery.toInt()) {
15 -> cachedBatteryPercentage
else -> if (value > 10) {
log { "Case: Above 100% battery: $value" }
1.0f
} else {
value / 10f
}
}
override val isCaseCharging: Boolean
get() = rawFlags.isBitSet(2)
class Factory @Inject constructor() : ApplePodsFactory<VarunrAirPodsPro>(TAG) {
override fun isResponsible(message: ProximityPairing.Message): Boolean = message.run {
// Official message length is 19HEX, i.e. binary 25, did they copy this wrong?
getModelInfo().full == DEVICE_CODE && length == 19
}
override fun create(scanResult: BleScanResult, message: ProximityPairing.Message): ApplePods {
var basic = VarunrAirPodsPro(scanResult = scanResult, proximityMessage = message)
val result = searchHistory(basic)
if (result != null) basic = basic.copy(identifier = result.id)
updateHistory(basic)
if (result == null) return basic
return basic.copy(
identifier = result.id,
seenFirstAt = result.seenFirstAt,
seenCounter = result.seenCounter,
confidence = result.confidence,
cachedBatteryPercentage = result.getLatestCaseBattery(),
rssiAverage = result.averageRssi(basic.rssi),
)
}
}
companion object {
private val DEVICE_CODE = 0x0E20.toUShort()
private val TAG = logTag("PodDevice", "Apple", "Varunr", "AirPodsPro")
}
}
@@ -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>
+10 -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>
@@ -81,6 +81,7 @@
<string name="settings_monitor_mode_label">Mode surveillance</string>
<string name="settings_monitor_mode_description">Les circonstances de surveillance des données Bluetooth par lappli.</string>
<string name="settings_scanner_mode_label">Mode analyse</string>
<string name="settings_scanner_mode_description">Lanalyseur des données « basse énergie » de Bluetooth devrait-il prioriser les performances ou préserver l’énergie?</string>
<string name="settings_monitor_mode_manual_label">Si lappli est en fonction</string>
<string name="settings_monitor_mode_automatic_label">Si lappareil est connecté</string>
<string name="settings_monitor_mode_always_label">Toujours</string>
@@ -88,10 +89,13 @@
<string name="settings_scanner_mode_balanced_label">Équilibré</string>
<string name="settings_scanner_mode_lowlatency_label">Faible latence</string>
<string name="settings_autopause_label">Pause automatique</string>
<string name="settings_autopause_description">Mettre le son en pause si vous ôtez lappareil de votre oreille.</string>
<string name="settings_showall_label">Afficher tous les appareils</string>
<string name="settings_showall_description">Afficher les appareils dautres personnes à proximité.</string>
<string name="settings_autopplay_label">Lecture automatique</string>
<string name="settings_autoplay_description">Démarrer la lecture du son quand lappareil est porté.</string>
<string name="settings_fake_data_label">Fausses données</string>
<string name="settings_fake_data_description">Afficher les fausses données, c.-à-d. simuler les appareils qui nexistent pas.</string>
<string name="settings_debug_label">Paramètres de débogage</string>
<string name="settings_debug_description">Autres paramètres pour aider à diagnostiquer les problèmes de lappli.</string>
<string name="settings_signal_minimum_label">Qualité minimale du signal</string>
@@ -118,6 +122,7 @@
<string name="overview_bluetooth_disabled_label">Le Bluetooth est désactivé</string>
<string name="overview_bluetooth_disabled_description">Le Bluetooth est désactivé, activez-le ;)</string>
<string name="help_translate_label">Traduction</string>
<string name="help_translate_description">Aider à traduire cette appli dans votre langue préférée.</string>
<string name="settings_onepod_mode_label">Mode à un seul AirPod</string>
<string name="settings_onepod_mode_description">Il nest pas nécessaire de porter deux AirPods, en porter un seul suffit à déclencher les réactions.</string>
<string name="permission_system_alert_window_label">Fenêtre dalerte système</string>
@@ -127,4 +132,8 @@
<string name="settings_blescanner_unfiltered_label">Données BÉB non filtrées</string>
<string name="settings_blescanner_unfiltered_description">Supprimer tous les filtres de lanalyseur BÉB pour afficher toutes les données BÉB diffusées. Utile pour prendre en charge les nouveaux types de casques-micros.</string>
<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>
+10 -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>
@@ -81,6 +81,7 @@
<string name="settings_monitor_mode_label">Mode monitor</string>
<string name="settings_monitor_mode_description">Dalam keadaan apa aplikasi ini memonitor data Bluetooth.</string>
<string name="settings_scanner_mode_label">Modus memindai</string>
<string name="settings_scanner_mode_description">Haruskah pemindai data Bluetooth Hemat Energi memprioritaskan kinerja atau menghemat energi?</string>
<string name="settings_monitor_mode_manual_label">Saat aplikasi terbuka</string>
<string name="settings_monitor_mode_automatic_label">Saat perangkat terhubung</string>
<string name="settings_monitor_mode_always_label">Selalu</string>
@@ -88,10 +89,13 @@
<string name="settings_scanner_mode_balanced_label">Seimbang</string>
<string name="settings_scanner_mode_lowlatency_label">Latemsi rendah</string>
<string name="settings_autopause_label">Jeda otomatis</string>
<string name="settings_autopause_description">Jeda audio saat melepaskan perangkat dari telinga anda.</string>
<string name="settings_showall_label">Tampilkan semua perangkat</string>
<string name="settings_showall_description">Tampilkan perangkat orang lain yang ada di dekat anda.</string>
<string name="settings_autopplay_label">Putar otomatis</string>
<string name="settings_autoplay_description">Mulai pemutaran audio saat perangkat dipakai.</string>
<string name="settings_fake_data_label">Data palsu</string>
<string name="settings_fake_data_description">Tampilkan data palsu, yaitu, mensimulasikan perangkat yang tidak ada.</string>
<string name="settings_debug_label">Pengaturan debug</string>
<string name="settings_debug_description">Pengaturan tambahan untuk membantu memecahkan masalah dengan aplikasi.</string>
<string name="settings_signal_minimum_label">Kualitas sinyal minimum</string>
@@ -118,6 +122,7 @@
<string name="overview_bluetooth_disabled_label">Bluetooth dinonaktifkan</string>
<string name="overview_bluetooth_disabled_description">Bluetooth dinonaktifkan, aktifkan terlebih dahulu ;)</string>
<string name="help_translate_label">Terjemahan</string>
<string name="help_translate_description">Bantu terjemahkan applikasi ini ke bahasa favorit anda.</string>
<string name="settings_onepod_mode_label">Mode satu pod</string>
<string name="settings_onepod_mode_description">Menggunakan kedua pod tidak diperlukan, memakai satu pod sudah cukup untuk memicu reaksi.</string>
<string name="permission_system_alert_window_label">Jendela Peringatan Sistem</string>
@@ -127,4 +132,8 @@
<string name="settings_blescanner_unfiltered_label">Data BLE yang tidak difilter</string>
<string name="settings_blescanner_unfiltered_description">Hapus semua filter dari pemindai BLE untuk menampilkan semua data BLE yang disiarkan. Berguna untuk menambahkan dukungan pada jenis headphone baru.</string>
<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>
+10 -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>
@@ -81,6 +81,7 @@
<string name="settings_monitor_mode_label">Monitor modus</string>
<string name="settings_monitor_mode_description">Onder welke omstandigheden houdt deze app Bluetooth-gegevens bij.</string>
<string name="settings_scanner_mode_label">Scannermodus</string>
<string name="settings_scanner_mode_description">Moet de Bluetooth Low Energy-gegevensscanner prioriteit geven aan prestaties of energie besparen?</string>
<string name="settings_monitor_mode_manual_label">Wanneer app is geopend</string>
<string name="settings_monitor_mode_automatic_label">Wanneer het apparaat is aangesloten</string>
<string name="settings_monitor_mode_always_label">Altijd</string>
@@ -88,10 +89,13 @@
<string name="settings_scanner_mode_balanced_label">Gebalanceerd</string>
<string name="settings_scanner_mode_lowlatency_label">Lage latentie</string>
<string name="settings_autopause_label">Auto pauze</string>
<string name="settings_autopause_description">Pauzeer de muziek wanneer u het apparaat van uw oor haalt.</string>
<string name="settings_showall_label">Alle apparaten weergeven</string>
<string name="settings_showall_description">Toon apparaten van andere mensen die bij u in de buurt zijn.</string>
<string name="settings_autopplay_label">Automatisch afspelen</string>
<string name="settings_autoplay_description">Start audioweergave wanneer het apparaat wordt gedragen.</string>
<string name="settings_fake_data_label">Nep gegevens</string>
<string name="settings_fake_data_description">Toon nepgegevens, d.w.z. simuleer apparaten die niet bestaan.</string>
<string name="settings_debug_label">Foutopsporingsinstellingen</string>
<string name="settings_debug_description">Aanvullende instellingen voor het oplossen van problemen met de app.</string>
<string name="settings_signal_minimum_label">Minimale signaalkwaliteit</string>
@@ -118,6 +122,7 @@
<string name="overview_bluetooth_disabled_label">Bluetooth is uitgeschakeld</string>
<string name="overview_bluetooth_disabled_description">Bluetooth is uitgeschakeld, activeer het ;)</string>
<string name="help_translate_label">Vertaling</string>
<string name="help_translate_description">Help deze app te vertalen in uw favoriete taal.</string>
<string name="settings_onepod_mode_label">Eén pod-modus</string>
<string name="settings_onepod_mode_description">Het dragen van beide pods is niet vereist, het dragen van een enkele pod is voldoende om reacties uit te lokken.</string>
<string name="permission_system_alert_window_label">Systeemwaarschuwingsvenster</string>
@@ -127,4 +132,8 @@
<string name="settings_blescanner_unfiltered_label">Ongefilterde BLE-gegevens</string>
<string name="settings_blescanner_unfiltered_description">Verwijder eventuele filters van de BLE-scanner om alle uitgezonden BLE-gegevens weer te geven. Handig om ondersteuning toe te voegen voor nieuwe typen hoofdtelefoons.</string>
<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>
+6 -4
View File
@@ -26,7 +26,7 @@
<string name="permission_bluetooth_label">蓝牙</string>
<string name="permission_bluetooth_description">本应用需要“蓝牙”权限才能连接已配对的蓝牙设备</string>
<string name="permission_access_fine_location_label">访问精准位置</string>
<string name="permission_access_fine_location_description">CAPod 使用“精准定位”权限来接收低功耗蓝牙数据。您的耳机使用低功耗蓝牙技术来播其状态,本应用「不会」通过蓝牙数据来给您定位</string>
<string name="permission_access_fine_location_description">CAPod 使用“精准定位”权限来接收低功耗蓝牙数据。您的耳机使用低功耗蓝牙技术来广播其状态,本应用「不会」通过蓝牙数据测定您的位置</string>
<string name="permission_background_location_label">在后台访问位置</string>
<string name="permission_background_location_description">CAPod 使用“在后台访问位置”权限以在本应用被关闭时继续提供如“显示弹窗”、“自动连接”等功能。此权限允许本应用在后台运行时继续接收蓝牙低功耗数据。本应用并不使用蓝牙数据来窥探您的位置。</string>
<string name="permission_ignore_battery_optimizations_label">禁用电池优化</string>
@@ -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>
@@ -79,7 +79,7 @@
<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">此模式下本应用将监视蓝牙数据。</string>
<string name="settings_monitor_mode_description">决定本应用在何时收听蓝牙数据。</string>
<string name="settings_scanner_mode_label">扫描模式</string>
<string name="settings_scanner_mode_description">低功耗蓝牙数据扫描器应着重性能还是省电?</string>
<string name="settings_monitor_mode_manual_label">应用打开时</string>
@@ -120,7 +120,7 @@
<string name="settings_popup_caseopen_label">显示弹窗</string>
<string name="settings_popup_caseopen_description">设备充电仓打开时显示弹窗(实验性)</string>
<string name="overview_bluetooth_disabled_label">蓝牙已禁用</string>
<string name="overview_bluetooth_disabled_description">蓝牙已关闭,请启用之 ;)</string>
<string name="overview_bluetooth_disabled_description">蓝牙已关闭,请启 ;)</string>
<string name="help_translate_label">翻译</string>
<string name="help_translate_description">帮助翻译本应用</string>
<string name="settings_onepod_mode_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 -9
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,14 +61,14 @@
<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>
<string name="settings_support_description">如果你需要助。</string>
<string name="settings_support_description">如果你需要助。</string>
<string name="issue_tracker_label">問題追蹤器</string>
<string name="issue_tracker_description">一個用於錯誤回報和功能需求的公用問題追蹤器 (僅英文)。</string>
<string name="discord_label">Discord</string>
@@ -97,7 +97,7 @@
<string name="settings_fake_data_label">假資料</string>
<string name="settings_fake_data_description">顯示假資料,模擬不存在的裝置。</string>
<string name="settings_debug_label">偵錯設定</string>
<string name="settings_debug_description">一個能助這個應用程式故障檢修的附加設定。</string>
<string name="settings_debug_description">一個能助這個應用程式故障檢修的附加設定。</string>
<string name="settings_signal_minimum_label">最低訊號質量</string>
<string name="settings_signal_minimum_description">可以被認為是你的裝置的最低訊號質量。</string>
<string name="settings_autoconnect_label">自動連線</string>
@@ -111,7 +111,7 @@
<string name="settings_maindevice_address_description">你的已配對裝置的位址。這個應用程式用該位址來確定何時連線到你的手機。</string>
<string name="settings_maindevice_address_none"></string>
<string name="settings_maindevice_model_label">你的裝置型號</string>
<string name="settings_maindevice_model_description">你的主要裝置型號。這能助這個應用程式在未連線到你的手機時辨識你的裝置。</string>
<string name="settings_maindevice_model_description">你的主要裝置型號。這能助這個應用程式在未連線到你的手機時辨識你的裝置。</string>
<string name="settings_reaction_autoconnect_whenseen_label">看到時</string>
<string name="settings_reaction_autoconnect_caseopen_label">充電盒開啟</string>
<string name="settings_reaction_autoconnect_inear_label">在耳中</string>
@@ -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>
+2
View File
@@ -144,4 +144,6 @@
<string name="permission_required_title">The following permission is required:</string>
<string name="settings_compatibility_mode_label">Compatibility mode</string>
<string name="settings_compatibility_mode_description">Disable optimizations to improve compatibility. Try this if you are not seeing any data.</string>
<string name="translators_thanks_title">Translators</string>
<string name="translators_thanks_description">darken</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>
@@ -4,6 +4,15 @@
<PreferenceCategory
android:title="@string/general_thank_you_label"
app:iconSpaceReserved="false">
<Preference
android:key="thanks.translators"
android:summary="@string/translators_thanks_description"
android:title="@string/translators_thanks_title"
app:iconSpaceReserved="false">
<intent
android:action="android.intent.action.VIEW"
android:data="https://crowdin.com/project/capod/activity-stream" />
</Preference>
<Preference
android:key="thanks.maxpatchs"
android:summary="Thanks for the lovely icons."
@@ -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>
@@ -0,0 +1,31 @@
package eu.darken.capod.pods.core.apple.misc
import eu.darken.capod.pods.core.apple.BaseAirPodsTest
import io.kotest.matchers.shouldBe
import kotlinx.coroutines.test.runBlockingTest
import org.junit.jupiter.api.Test
class VarunrAirPodsProTest : BaseAirPodsTest() {
@Test
fun `guessed data`() = runBlockingTest {
create<VarunrAirPodsPro>("07 13 01 0E 20 71 AA 37 36 00 10 00 FF 64 FF 00 00 00 00 00 00") {
rawPrefix shouldBe 0x01.toUByte()
rawDeviceModel shouldBe 0x0E20.toUShort()
rawStatus shouldBe 0x71.toUByte()
rawPodsBattery shouldBe 0xAA.toUByte()
rawFlags shouldBe 0x3.toUShort()
rawCaseBattery shouldBe 0x7.toUShort()
rawCaseLidState shouldBe 0x36.toUByte()
rawDeviceColor shouldBe 0x00.toUByte()
rawSuffix shouldBe 0x10.toUByte()
batteryLeftPodPercent shouldBe 1.0f
batteryRightPodPercent shouldBe 1.0f
isCaseCharging shouldBe false
batteryCasePercent shouldBe 0.7f
}
}
}
+2 -2
View File
@@ -8,8 +8,8 @@ buildscript {
'version' : [
'major': 1,
'minor': 3,
'patch': 7,
'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
+1 -1
View File
@@ -1 +1 @@
CAPod - Companion for AirPods
CAPod - Assistent pels AirPods
@@ -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 -1
View File
@@ -1 +1 @@
CAPod - Companion for AirPods
CAPod - Asistente 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 - Pendamping AirPods
+1 -1
View File
@@ -1 +1 @@
CAPod - Companion for AirPods
CAPod - Companion app per le Airpods
@@ -6,7 +6,7 @@ CAPod 是为 AirPods 提供配套功能的一个应用。
* 有关连接、麦克风和充电仓的附加信息。
* 能够接收和显示位于附近的全部设备。
* 佩戴/取下时自动开始/暂停音乐播放。
* Automatically connect phone and AirPods.
* 自动连接手机与 AirPods
* 充电仓打开时显示弹窗。
CAPod 是一款免费共享软件。 某些功能需在应用内购买。
+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