mirror of
https://github.com/d4rken-org/capod.git
synced 2026-09-14 18:26:11 -04:00
Compare commits
38
Commits
v1.3.7
...
v1.3.13-rc2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3784084abc | ||
|
|
2f463b7735 | ||
|
|
7be5625d66 | ||
|
|
aef14a9cd2 | ||
|
|
67648a04d3 | ||
|
|
58345e3194 | ||
|
|
4cb2ad9a5a | ||
|
|
27395d8e22 | ||
|
|
230c5ea180 | ||
|
|
4d4370ddce | ||
|
|
7e913e7847 | ||
|
|
ec7871e4e9 | ||
|
|
cc5a45a14f | ||
|
|
5fff3457ba | ||
|
|
6f5d66c1d9 | ||
|
|
d94795bf4f | ||
|
|
009b71c42a | ||
|
|
a10716d74e | ||
|
|
b44bf5f401 | ||
|
|
e0af1838e2 | ||
|
|
7d5502a34f | ||
|
|
78ccddf87c | ||
|
|
df1bc48e84 | ||
|
|
3b48d61571 | ||
|
|
92d5e2a40d | ||
|
|
234857c414 | ||
|
|
b1bbe785ea | ||
|
|
487fb49bff | ||
|
|
b14b7fa926 | ||
|
|
4cc1ab143d | ||
|
|
c23de67cd2 | ||
|
|
e9bb4868c8 | ||
|
|
ae6fd0eabd | ||
|
|
f4f73906bc | ||
|
|
c437decbbf | ||
|
|
1d36677ead | ||
|
|
542b69ca92 | ||
|
|
8547c9c396 |
+2
-1
@@ -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
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||

|
||||
[](https://github.com/d4rken/capod/releases/latest)
|
||||
[](https://github.com/d4rken-org/capod/releases/latest)
|
||||
[](https://github.com/d4rken/capod/actions/workflows/code-checks.yml)
|
||||
[](https://crowdin.com/project/capod)
|
||||
[](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
@@ -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) { _, _ ->
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
+1
-1
@@ -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,
|
||||
)
|
||||
}
|
||||
+1
@@ -34,6 +34,7 @@ class DebugSettingsFragment : PreferenceFragment2() {
|
||||
vm.toggleRecorder()
|
||||
true
|
||||
}
|
||||
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
}
|
||||
|
||||
|
||||
+19
@@ -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"
|
||||
|
||||
@@ -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 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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">Jaime Muñoz(jmmartin_5@outlook.com)</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">novas78@xda; woytazzer</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">Gamechanger181</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. 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>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">Jaime Muñoz(jmmartin_5@outlook.com)</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 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 d’installation</string>
|
||||
<string name="settings_support_installid_desc">Les relevés automatiques d’erreur sont anonymes. Partagez votre ID d’installation au cas où le développeur aurait besoin de trouver votre relevé d’erreur.</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 l’appli.</string>
|
||||
<string name="settings_scanner_mode_label">Mode analyse</string>
|
||||
<string name="settings_scanner_mode_description">L’analyseur 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 l’appli est en fonction</string>
|
||||
<string name="settings_monitor_mode_automatic_label">Si l’appareil 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 l’appareil de votre oreille.</string>
|
||||
<string name="settings_showall_label">Afficher tous les appareils</string>
|
||||
<string name="settings_showall_description">Afficher les appareils d’autres personnes à proximité.</string>
|
||||
<string name="settings_autopplay_label">Lecture automatique</string>
|
||||
<string name="settings_autoplay_description">Démarrer la lecture du son quand l’appareil 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 n’existent 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 l’appli.</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 n’est 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 d’alerte 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 l’analyseur 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">L’autorisation 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">AO</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 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>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">darken</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">AL_Cool_T</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">윤지호(annyeong1alt@gmail.com)</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">bob hasnul(bobhasnul@gmail. com)</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">darken</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">Kristoffer Vassbø(kristoffervassbo@gmail.com)</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">darken; K4r0lSz;</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">Igor Silva (ferrare42@gmail.com)</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">AL_Cool_T</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">dukelc</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">Ievgen Gil</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">dovanchuc7521</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">木仔</string>
|
||||
</resources>
|
||||
|
||||
@@ -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 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 You can voluntarily add your name here to have it displayed in the app. It will be shown in the Settings>Acknowledgements>Thank you section. Separate names by semicolons and an optional email may be included in brackets, example: darken(darken@darken.eu);John Doe(john@example.com) "darken" is just a placeholder and does not have to be kept if/when you add yours. Be nice to each other!">人工知能</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -8,8 +8,8 @@ buildscript {
|
||||
'version' : [
|
||||
'major': 1,
|
||||
'minor': 3,
|
||||
'patch': 7,
|
||||
'build': 0,
|
||||
'patch': 13,
|
||||
'build': 2,
|
||||
],
|
||||
]
|
||||
|
||||
|
||||
+2
-2
@@ -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
@@ -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 @@
|
||||
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 @@
|
||||
CAPod - Companion for AirPods
|
||||
CAPod - Ayudante para AirPods
|
||||
@@ -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 @@
|
||||
CAPod - Companion for AirPods
|
||||
CAPod - AirPods के लिए साथी
|
||||
@@ -1 +1 @@
|
||||
CAPod - Companion for AirPods
|
||||
CAPod - Pendamping AirPods
|
||||
@@ -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 是一款免费共享软件。 某些功能需在应用内购买。
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user