mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-04 01:09:47 +01:00
Merge branch 'master' into bip-wip
This commit is contained in:
commit
66bb0bd81b
@ -1,5 +1,11 @@
|
||||
### Changelog
|
||||
|
||||
#### Version 0.25.1
|
||||
* Amazfit Cor: Try to send weather location instead of AQI
|
||||
* Amazfit Bip: Support setting start end end time for background light when lifting the arm
|
||||
* Pebble: various fixes and improvemnets for background javascript
|
||||
* Explicity ask for RECEIVE_SMS permission to fix problems with Android 8
|
||||
|
||||
#### Version 0.25.0
|
||||
* Inital suport for Xwatch
|
||||
* Move the connected device to top in control center
|
||||
|
134
app/build.gradle
134
app/build.gradle
@ -1,14 +1,13 @@
|
||||
apply plugin: "com.android.application"
|
||||
apply plugin: "findbugs"
|
||||
apply plugin: "pmd"
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'findbugs'
|
||||
apply plugin: 'pmd'
|
||||
|
||||
def ABORT_ON_CHECK_FAILURE=false
|
||||
def ABORT_ON_CHECK_FAILURE = false
|
||||
|
||||
tasks.withType(Test) {
|
||||
systemProperty 'MiFirmwareDir', System.getProperty('MiFirmwareDir', null)
|
||||
systemProperty 'logback.configurationFile', System.getProperty('user.dir', null) + '/app/src/main/assets/logback.xml'
|
||||
systemProperty 'GB_LOGFILES_DIR', java.nio.file.Files.createTempDirectory('gblog').toString();
|
||||
systemProperty "MiFirmwareDir", System.getProperty("MiFirmwareDir", null)
|
||||
systemProperty "logback.configurationFile", System.getProperty("user.dir", null) + "/app/src/main/assets/logback.xml"
|
||||
systemProperty "GB_LOGFILES_DIR", java.nio.file.Files.createTempDirectory("gblog").toString()
|
||||
}
|
||||
|
||||
android {
|
||||
@ -18,111 +17,114 @@ android {
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
}
|
||||
compileSdkVersion 27
|
||||
buildToolsVersion '27.0.3'
|
||||
buildToolsVersion "27.0.3"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "nodomain.freeyourgadget.gadgetbridge"
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 27
|
||||
|
||||
// note: always bump BOTH versionCode and versionName!
|
||||
versionName "0.25.0"
|
||||
versionCode 124
|
||||
// Note: always bump BOTH versionCode and versionName!
|
||||
versionName "0.25.1"
|
||||
versionCode 125
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
}
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
abortOnError ABORT_ON_CHECK_FAILURE
|
||||
lintConfig file("${project.rootDir}/config/lint/lint.xml")
|
||||
|
||||
// if true, generate an HTML report (with issue explanations, sourcecode, etc)
|
||||
// If true, generate an HTML report (with issue explanations, sourcecode, etc)
|
||||
htmlReport true
|
||||
// optional path to report (default will be lint-results.html in the builddir)
|
||||
// Optional path to report (default will be lint-results.html in the builddir)
|
||||
htmlOutput file("$project.buildDir/reports/lint/lint.html")
|
||||
}
|
||||
|
||||
testOptions {
|
||||
unitTests.returnDefaultValues = true
|
||||
unitTests {
|
||||
returnDefaultValues = true
|
||||
includeAndroidResources = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pmd {
|
||||
toolVersion = '5.5.5'
|
||||
toolVersion = "5.5.5"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// testCompile 'ch.qos.logback:logback-classic:1.1.3'
|
||||
// testCompile 'ch.qos.logback:logback-core:1.1.3'
|
||||
testCompile 'junit:junit:4.12'
|
||||
testCompile "org.mockito:mockito-core:1.10.19"
|
||||
testCompile "org.robolectric:robolectric:3.5.1"
|
||||
// testImplementation "ch.qos.logback:logback-classic:1.1.3"
|
||||
// testImplementation "ch.qos.logback:logback-core:1.1.3"
|
||||
testImplementation "junit:junit:4.12"
|
||||
testImplementation "org.mockito:mockito-core:1.10.19"
|
||||
testImplementation "org.robolectric:robolectric:3.6.1"
|
||||
|
||||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
||||
compile 'com.android.support:appcompat-v7:27.0.2'
|
||||
compile 'com.android.support:cardview-v7:27.0.2'
|
||||
compile 'com.android.support:recyclerview-v7:27.0.2'
|
||||
compile 'com.android.support:support-v4:27.0.2'
|
||||
compile 'com.android.support:gridlayout-v7:27.0.2'
|
||||
compile 'com.android.support:design:27.0.2'
|
||||
compile 'com.android.support:palette-v7:27.0.2'
|
||||
compile('com.github.tony19:logback-android-classic:1.1.1-6') {
|
||||
exclude group: 'com.google.android', module: 'android'
|
||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
implementation "com.android.support:appcompat-v7:27.0.2"
|
||||
implementation "com.android.support:cardview-v7:27.0.2"
|
||||
implementation "com.android.support:recyclerview-v7:27.0.2"
|
||||
implementation "com.android.support:support-v4:27.0.2"
|
||||
implementation "com.android.support:gridlayout-v7:27.0.2"
|
||||
implementation "com.android.support:design:27.0.2"
|
||||
implementation "com.android.support:palette-v7:27.0.2"
|
||||
implementation("com.github.tony19:logback-android-classic:1.1.1-6") {
|
||||
exclude group: "com.google.android", module: "android"
|
||||
}
|
||||
compile 'org.slf4j:slf4j-api:1.7.12'
|
||||
compile 'com.github.Freeyourgadget:MPAndroidChart:5e5bd6c1d3e95c515d4853647ae554e48ee1d593'
|
||||
compile 'com.github.pfichtner:durationformatter:0.1.1'
|
||||
compile 'de.cketti.library.changelog:ckchangelog:1.2.2'
|
||||
compile 'net.e175.klaus:solarpositioning:0.0.9'
|
||||
implementation "org.slf4j:slf4j-api:1.7.12"
|
||||
implementation "com.github.Freeyourgadget:MPAndroidChart:5e5bd6c1d3e95c515d4853647ae554e48ee1d593"
|
||||
implementation "com.github.pfichtner:durationformatter:0.1.1"
|
||||
implementation "de.cketti.library.changelog:ckchangelog:1.2.2"
|
||||
implementation "net.e175.klaus:solarpositioning:0.0.9"
|
||||
// use pristine greendao instead of our custom version, since our custom jitpack-packaged
|
||||
// version contains way too much and our custom patches are in the generator only.
|
||||
compile 'org.greenrobot:greendao:2.2.1'
|
||||
compile 'org.apache.commons:commons-lang3:3.5'
|
||||
compile 'org.cyanogenmod:platform.sdk:6.0'
|
||||
implementation "org.greenrobot:greendao:2.2.1"
|
||||
implementation "org.apache.commons:commons-lang3:3.5"
|
||||
implementation "org.cyanogenmod:platform.sdk:6.0"
|
||||
|
||||
// compile project(":DaoCore")
|
||||
// implementation project(":DaoCore")
|
||||
}
|
||||
|
||||
preBuild.dependsOn(":GBDaoGenerator:genSources")
|
||||
|
||||
gradle.beforeProject {
|
||||
preBuild.dependsOn(":GBDaoGenerator:genSources")
|
||||
}
|
||||
|
||||
check.dependsOn 'findbugs', 'pmd', 'lint'
|
||||
check.dependsOn "findbugs", "pmd", "lint"
|
||||
|
||||
task pmd(type: Pmd) {
|
||||
ruleSetFiles = files("${project.rootDir}/config/pmd/pmd-ruleset.xml")
|
||||
ignoreFailures = !ABORT_ON_CHECK_FAILURE
|
||||
ruleSets = [
|
||||
'java-android',
|
||||
'java-basic',
|
||||
'java-braces',
|
||||
'java-clone',
|
||||
'java-codesize',
|
||||
'java-controversial',
|
||||
'java-coupling',
|
||||
'java-design',
|
||||
'java-empty',
|
||||
'java-finalizers',
|
||||
'java-imports',
|
||||
'java-junit',
|
||||
'java-optimizations',
|
||||
'java-strictexception',
|
||||
'java-strings',
|
||||
'java-sunsecure',
|
||||
'java-typeresolution',
|
||||
'java-unnecessary',
|
||||
'java-unusedcode'
|
||||
"java-android",
|
||||
"java-basic",
|
||||
"java-braces",
|
||||
"java-clone",
|
||||
"java-codesize",
|
||||
"java-controversial",
|
||||
"java-coupling",
|
||||
"java-design",
|
||||
"java-empty",
|
||||
"java-finalizers",
|
||||
"java-imports",
|
||||
"java-junit",
|
||||
"java-optimizations",
|
||||
"java-strictexception",
|
||||
"java-strings",
|
||||
"java-sunsecure",
|
||||
"java-typeresolution",
|
||||
"java-unnecessary",
|
||||
"java-unusedcode"
|
||||
]
|
||||
|
||||
source 'src'
|
||||
include '**/*.java'
|
||||
exclude '**/gen/**'
|
||||
source "src"
|
||||
include "**/*.java"
|
||||
exclude "**/gen/**"
|
||||
|
||||
reports {
|
||||
xml.enabled = false
|
||||
@ -142,7 +144,7 @@ task findbugs(type: FindBugs) {
|
||||
reportLevel = "medium"
|
||||
excludeFilter = new File("${project.rootDir}/config/findbugs/findbugs-filter.xml")
|
||||
classes = files("${project.rootDir}/app/build/intermediates/classes")
|
||||
source = fileTree('src/main/java/')
|
||||
source = fileTree("src/main/java/")
|
||||
classpath = files()
|
||||
reports {
|
||||
xml.enabled = false
|
||||
|
@ -24,7 +24,7 @@ import nodomain.freeyourgadget.gadgetbridge.entities.DaoMaster;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||
|
||||
/**
|
||||
* Provides lowlevel access to the database.
|
||||
* Provides low-level access to the database.
|
||||
*/
|
||||
public class LockHandler implements DBHandler {
|
||||
|
||||
|
@ -309,6 +309,8 @@ public class ControlCenterv2 extends AppCompatActivity
|
||||
wantedPermissions.add(Manifest.permission.READ_PHONE_STATE);
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.PROCESS_OUTGOING_CALLS) == PackageManager.PERMISSION_DENIED)
|
||||
wantedPermissions.add(Manifest.permission.PROCESS_OUTGOING_CALLS);
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS) == PackageManager.PERMISSION_DENIED)
|
||||
wantedPermissions.add(Manifest.permission.RECEIVE_SMS);
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) == PackageManager.PERMISSION_DENIED)
|
||||
wantedPermissions.add(Manifest.permission.READ_SMS);
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_DENIED)
|
||||
|
@ -34,19 +34,26 @@ import android.widget.Toast;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.DeviceCommunicationService;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.webview.GBChromeClient;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.webview.GBWebClient;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.webview.JSInterface;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_CONNECT;
|
||||
|
||||
public class ExternalPebbleJSActivity extends AbstractGBActivity {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ExternalPebbleJSActivity.class);
|
||||
@ -64,24 +71,69 @@ public class ExternalPebbleJSActivity extends AbstractGBActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Bundle extras = getIntent().getExtras();
|
||||
|
||||
boolean showConfig = false;
|
||||
|
||||
UUID currentUUID = null;
|
||||
GBDevice currentDevice = null;
|
||||
|
||||
if (extras == null) {
|
||||
throw new IllegalArgumentException("Must provide device and uuid in extras when invoking this activity");
|
||||
}
|
||||
confUri = getIntent().getData();
|
||||
if(confUri.getScheme().equals("gadgetbridge")) {
|
||||
try {
|
||||
currentUUID = UUID.fromString(confUri.getHost());
|
||||
} catch (IllegalArgumentException e) {
|
||||
LOG.error("UUID in incoming configuration is not a valid UUID: " +confUri.toString());
|
||||
}
|
||||
|
||||
if (extras.getBoolean(START_BG_WEBVIEW, false)) {
|
||||
startBackgroundWebViewAndFinish();
|
||||
return;
|
||||
}
|
||||
//first check if we are still connected to a pebble
|
||||
DeviceManager deviceManager = ((GBApplication) getApplication()).getDeviceManager();
|
||||
List<GBDevice> deviceList = deviceManager.getDevices();
|
||||
for (GBDevice device : deviceList) {
|
||||
if (device.getState() == GBDevice.State.INITIALIZED) {
|
||||
if (device.getType().equals(DeviceType.PEBBLE)) {
|
||||
currentDevice = device;
|
||||
break;
|
||||
} else {
|
||||
LOG.error("attempting to load pebble configuration but a different device type is connected!!!");
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (currentDevice == null) {
|
||||
//then try to reconnect to last connected device
|
||||
String btDeviceAddress = GBApplication.getPrefs().getPreferences().getString("last_device_address", null);
|
||||
if (btDeviceAddress != null) {
|
||||
GBDevice candidate = DeviceHelper.getInstance().findAvailableDevice(btDeviceAddress, this);
|
||||
if(!candidate.isConnected() && candidate.getType() == DeviceType.PEBBLE){
|
||||
Intent intent = new Intent(this, DeviceCommunicationService.class)
|
||||
.setAction(ACTION_CONNECT)
|
||||
.putExtra(GBDevice.EXTRA_DEVICE, currentDevice);
|
||||
this.startService(intent);
|
||||
currentDevice = candidate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GBDevice currentDevice = extras.getParcelable(GBDevice.EXTRA_DEVICE);
|
||||
UUID currentUUID = (UUID) extras.getSerializable(DeviceService.EXTRA_APP_UUID);
|
||||
showConfig = true; //we are getting incoming configuration data
|
||||
}
|
||||
} else {
|
||||
currentDevice = extras.getParcelable(GBDevice.EXTRA_DEVICE);
|
||||
currentUUID = (UUID) extras.getSerializable(DeviceService.EXTRA_APP_UUID);
|
||||
|
||||
if (extras.getBoolean(START_BG_WEBVIEW, false)) {
|
||||
startBackgroundWebViewAndFinish();
|
||||
return;
|
||||
}
|
||||
showConfig = extras.getBoolean(SHOW_CONFIG, false);
|
||||
}
|
||||
|
||||
if (GBApplication.getGBPrefs().isBackgroundJsEnabled()) {
|
||||
if (extras.getBoolean(SHOW_CONFIG, false)) {
|
||||
if (showConfig) {
|
||||
Objects.requireNonNull(currentDevice, "Must provide a device when invoking this activity");
|
||||
Objects.requireNonNull(currentUUID, "Must provide a uuid when invoking this activity");
|
||||
|
||||
WebViewSingleton.runJavascriptInterface(currentDevice, currentUUID);
|
||||
WebViewSingleton.getInstance().runJavascriptInterface(this, currentDevice, currentUUID);
|
||||
}
|
||||
|
||||
// FIXME: is this really supposed to be outside the check for SHOW_CONFIG?
|
||||
@ -104,7 +156,7 @@ public class ExternalPebbleJSActivity extends AbstractGBActivity {
|
||||
|
||||
private void setupBGWebView() {
|
||||
setContentView(R.layout.activity_external_pebble_js);
|
||||
myWebView = WebViewSingleton.getWebView(this);
|
||||
myWebView = WebViewSingleton.getInstance().getWebView(this);
|
||||
if (myWebView.getParent() != null) {
|
||||
((ViewGroup) myWebView.getParent()).removeView(myWebView);
|
||||
}
|
||||
@ -161,6 +213,7 @@ public class ExternalPebbleJSActivity extends AbstractGBActivity {
|
||||
} catch (IllegalArgumentException e) {
|
||||
GB.toast("returned uri: " + confUri.toString(), Toast.LENGTH_LONG, GB.ERROR);
|
||||
}
|
||||
myWebView.stopLoading();
|
||||
myWebView.loadUrl("file:///android_asset/app_config/configure.html?" + queryString);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,23 @@
|
||||
/* Copyright (C) 2017-2018 José Rebelo
|
||||
|
||||
This file is part of Gadgetbridge.
|
||||
|
||||
Gadgetbridge is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Gadgetbridge is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices.huami;
|
||||
|
||||
public enum ActivateDisplayOnLift {
|
||||
ON,
|
||||
OFF,
|
||||
SCHEDULED
|
||||
}
|
@ -52,7 +52,6 @@ import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.MiBandActivitySampleDao;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
|
||||
public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
|
||||
@ -133,9 +132,30 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
|
||||
return DateTimeDisplay.DATE_TIME;
|
||||
}
|
||||
|
||||
public static boolean getActivateDisplayOnLiftWrist() {
|
||||
public static ActivateDisplayOnLift getActivateDisplayOnLiftWrist(Context context) {
|
||||
Prefs prefs = GBApplication.getPrefs();
|
||||
return prefs.getBoolean(MiBandConst.PREF_MI2_ACTIVATE_DISPLAY_ON_LIFT, true);
|
||||
|
||||
String liftOff = context.getString(R.string.p_off);
|
||||
String liftOn = context.getString(R.string.p_on);
|
||||
String liftScheduled = context.getString(R.string.p_scheduled);
|
||||
|
||||
String pref = prefs.getString(MiBandConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, liftOff);
|
||||
|
||||
if (liftOn.equals(pref)) {
|
||||
return ActivateDisplayOnLift.ON;
|
||||
} else if (liftScheduled.equals(pref)) {
|
||||
return ActivateDisplayOnLift.SCHEDULED;
|
||||
}
|
||||
|
||||
return ActivateDisplayOnLift.OFF;
|
||||
}
|
||||
|
||||
public static Date getDisplayOnLiftStart() {
|
||||
return getTimePreference( MiBandConst.PREF_DISPLAY_ON_LIFT_START, "00:00");
|
||||
}
|
||||
|
||||
public static Date getDisplayOnLiftEnd() {
|
||||
return getTimePreference( MiBandConst.PREF_DISPLAY_ON_LIFT_END, "00:00");
|
||||
}
|
||||
|
||||
public static Set<String> getDisplayItems() {
|
||||
|
@ -136,6 +136,7 @@ public class MiBand2Service {
|
||||
public static final byte[] DATEFORMAT_TIME_24_HOURS = new byte[] {ENDPOINT_DISPLAY, 0x02, 0x0, 0x1 };
|
||||
public static final byte[] COMMAND_ENABLE_DISPLAY_ON_LIFT_WRIST = new byte[]{ENDPOINT_DISPLAY, 0x05, 0x00, 0x01};
|
||||
public static final byte[] COMMAND_DISABLE_DISPLAY_ON_LIFT_WRIST = new byte[]{ENDPOINT_DISPLAY, 0x05, 0x00, 0x00};
|
||||
public static final byte[] COMMAND_SCHEDULE_DISPLAY_ON_LIFT_WRIST = new byte[]{ENDPOINT_DISPLAY, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
public static final byte[] COMMAND_ENABLE_GOAL_NOTIFICATION = new byte[]{ENDPOINT_DISPLAY, 0x06, 0x00, 0x01};
|
||||
public static final byte[] COMMAND_DISABLE_GOAL_NOTIFICATION = new byte[]{ENDPOINT_DISPLAY, 0x06, 0x00, 0x00};
|
||||
public static final byte[] COMMAND_ENABLE_ROTATE_WRIST_TO_SWITCH_INFO = new byte[]{ENDPOINT_DISPLAY, 0x0d, 0x00, 0x01};
|
||||
|
@ -49,7 +49,9 @@ public final class MiBandConst {
|
||||
public static final String PREF_MI2_DISPLAY_ITEM_CALORIES = "calories";
|
||||
public static final String PREF_MI2_DISPLAY_ITEM_HEART_RATE = "heart_rate";
|
||||
public static final String PREF_MI2_DISPLAY_ITEM_BATTERY = "battery";
|
||||
public static final String PREF_MI2_ACTIVATE_DISPLAY_ON_LIFT = "mi2_activate_display_on_lift_wrist";
|
||||
public static final String PREF_ACTIVATE_DISPLAY_ON_LIFT = "activate_display_on_lift_wrist";
|
||||
public static final String PREF_DISPLAY_ON_LIFT_START = "display_on_lift_start";
|
||||
public static final String PREF_DISPLAY_ON_LIFT_END = "display_on_lift_end";
|
||||
public static final String PREF_MI2_ROTATE_WRIST_TO_SWITCH_INFO = "mi2_rotate_wrist_to_switch_info";
|
||||
public static final String PREF_MI2_ENABLE_TEXT_NOTIFICATIONS = "mi2_enable_text_notifications";
|
||||
public static final String PREF_MI2_DO_NOT_DISTURB = "mi2_do_not_disturb";
|
||||
|
@ -38,7 +38,9 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_ALARM_CLOCK;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_INCOMING_CALL;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_ACTIVATE_DISPLAY_ON_LIFT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_ACTIVATE_DISPLAY_ON_LIFT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DISPLAY_ON_LIFT_END;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_DISPLAY_ON_LIFT_START;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DATEFORMAT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DISPLAY_ITEMS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DO_NOT_DISTURB;
|
||||
@ -135,14 +137,14 @@ public class MiBandPreferencesActivity extends AbstractSettingsActivity {
|
||||
}
|
||||
});
|
||||
|
||||
final Preference activateDisplayOnLift = findPreference(PREF_MI2_ACTIVATE_DISPLAY_ON_LIFT);
|
||||
final Preference activateDisplayOnLift = findPreference(PREF_ACTIVATE_DISPLAY_ON_LIFT);
|
||||
activateDisplayOnLift.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
||||
invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
GBApplication.deviceService().onSendConfiguration(PREF_MI2_ACTIVATE_DISPLAY_ON_LIFT);
|
||||
GBApplication.deviceService().onSendConfiguration(PREF_ACTIVATE_DISPLAY_ON_LIFT);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
@ -313,6 +315,60 @@ public class MiBandPreferencesActivity extends AbstractSettingsActivity {
|
||||
}
|
||||
});
|
||||
|
||||
String displayOnLiftState = prefs.getString(MiBandConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, PREF_MI2_DO_NOT_DISTURB_OFF);
|
||||
boolean displayOnLiftScheduled = displayOnLiftState.equals(PREF_MI2_DO_NOT_DISTURB_SCHEDULED);
|
||||
|
||||
final Preference displayOnLiftStart = findPreference(PREF_DISPLAY_ON_LIFT_START);
|
||||
displayOnLiftStart.setEnabled(displayOnLiftScheduled);
|
||||
displayOnLiftStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
||||
invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
GBApplication.deviceService().onSendConfiguration(PREF_DISPLAY_ON_LIFT_START);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
final Preference displayOnLiftEnd = findPreference(PREF_DISPLAY_ON_LIFT_END);
|
||||
displayOnLiftEnd.setEnabled(displayOnLiftScheduled);
|
||||
displayOnLiftEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
||||
invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
GBApplication.deviceService().onSendConfiguration(PREF_DISPLAY_ON_LIFT_END);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
final Preference displayOnLift = findPreference(PREF_ACTIVATE_DISPLAY_ON_LIFT);
|
||||
displayOnLift.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
||||
final boolean scheduled = PREF_MI2_DO_NOT_DISTURB_SCHEDULED.equals(newVal.toString());
|
||||
|
||||
displayOnLiftStart.setEnabled(scheduled);
|
||||
displayOnLiftEnd.setEnabled(scheduled);
|
||||
|
||||
invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
GBApplication.deviceService().onSendConfiguration(PREF_ACTIVATE_DISPLAY_ON_LIFT);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
final Preference fitnessGoal = findPreference(ActivityUser.PREF_USER_STEPS_GOAL);
|
||||
fitnessGoal.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Copyright (C) 2015-2018 Andreas Shimokawa, Carsten Pfeiffer, Daniele
|
||||
Gobbetti, Frank Slezak, Hasan Ammar, Julien Pivotto, Kevin Richter, Normano64,
|
||||
Steffen Liebergeld, TaaviE, Zhong Jianxin
|
||||
Steffen Liebergeld, Taavi Eomäe, Zhong Jianxin
|
||||
|
||||
This file is part of Gadgetbridge.
|
||||
|
||||
|
@ -326,7 +326,7 @@ public class GBDevice implements Parcelable {
|
||||
|
||||
public void setRssi(short rssi) {
|
||||
if (rssi < 0) {
|
||||
LOG.warn("illegal rssi value " + rssi + ", setting to RSSI_UNKNOWN");
|
||||
LOG.warn("Illegal RSSI value " + rssi + ", setting to RSSI_UNKNOWN");
|
||||
mRssi = RSSI_UNKNOWN;
|
||||
} else {
|
||||
mRssi = rssi;
|
||||
@ -450,7 +450,7 @@ public class GBDevice implements Parcelable {
|
||||
result.add(new GenericItem(DEVINFO_FW_VER, mFirmwareVersion));
|
||||
}
|
||||
if (mFirmwareVersion2 != null) {
|
||||
// FIXME: thats ugly
|
||||
// FIXME: This is ugly
|
||||
if (mDeviceType == DeviceType.AMAZFITBIP) {
|
||||
result.add(new GenericItem(DEVINFO_GPS_VER, mFirmwareVersion2));
|
||||
} else {
|
||||
|
@ -227,13 +227,13 @@ public abstract class AbstractDeviceSupport implements DeviceSupport {
|
||||
private void handleGBDeviceEvent(GBDeviceEventSleepMonitorResult sleepMonitorResult) {
|
||||
Context context = getContext();
|
||||
LOG.info("Got event for SLEEP_MONIOR_RES");
|
||||
Intent sleepMontiorIntent = new Intent(ChartsHost.REFRESH);
|
||||
sleepMontiorIntent.putExtra("smartalarm_from", sleepMonitorResult.smartalarm_from);
|
||||
sleepMontiorIntent.putExtra("smartalarm_to", sleepMonitorResult.smartalarm_to);
|
||||
sleepMontiorIntent.putExtra("recording_base_timestamp", sleepMonitorResult.recording_base_timestamp);
|
||||
sleepMontiorIntent.putExtra("alarm_gone_off", sleepMonitorResult.alarm_gone_off);
|
||||
Intent sleepMonitorIntent = new Intent(ChartsHost.REFRESH);
|
||||
sleepMonitorIntent.putExtra("smartalarm_from", sleepMonitorResult.smartalarm_from);
|
||||
sleepMonitorIntent.putExtra("smartalarm_to", sleepMonitorResult.smartalarm_to);
|
||||
sleepMonitorIntent.putExtra("recording_base_timestamp", sleepMonitorResult.recording_base_timestamp);
|
||||
sleepMonitorIntent.putExtra("alarm_gone_off", sleepMonitorResult.alarm_gone_off);
|
||||
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(sleepMontiorIntent);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(sleepMonitorIntent);
|
||||
}
|
||||
|
||||
private void handleGBDeviceEvent(GBDeviceEventScreenshot screenshot) {
|
||||
@ -300,10 +300,10 @@ public abstract class AbstractDeviceSupport implements DeviceSupport {
|
||||
deviceEvent.phoneNumber = (String) GBApplication.getIDSenderLookup().lookup(deviceEvent.handle);
|
||||
}
|
||||
if (deviceEvent.phoneNumber != null) {
|
||||
LOG.info("got notfication reply for SMS from " + deviceEvent.phoneNumber + " : " + deviceEvent.reply);
|
||||
LOG.info("Got notification reply for SMS from " + deviceEvent.phoneNumber + " : " + deviceEvent.reply);
|
||||
SmsManager.getDefault().sendTextMessage(deviceEvent.phoneNumber, null, deviceEvent.reply, null, null);
|
||||
} else {
|
||||
LOG.info("got notfication reply for notification id " + deviceEvent.handle + " : " + deviceEvent.reply);
|
||||
LOG.info("Got notification reply for notification id " + deviceEvent.handle + " : " + deviceEvent.reply);
|
||||
action = NotificationListener.ACTION_REPLY;
|
||||
}
|
||||
break;
|
||||
|
@ -37,6 +37,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiWeatherConditions
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipFWHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipService;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBand2Service;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
|
||||
@ -181,28 +182,30 @@ public class AmazfitBipSupport extends MiBand2Support {
|
||||
LOG.error("Error sending current weather", ex);
|
||||
}
|
||||
|
||||
try {
|
||||
TransactionBuilder builder;
|
||||
builder = performInitialized("Sending air quality index");
|
||||
int length = 8;
|
||||
String aqiString = "(n/a)";
|
||||
if (supportsConditionString) {
|
||||
length += aqiString.getBytes().length + 1;
|
||||
if (gbDevice.getType() == DeviceType.AMAZFITBIP) {
|
||||
try {
|
||||
TransactionBuilder builder;
|
||||
builder = performInitialized("Sending air quality index");
|
||||
int length = 8;
|
||||
String aqiString = "(n/a)";
|
||||
if (supportsConditionString) {
|
||||
length += aqiString.getBytes().length + 1;
|
||||
}
|
||||
ByteBuffer buf = ByteBuffer.allocate(length);
|
||||
buf.order(ByteOrder.LITTLE_ENDIAN);
|
||||
buf.put((byte) 4);
|
||||
buf.putInt(weatherSpec.timestamp);
|
||||
buf.put((byte) (tz_offset_hours * 4));
|
||||
buf.putShort((short) 0);
|
||||
if (supportsConditionString) {
|
||||
buf.put(aqiString.getBytes());
|
||||
buf.put((byte) 0);
|
||||
}
|
||||
builder.write(getCharacteristic(AmazfitBipService.UUID_CHARACTERISTIC_WEATHER), buf.array());
|
||||
builder.queue(getQueue());
|
||||
} catch (IOException ex) {
|
||||
LOG.error("Error sending air quality");
|
||||
}
|
||||
ByteBuffer buf = ByteBuffer.allocate(length);
|
||||
buf.order(ByteOrder.LITTLE_ENDIAN);
|
||||
buf.put((byte) 4);
|
||||
buf.putInt(weatherSpec.timestamp);
|
||||
buf.put((byte) (tz_offset_hours * 4));
|
||||
buf.putShort((short) 0);
|
||||
if (supportsConditionString) {
|
||||
buf.put(aqiString.getBytes());
|
||||
buf.put((byte) 0);
|
||||
}
|
||||
builder.write(getCharacteristic(AmazfitBipService.UUID_CHARACTERISTIC_WEATHER), buf.array());
|
||||
builder.queue(getQueue());
|
||||
} catch (IOException ex) {
|
||||
LOG.error("Error sending air quality");
|
||||
}
|
||||
|
||||
try {
|
||||
@ -258,6 +261,25 @@ public class AmazfitBipSupport extends MiBand2Support {
|
||||
} catch (Exception ex) {
|
||||
LOG.error("Error sending weather forecast", ex);
|
||||
}
|
||||
|
||||
if (gbDevice.getType() == DeviceType.AMAZFITCOR) {
|
||||
try {
|
||||
TransactionBuilder builder;
|
||||
builder = performInitialized("Sending forecast location");
|
||||
|
||||
int length = 2 + weatherSpec.location.getBytes().length;
|
||||
ByteBuffer buf = ByteBuffer.allocate(length);
|
||||
buf.order(ByteOrder.LITTLE_ENDIAN);
|
||||
buf.put((byte) 8);
|
||||
buf.put(weatherSpec.location.getBytes());
|
||||
buf.put((byte) 0);
|
||||
|
||||
builder.write(getCharacteristic(AmazfitBipService.UUID_CHARACTERISTIC_WEATHER), buf.array());
|
||||
builder.queue(getQueue());
|
||||
} catch (Exception ex) {
|
||||
LOG.error("Error sending current forecast location", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -57,6 +57,7 @@ import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallContro
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huami.ActivateDisplayOnLift;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipService;
|
||||
@ -1342,7 +1343,9 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
||||
case MiBandConst.PREF_MI2_GOAL_NOTIFICATION:
|
||||
setGoalNotification(builder);
|
||||
break;
|
||||
case MiBandConst.PREF_MI2_ACTIVATE_DISPLAY_ON_LIFT:
|
||||
case MiBandConst.PREF_ACTIVATE_DISPLAY_ON_LIFT:
|
||||
case MiBandConst.PREF_DISPLAY_ON_LIFT_START:
|
||||
case MiBandConst.PREF_DISPLAY_ON_LIFT_END:
|
||||
setActivateDisplayOnLiftWrist(builder);
|
||||
break;
|
||||
case MiBandConst.PREF_MI2_DISPLAY_ITEMS:
|
||||
@ -1429,12 +1432,32 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
||||
}
|
||||
|
||||
private MiBand2Support setActivateDisplayOnLiftWrist(TransactionBuilder builder) {
|
||||
boolean enable = HuamiCoordinator.getActivateDisplayOnLiftWrist();
|
||||
LOG.info("Setting activate display on lift wrist to " + enable);
|
||||
if (enable) {
|
||||
builder.write(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand2Service.COMMAND_ENABLE_DISPLAY_ON_LIFT_WRIST);
|
||||
} else {
|
||||
builder.write(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand2Service.COMMAND_DISABLE_DISPLAY_ON_LIFT_WRIST);
|
||||
ActivateDisplayOnLift displayOnLift = HuamiCoordinator.getActivateDisplayOnLiftWrist(getContext());
|
||||
LOG.info("Setting activate display on lift wrist to " + displayOnLift);
|
||||
|
||||
switch (displayOnLift) {
|
||||
case ON:
|
||||
builder.write(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand2Service.COMMAND_ENABLE_DISPLAY_ON_LIFT_WRIST);
|
||||
break;
|
||||
case OFF:
|
||||
builder.write(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand2Service.COMMAND_DISABLE_DISPLAY_ON_LIFT_WRIST);
|
||||
break;
|
||||
case SCHEDULED:
|
||||
byte[] cmd = MiBand2Service.COMMAND_SCHEDULE_DISPLAY_ON_LIFT_WRIST.clone();
|
||||
|
||||
Calendar calendar = GregorianCalendar.getInstance();
|
||||
|
||||
Date start = HuamiCoordinator.getDisplayOnLiftStart();
|
||||
calendar.setTime(start);
|
||||
cmd[4] = (byte) calendar.get(Calendar.HOUR_OF_DAY);
|
||||
cmd[5] = (byte) calendar.get(Calendar.MINUTE);
|
||||
|
||||
Date end = HuamiCoordinator.getDisplayOnLiftEnd();
|
||||
calendar.setTime(end);
|
||||
cmd[6] = (byte) calendar.get(Calendar.HOUR_OF_DAY);
|
||||
cmd[7] = (byte) calendar.get(Calendar.MINUTE);
|
||||
|
||||
builder.write(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_3_CONFIGURATION), cmd);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ class PebbleIoThread extends GBDeviceIoThread {
|
||||
public static void sendAppMessage(GBDeviceEventAppMessage message) {
|
||||
final String jsEvent;
|
||||
try {
|
||||
WebViewSingleton.checkAppRunning(message.appUUID);
|
||||
WebViewSingleton.getInstance().checkAppRunning(message.appUUID);
|
||||
} catch (IllegalStateException ex) {
|
||||
LOG.warn("Unable to send app message: " + message, ex);
|
||||
return;
|
||||
@ -126,7 +126,7 @@ class PebbleIoThread extends GBDeviceIoThread {
|
||||
|
||||
final String appMessage = PebbleUtils.parseIncomingAppMessage(message.message, message.appUUID, message.id);
|
||||
LOG.debug("to WEBVIEW: event: " + jsEvent + " message: " + appMessage);
|
||||
WebViewSingleton.invokeWebview(new WebViewSingleton.WebViewRunnable() {
|
||||
WebViewSingleton.getInstance().invokeWebview(new WebViewSingleton.WebViewRunnable() {
|
||||
@Override
|
||||
public void invoke(WebView webView) {
|
||||
webView.evaluateJavascript("if (typeof Pebble == 'object') Pebble.evaluate('" + jsEvent + "',[" + appMessage + "]);", new ValueCallback<String>() {
|
||||
@ -424,7 +424,7 @@ class PebbleIoThread extends GBDeviceIoThread {
|
||||
}
|
||||
|
||||
if (GBApplication.getGBPrefs().isBackgroundJsEnabled()) {
|
||||
WebViewSingleton.disposeWebView();
|
||||
WebViewSingleton.getInstance().disposeWebView();
|
||||
}
|
||||
|
||||
gbDevice.sendDeviceUpdateIntent(getContext());
|
||||
@ -553,9 +553,9 @@ class PebbleIoThread extends GBDeviceIoThread {
|
||||
LOG.info("got GBDeviceEventAppManagement START event for uuid: " + appMgmt.uuid);
|
||||
if (GBApplication.getGBPrefs().isBackgroundJsEnabled()) {
|
||||
if (mPebbleProtocol.hasAppMessageHandler(appMgmt.uuid)) {
|
||||
WebViewSingleton.stopJavascriptInterface();
|
||||
WebViewSingleton.getInstance().stopJavascriptInterface();
|
||||
} else {
|
||||
WebViewSingleton.runJavascriptInterface(gbDevice, appMgmt.uuid);
|
||||
WebViewSingleton.getInstance().runJavascriptInterface(gbDevice, appMgmt.uuid);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -41,16 +41,10 @@ import java.io.ByteArrayInputStream;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.Weather;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton.internetHelper;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton.internetHelperBound;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton.internetHelperListener;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton.internetResponse;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton.latch;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton;
|
||||
|
||||
public class GBWebClient extends WebViewClient {
|
||||
|
||||
@ -85,19 +79,14 @@ public class GBWebClient extends WebViewClient {
|
||||
|
||||
private WebResourceResponse mimicReply(Uri requestedUri) {
|
||||
if (requestedUri.getHost() != null && (StringUtils.indexOfAny(requestedUri.getHost(), AllowedDomains) != -1)) {
|
||||
if (GBApplication.getGBPrefs().isBackgroundJsEnabled() && internetHelperBound) {
|
||||
if (GBApplication.getGBPrefs().isBackgroundJsEnabled() && WebViewSingleton.getInstance().internetHelperBound) {
|
||||
LOG.debug("WEBVIEW forwarding request to the internet helper");
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("URL", requestedUri.toString());
|
||||
Message webRequest = Message.obtain();
|
||||
webRequest.replyTo = internetHelperListener;
|
||||
webRequest.setData(bundle);
|
||||
try {
|
||||
latch = new CountDownLatch(1); //the messenger should run on a single thread, hence we don't need to be worried about concurrency. This approach however is certainly not ideal.
|
||||
internetHelper.send(webRequest);
|
||||
latch.await();
|
||||
return internetResponse;
|
||||
|
||||
return WebViewSingleton.getInstance().send(webRequest);
|
||||
} catch (RemoteException | InterruptedException e) {
|
||||
LOG.warn("Error downloading data from " + requestedUri, e);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2015-2018 Andreas Shimokawa, Carsten Pfeiffer, Daniele
|
||||
Gobbetti, Felix Konstantin Maurer, TaaviE, Uwe Hermann, Yar
|
||||
Gobbetti, Felix Konstantin Maurer, Taavi Eomäe, Uwe Hermann, Yar
|
||||
|
||||
This file is part of Gadgetbridge.
|
||||
|
||||
|
@ -135,16 +135,19 @@ public class PebbleUtils {
|
||||
|
||||
JSONObject knownKeys = PebbleUtils.getAppConfigurationKeys(uuid);
|
||||
SparseArray<String> appKeysMap = new SparseArray<>();
|
||||
String inKey, outKey;
|
||||
|
||||
// TODO: The fact that knownKeys is null for the passed UUID means that the
|
||||
// watchapp was installed by some other app, hence we cannot communicate with it.
|
||||
// The user could be warned somehow.
|
||||
if (knownKeys == null || msg == null) {
|
||||
msg = "[]";
|
||||
}
|
||||
|
||||
String inKey, outKey;
|
||||
//knownKeys contains "name"->"index", we need to reverse that
|
||||
for (Iterator<String> key = knownKeys.keys(); key.hasNext(); ) {
|
||||
inKey = key.next();
|
||||
appKeysMap.put(knownKeys.optInt(inKey), inKey);
|
||||
} else {
|
||||
//knownKeys contains "name"->"index", we need to reverse that
|
||||
for (Iterator<String> key = knownKeys.keys(); key.hasNext(); ) {
|
||||
inKey = key.next();
|
||||
appKeysMap.put(knownKeys.optInt(inKey), inKey);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -23,6 +23,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.MutableContextWrapper;
|
||||
import android.content.ServiceConnection;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
@ -30,6 +31,7 @@ import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.os.Messenger;
|
||||
import android.os.RemoteException;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.webkit.WebResourceResponse;
|
||||
import android.webkit.WebSettings;
|
||||
@ -53,32 +55,33 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.webview.JSInt
|
||||
public class WebViewSingleton {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(WebViewSingleton.class);
|
||||
private static WebViewSingleton instance = new WebViewSingleton();
|
||||
|
||||
private WebView instance = null;
|
||||
private WebView webView = null;
|
||||
private MutableContextWrapper contextWrapper;
|
||||
private Looper mainLooper;
|
||||
private static WebViewSingleton webViewSingleton = new WebViewSingleton();
|
||||
private static UUID currentRunningUUID;
|
||||
public static Messenger internetHelper = null;
|
||||
public static boolean internetHelperBound;
|
||||
public static CountDownLatch latch;
|
||||
public static WebResourceResponse internetResponse;
|
||||
public final static Messenger internetHelperListener = new Messenger(new IncomingHandler());
|
||||
private UUID currentRunningUUID;
|
||||
private Messenger internetHelper = null;
|
||||
public boolean internetHelperBound;
|
||||
private boolean internetHelperInstalled;
|
||||
private CountDownLatch latch;
|
||||
private WebResourceResponse internetResponse;
|
||||
private Messenger internetHelperListener;
|
||||
|
||||
private WebViewSingleton() {
|
||||
}
|
||||
|
||||
public static synchronized void ensureCreated(Activity context) {
|
||||
if (webViewSingleton.instance == null) {
|
||||
webViewSingleton.contextWrapper = new MutableContextWrapper(context);
|
||||
webViewSingleton.mainLooper = context.getMainLooper();
|
||||
webViewSingleton.instance = new WebView(webViewSingleton.contextWrapper);
|
||||
if (instance.webView == null) {
|
||||
instance.contextWrapper = new MutableContextWrapper(context);
|
||||
instance.mainLooper = context.getMainLooper();
|
||||
instance.webView = new WebView(instance.contextWrapper);
|
||||
WebView.setWebContentsDebuggingEnabled(true);
|
||||
webViewSingleton.instance.setWillNotDraw(true);
|
||||
webViewSingleton.instance.clearCache(true);
|
||||
webViewSingleton.instance.setWebViewClient(new GBWebClient());
|
||||
webViewSingleton.instance.setWebChromeClient(new GBChromeClient());
|
||||
WebSettings webSettings = webViewSingleton.instance.getSettings();
|
||||
instance.webView.setWillNotDraw(true);
|
||||
instance.webView.clearCache(true);
|
||||
instance.webView.setWebViewClient(new GBWebClient());
|
||||
instance.webView.setWebChromeClient(new GBChromeClient());
|
||||
WebSettings webSettings = instance.webView.getSettings();
|
||||
webSettings.setJavaScriptEnabled(true);
|
||||
//needed to access the DOM
|
||||
webSettings.setDomStorageEnabled(true);
|
||||
@ -88,7 +91,7 @@ public class WebViewSingleton {
|
||||
}
|
||||
|
||||
//Internet helper outgoing connection
|
||||
private static ServiceConnection internetHelperConnection = new ServiceConnection() {
|
||||
private ServiceConnection internetHelperConnection = new ServiceConnection() {
|
||||
public void onServiceConnected(ComponentName className, IBinder service) {
|
||||
LOG.info("internet helper service bound");
|
||||
internetHelperBound = true;
|
||||
@ -102,8 +105,20 @@ public class WebViewSingleton {
|
||||
}
|
||||
};
|
||||
|
||||
public static WebViewSingleton getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public WebResourceResponse send(Message webRequest) throws RemoteException, InterruptedException {
|
||||
webRequest.replyTo = internetHelperListener;
|
||||
latch = new CountDownLatch(1); //the messenger should run on a single thread, hence we don't need to be worried about concurrency. This approach however is certainly not ideal.
|
||||
internetHelper.send(webRequest);
|
||||
latch.await();
|
||||
return internetResponse;
|
||||
}
|
||||
|
||||
//Internet helper inbound (responses) handler
|
||||
private static class IncomingHandler extends Handler {
|
||||
private class IncomingHandler extends Handler {
|
||||
|
||||
private String getCharsetFromHeaders(String contentType) {
|
||||
if (contentType != null && contentType.toLowerCase().trim().contains("charset=")) {
|
||||
@ -135,9 +150,9 @@ public class WebViewSingleton {
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static WebView getWebView(Context context) {
|
||||
webViewSingleton.contextWrapper.setBaseContext(context);
|
||||
return webViewSingleton.instance;
|
||||
public WebView getWebView(Context context) {
|
||||
contextWrapper.setBaseContext(context);
|
||||
return webView;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -145,16 +160,21 @@ public class WebViewSingleton {
|
||||
* @param uuid the uuid of the application expected to be running
|
||||
* @throws IllegalStateException when the webview is not active or the app is not running
|
||||
*/
|
||||
public static void checkAppRunning(@NonNull UUID uuid) {
|
||||
if (webViewSingleton.instance == null) {
|
||||
throw new IllegalStateException("webViewSingleton.instance is null!");
|
||||
public void checkAppRunning(@NonNull UUID uuid) {
|
||||
if (webView == null) {
|
||||
throw new IllegalStateException("instance.webView is null!");
|
||||
}
|
||||
if (!uuid.equals(currentRunningUUID)) {
|
||||
throw new IllegalStateException("Expected app " + uuid + " is not running, but " + currentRunningUUID + " is.");
|
||||
}
|
||||
}
|
||||
|
||||
public static void runJavascriptInterface(@NonNull GBDevice device, @NonNull UUID uuid) {
|
||||
public void runJavascriptInterface(@NonNull Activity context, @NonNull GBDevice device, @NonNull UUID uuid) {
|
||||
ensureCreated(context);
|
||||
runJavascriptInterface(device, uuid);
|
||||
}
|
||||
|
||||
public void runJavascriptInterface(@NonNull GBDevice device, @NonNull UUID uuid) {
|
||||
if (uuid.equals(currentRunningUUID)) {
|
||||
LOG.debug("WEBVIEW uuid not changed keeping the old context");
|
||||
} else {
|
||||
@ -170,16 +190,26 @@ public class WebViewSingleton {
|
||||
webView.loadUrl("file:///android_asset/app_config/configure.html?rand=" + Math.random() * 500);
|
||||
}
|
||||
});
|
||||
if (!internetHelperBound) {
|
||||
Intent intent = new Intent();
|
||||
intent.setComponent(new ComponentName("nodomain.freeyourgadget.internethelper", "nodomain.freeyourgadget.internethelper.MyService"));
|
||||
webViewSingleton.contextWrapper.getApplicationContext().bindService(intent, internetHelperConnection, Context.BIND_AUTO_CREATE);
|
||||
if (!internetHelperBound && !internetHelperInstalled) {
|
||||
String internetHelperPkg = "nodomain.freeyourgadget.internethelper";
|
||||
String internetHelperCls = internetHelperPkg + ".MyService";
|
||||
try {
|
||||
contextWrapper.getPackageManager().getApplicationInfo(internetHelperPkg, 0);
|
||||
Intent intent = new Intent();
|
||||
intent.setComponent(new ComponentName(internetHelperPkg, internetHelperCls));
|
||||
contextWrapper.getApplicationContext().bindService(intent, internetHelperConnection, Context.BIND_AUTO_CREATE);
|
||||
internetHelperListener = new Messenger(new IncomingHandler());
|
||||
internetHelperInstalled = true;
|
||||
}
|
||||
catch (PackageManager.NameNotFoundException e) {
|
||||
internetHelperInstalled = false;
|
||||
LOG.info("WEBVIEW: Internet helper not installed, only mimicked HTTP requests will work.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void stopJavascriptInterface() {
|
||||
public void stopJavascriptInterface() {
|
||||
invokeWebview(new WebViewRunnable() {
|
||||
@Override
|
||||
public void invoke(WebView webView) {
|
||||
@ -189,10 +219,10 @@ public class WebViewSingleton {
|
||||
});
|
||||
}
|
||||
|
||||
public static void disposeWebView() {
|
||||
public void disposeWebView() {
|
||||
if (internetHelperBound) {
|
||||
LOG.debug("WEBVIEW: will unbind the internet helper");
|
||||
webViewSingleton.contextWrapper.getApplicationContext().unbindService(internetHelperConnection);
|
||||
contextWrapper.getApplicationContext().unbindService(internetHelperConnection);
|
||||
internetHelperBound = false;
|
||||
}
|
||||
currentRunningUUID = null;
|
||||
@ -207,34 +237,34 @@ public class WebViewSingleton {
|
||||
webView.loadUrl("about:blank");
|
||||
// webView.freeMemory();
|
||||
webView.pauseTimers();
|
||||
// instance.destroy();
|
||||
// instance = null;
|
||||
// webView.destroy();
|
||||
// webView = null;
|
||||
// contextWrapper = null;
|
||||
// jsInterface = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void invokeWebview(final WebViewRunnable runnable) {
|
||||
if (webViewSingleton.instance == null || webViewSingleton.mainLooper == null) {
|
||||
public void invokeWebview(final WebViewRunnable runnable) {
|
||||
if (webView == null || mainLooper == null) {
|
||||
LOG.warn("Webview already disposed, ignoring runnable");
|
||||
return;
|
||||
}
|
||||
new Handler(webViewSingleton.mainLooper).post(new Runnable() {
|
||||
new Handler(mainLooper).post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (webViewSingleton.instance == null) {
|
||||
if (webView == null) {
|
||||
LOG.warn("Webview already disposed, cannot invoke runnable");
|
||||
return;
|
||||
}
|
||||
runnable.invoke(webViewSingleton.instance);
|
||||
runnable.invoke(webView);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public interface WebViewRunnable {
|
||||
/**
|
||||
* Called in the main thread with a non-null webView instance
|
||||
* Called in the main thread with a non-null webView webView
|
||||
* @param webView the webview, never null
|
||||
*/
|
||||
void invoke(WebView webView);
|
||||
|
@ -27,8 +27,8 @@
|
||||
<string name="appmanager_installed_watchfaces">Instalované ciferníky</string>
|
||||
<string name="appmananger_app_delete">Odstranit</string>
|
||||
<string name="appmananger_app_delete_cache">Odstranit z cache</string>
|
||||
<string name="appmananger_app_reinstall">Naintalovat znovu</string>
|
||||
<string name="appmanager_app_openinstore">Hledat v Pebble Appstore</string>
|
||||
<string name="appmananger_app_reinstall">Nainstalovat znovu</string>
|
||||
<string name="appmanager_app_openinstore">Hledat v Pebble appstore</string>
|
||||
<string name="appmanager_health_activate">Aktivovat</string>
|
||||
<string name="appmanager_health_deactivate">Deaktivovat</string>
|
||||
<string name="appmanager_hrm_activate">Zapnout měření pulzu</string>
|
||||
@ -43,11 +43,13 @@
|
||||
<!--Strings related to CalBlacklist-->
|
||||
<!--Strings related to FwAppInstaller-->
|
||||
<string name="title_activity_fw_app_insaller">Instalátor FW/App</string>
|
||||
<string name="fw_upgrade_notice">Instaluje firmware %s do Mi Band místo stávajícího.</string>
|
||||
<string name="fw_multi_upgrade_notice">Instaluje firmwary %1$s a %2$s do Mi Band místo stávajícího.</string>
|
||||
<string name="miband_firmware_known">Tento firmware byl testován a je kompatibilní s Gadgetbridge.</string>
|
||||
<string name="miband_firmware_unknown_warning">Tento firmware nebyl testován a nemusí být kompatibilní s Gadgetbridge.\n\nNedoporučujeme jej nahrávat do Mi Band!</string>
|
||||
<string name="miband_firmware_suggest_whitelist">Pokud budete prokračovat a vše bude fungovat běžně i potom, upozorněte vývojáře Gadgetbridge, aby označili tento firmware: %s jako vyzkoušený</string>
|
||||
<string name="fw_upgrade_notice">Instaluje firmvér %s do Mi Band místo stávajícího.</string>
|
||||
<string name="fw_multi_upgrade_notice">Instaluje firmvér %1$s a %2$s do Mi Band místo stávajícího.</string>
|
||||
<string name="miband_firmware_known">Tento firmvér byl testován a je kompatibilní s Gadgetbridge.</string>
|
||||
<string name="miband_firmware_unknown_warning">Tento firmvér nebyl testován a nemusí být kompatibilní s Gadgetbridge.
|
||||
\n
|
||||
\nNedoporučujeme jej nahrávat do Mi Band!</string>
|
||||
<string name="miband_firmware_suggest_whitelist">Pokud budete prokračovat a vše bude fungovat běžně i potom, upozorněte vývojáře Gadgetbridge, aby označili tento firmvér: %s jako vyzkoušený</string>
|
||||
<!--Strings related to Settings-->
|
||||
<string name="title_activity_settings">Nastavení</string>
|
||||
<string name="pref_header_general">Základní nastavení</string>
|
||||
@ -70,23 +72,23 @@
|
||||
<string name="pref_title_notifications_repetitions">Opakování</string>
|
||||
<string name="pref_title_notifications_call">Volání</string>
|
||||
<string name="pref_title_notifications_sms">SMS</string>
|
||||
<string name="pref_title_notifications_pebblemsg">Zpráva Pebble</string>
|
||||
<string name="pref_summary_notifications_pebblemsg">Podpora pro aplikace, které posílají notifikace do Pebble via PebbleKit.</string>
|
||||
<string name="pref_title_notifications_generic">Obecná podpora notifikací</string>
|
||||
<string name="pref_title_whenscreenon">... také pokud je displej zapnutý</string>
|
||||
<string name="pref_title_notifications_pebblemsg">Zprávy Pebble</string>
|
||||
<string name="pref_summary_notifications_pebblemsg">Podpora pro aplikace, které posílají notifikace do Pebble přes PebbleKit.</string>
|
||||
<string name="pref_title_notifications_generic">Přístup k notifikacím</string>
|
||||
<string name="pref_title_whenscreenon">Upozornění i při zapnuté obrazovce</string>
|
||||
<string name="pref_title_notification_filter">Nerušit</string>
|
||||
<string name="pref_summary_notification_filter">Neposílat nechtěné notifikace podle režimu Nerušit.</string>
|
||||
<string name="pref_title_transliteration">Přepsání</string>
|
||||
<string name="pref_summary_transliteration">Toto zapněte, pokud vaše zařízení nepodporuje písma pro vás jazyk.</string>
|
||||
<string name="always">vždy</string>
|
||||
<string name="when_screen_off">pokud je vypnutý displej</string>
|
||||
<string name="never">nikdy</string>
|
||||
<string name="pref_summary_notification_filter">Neposílat nechtěné notifikace v režimu Nerušit</string>
|
||||
<string name="pref_title_transliteration">Přepsání diakritiky</string>
|
||||
<string name="pref_summary_transliteration">Toto zapněte, pokud vaše zařízení nepodporuje písma pro vás jazyk</string>
|
||||
<string name="always">Vždy</string>
|
||||
<string name="when_screen_off">Pokud je vypnutý displej</string>
|
||||
<string name="never">Nikdy</string>
|
||||
<string name="pref_header_privacy">Soukromí</string>
|
||||
<string name="pref_title_call_privacy_mode">Režim soukromého volání</string>
|
||||
<string name="pref_call_privacy_mode_off">Zobrazit jméno a číslo</string>
|
||||
<string name="pref_call_privacy_mode_name">Skrýt jméno, ale zobrazit číslo</string>
|
||||
<string name="pref_call_privacy_mode_complete">Skrýt jméno i číslo</string>
|
||||
<string name="pref_blacklist">Zakázané aplikace</string>
|
||||
<string name="pref_blacklist">Zakázané aplikace (bez notifikací)</string>
|
||||
<string name="pref_header_cannned_messages">Potlačené zprávy</string>
|
||||
<string name="pref_title_canned_replies">Odpovědi</string>
|
||||
<string name="pref_title_canned_reply_suffix">Běžná přípona</string>
|
||||
@ -102,10 +104,10 @@
|
||||
<string name="pref_title_pebble_sync_morpheuz">Synchronizovat Morpheuz</string>
|
||||
<string name="pref_title_enable_outgoing_call">Podpora odchozích volání</string>
|
||||
<string name="pref_summary_enable_outgoing_call">Vypnutím také přestane Pebble 2/LE vibrovat při odchozích voláních</string>
|
||||
<string name="pref_title_enable_pebblekit">Povolit přístup aplikacím 3. stran z Androidu</string>
|
||||
<string name="pref_summary_enable_pebblekit">Povolot experimentální podporu pro aplikace Androidu přes PebbleKit</string>
|
||||
<string name="pref_title_enable_pebblekit">Povolit přístup třetích stran k aplikaci Android</string>
|
||||
<string name="pref_summary_enable_pebblekit">Povolit experimentální podporu pro aplikace Androidu přes PebbleKit</string>
|
||||
<string name="pref_title_sunrise_sunset">Východ a západ slunce</string>
|
||||
<string name="pref_summary_sunrise_sunset">Zasílat časy východu a západu slunce podle umístění do Pebble timeline</string>
|
||||
<string name="pref_summary_sunrise_sunset">Zasílat časy východu a západu slunce podle umístění do Pebble časové osi</string>
|
||||
<string name="pref_title_autoremove_notifications">Odstraňovat skryté notifikace automaticky</string>
|
||||
<string name="pref_summary_autoremove_notifications">Notifikace budou z Pebble odstraněny automaticky, pokud byly skryty na zařízení s Androidem</string>
|
||||
<string name="pref_title_pebble_privacy_mode">Soukromý režim</string>
|
||||
@ -121,24 +123,24 @@
|
||||
<string name="toast_enable_networklocationprovider">Povolte zjištění polohy v síti</string>
|
||||
<string name="toast_aqurired_networklocation">poloha zjištěna</string>
|
||||
<string name="pref_title_pebble_forceprotocol">Vnutit protokol notifikací</string>
|
||||
<string name="pref_summary_pebble_forceprotocol">Tato volba vnutí použití posledního protokolu notifikací podle verze firmware. POVOLTE, JEN POKUD VÍTE, CO DĚLÁTE!</string>
|
||||
<string name="pref_summary_pebble_forceprotocol">Tato volba vnutí použití posledního protokolu notifikací podle verze firmvéru. POVOLTE, JEN POKUD VÍTE, CO DĚLÁTE!</string>
|
||||
<string name="pref_title_pebble_forceuntested">Povolit netestované funkce</string>
|
||||
<string name="pref_summary_pebble_forceuntested">Povolí funkce, které nebyl testovány. POVOLTE, JEN POKUD VÍTE, CO DĚLÁTE!</string>
|
||||
<string name="pref_title_pebble_forcele">Vždy preferovat BLE</string>
|
||||
<string name="pref_summary_pebble_forcele">Použít experimentální podporu Pebble LE pro všechny Pebble místo BT classic, vyžaduje spárování \"Pebble LE\" po připojení bez LE</string>
|
||||
<string name="pref_title_pebble_mtu_limit">Pebble 2/LE GATT MTU limit</string>
|
||||
<string name="pref_title_pebble_mtu_limit">Pebble 2/LE GATT MTU ohraničení</string>
|
||||
<string name="pref_summary_pebble_mtu_limit">Pokud vaše Pebble 2/Pebble LE nepracuje jak má, zkuste toto nastavení pro omezení MTU (povolený rozsah 20-512)</string>
|
||||
<string name="pref_title_pebble_enable_applogs">Zapnout logování Watch App</string>
|
||||
<string name="pref_summary_pebble_enable_applogs">Logy od watch app budou logovány v Gadgetbridge (vyžaduje znovupřipojení)</string>
|
||||
<string name="pref_title_pebble_always_ack_pebblekit">Předčasné potvrzení (ACK) pro PebbleKit</string>
|
||||
<string name="pref_summary_pebble_always_ack_pebblekit">Způsobí, že zprávy zaslané externím aplikacím 3. stran budou potvrzeny vždy a okamžitě.</string>
|
||||
<string name="pref_summary_pebble_always_ack_pebblekit">Způsobí, že zprávy zaslané externím aplikacím 3. stran budou potvrzeny vždy a okamžitě</string>
|
||||
<string name="pref_title_pebble_reconnect_attempts">Pokusů o znovupřipojení</string>
|
||||
<string name="pref_title_unit_system">Jednotky</string>
|
||||
<string name="pref_title_timeformat">Formát času</string>
|
||||
<string name="pref_title_screentime">Doba zapnutí displeje</string>
|
||||
<string name="prefs_title_all_day_heart_rate">Celodenní měření tepu</string>
|
||||
<string name="preferences_hplus_settings">Nastavení HPlus/Makibes</string>
|
||||
<string name="not_connected">nepřipojeno</string>
|
||||
<string name="not_connected">Nepřipojeno</string>
|
||||
<string name="connecting">Připojování</string>
|
||||
<string name="connected">Připojeno</string>
|
||||
<string name="unknown_state">Neznámý stav</string>
|
||||
@ -159,9 +161,12 @@
|
||||
<string name="installing_binary_d_d">Instaluji binární %1$d/%2$d</string>
|
||||
<string name="installation_failed_">Instalace selhala</string>
|
||||
<string name="installation_successful">Instalace úspěšná</string>
|
||||
<string name="firmware_install_warning">CHCETE INSTALOVAT FIRMWARE, POKRAČUJTE NA SVÉ RIZIKO. \n\n\n Tento firmware je pro revizi HW: %s</string>
|
||||
<string name="firmware_install_warning">CHCETE INSTALOVAT FIRMVÉR, POKRAČUJTE NA SVÉ RIZIKO.
|
||||
\n
|
||||
\n
|
||||
\nTento firmvér je pro revizi HW: %s</string>
|
||||
<string name="app_install_info">Instalujete aplikaci:\n\n\n%1$s Verze %2$s od %3$s\n</string>
|
||||
<string name="n_a">nedostupné</string>
|
||||
<string name="n_a">Nedostupné</string>
|
||||
<string name="initialized">Spuštěno</string>
|
||||
<string name="appversion_by_creator">%1$s od %2$s</string>
|
||||
<string name="title_activity_discovery">Hledání zařízení</string>
|
||||
@ -179,12 +184,12 @@
|
||||
<string name="pairing_already_bonded">Vazba s %1$s (%2$s) již existuje, propojuji…</string>
|
||||
<string name="message_cannot_pair_no_mac">Adresa MAC nepřišla, nemohu párovat.</string>
|
||||
<string name="preferences_category_device_specific_settings">Nastavení zařízení</string>
|
||||
<string name="preferences_miband_settings">Nastavení Mi Band / Bip</string>
|
||||
<string name="male">muž</string>
|
||||
<string name="female">žena</string>
|
||||
<string name="other">jiný</string>
|
||||
<string name="left">vlevo</string>
|
||||
<string name="right">vpravo</string>
|
||||
<string name="preferences_miband_settings">Nastavení Mi Band / Amazfit</string>
|
||||
<string name="male">Muž</string>
|
||||
<string name="female">Žena</string>
|
||||
<string name="other">Jiný</string>
|
||||
<string name="left">Vlevo</string>
|
||||
<string name="right">Vpravo</string>
|
||||
<string name="miband_pairing_using_dummy_userdata">Data uživatele nejsou platná, nyní používám vzorová.</string>
|
||||
<string name="miband_pairing_tap_hint">Když Mi Band zavibruje a blikne, dotkněte se jej několikrát po sobě.</string>
|
||||
<string name="appinstaller_install">Instalovat</string>
|
||||
@ -195,9 +200,9 @@
|
||||
<string name="pref_header_vibration_count">Počet vibrací</string>
|
||||
<string name="title_activity_sleepmonitor">Sledování spánku</string>
|
||||
<string name="pref_write_logfiles">Zapsat logy</string>
|
||||
<string name="initializing">spouštím</string>
|
||||
<string name="initializing">Spouštím</string>
|
||||
<string name="busy_task_fetch_activity_data">Stahuji data o aktivitě</string>
|
||||
<string name="sleep_activity_date_range">Z %1$s do %2$s</string>
|
||||
<string name="sleep_activity_date_range">Od %1$s do %2$s</string>
|
||||
<string name="miband_prefs_wearside">Nosíte vlevo nebo vpravo?</string>
|
||||
<string name="pref_screen_vibration_profile">Profil vibrací</string>
|
||||
<string name="vibration_profile_staccato">Staccato</string>
|
||||
@ -234,14 +239,14 @@
|
||||
<string name="user_feedback_miband_set_alarms_failed">Nepodařilo se nastavit budík, zkuste to znovu!</string>
|
||||
<string name="user_feedback_miband_set_alarms_ok">Budík zaslán do zařízení!</string>
|
||||
<string name="chart_no_data_synchronize">Chybí data, provést stažení?</string>
|
||||
<string name="user_feedback_miband_activity_data_transfer">Stahnout data %1$s od %2$s</string>
|
||||
<string name="user_feedback_miband_activity_data_transfer">Stahnout data %1$s z %2$s</string>
|
||||
<string name="miband_prefs_fitness_goal">Cílový počet kroků na den</string>
|
||||
<string name="dbaccess_error_executing">Chyba spouštění \'%1$s\'</string>
|
||||
<string name="controlcenter_start_activitymonitor">Vaše aktivita (zkušební)</string>
|
||||
<string name="cannot_connect">Nelze se připojit k: %1$s</string>
|
||||
<string name="installer_activity_unable_to_find_handler">Nemohu najít program k instalaci tohoto souboru.</string>
|
||||
<string name="pbw_install_handler_unable_to_install">Nelze nainstalovat vybraný soubor: %1$s</string>
|
||||
<string name="pbw_install_handler_hw_revision_mismatch">Nelze nainstalovat vybraný firmware: neshoduje s HW revizí vašeho Pebble.</string>
|
||||
<string name="pbw_install_handler_hw_revision_mismatch">Nelze nainstalovat vybraný firmvér: neshoduje se s HW revizi vašeho Pebble.</string>
|
||||
<string name="installer_activity_wait_while_determining_status">Vyčkejte na zjištění stavu instalace…</string>
|
||||
<string name="notif_battery_low_title">Nízká úroveň nabití baterie v zařízení!</string>
|
||||
<string name="notif_battery_low_percent">%1$s zbývá v baterii: %2$s%%</string>
|
||||
@ -252,28 +257,28 @@
|
||||
<string name="weeksleepchart_today_sleep_description">Spánek dnes, cíl: %1$s</string>
|
||||
<string name="weekstepschart_steps_a_week">Kroky za týden</string>
|
||||
<string name="activity_sleepchart_activity_and_sleep">Vaše aktivita a spánek</string>
|
||||
<string name="updating_firmware">Nahrávám firmware…</string>
|
||||
<string name="updating_firmware">Nahrávám firmvér…</string>
|
||||
<string name="fwapp_install_device_not_ready">Soubor nelze nainstalovat, zařízení není připraveno.</string>
|
||||
<string name="installhandler_firmware_name">%1$s: %2$s %3$s</string>
|
||||
<string name="miband_fwinstaller_compatible_version">Kompatibilní verze</string>
|
||||
<string name="miband_fwinstaller_untested_version">Netestovaná verze!</string>
|
||||
<string name="fwappinstaller_connection_state">Připojení k zařízení: %1$s</string>
|
||||
<string name="pbw_installhandler_pebble_firmware">Pebble Firmware %1$s</string>
|
||||
<string name="pbw_installhandler_pebble_firmware">Pebble Firmvér %1$s</string>
|
||||
<string name="pbwinstallhandler_correct_hw_revision">Správná revize HW</string>
|
||||
<string name="pbwinstallhandler_incorrect_hw_revision">Revize HW není správná!</string>
|
||||
<string name="pbwinstallhandler_app_item">%1$s (%2$s)</string>
|
||||
<string name="updatefirmwareoperation_updateproblem_do_not_reboot">Při přenosu firmwaru nastaly potíže. Nerestartujte svůj Mi Band!</string>
|
||||
<string name="updatefirmwareoperation_metadata_updateproblem">Problém při přenosu matadat firmware</string>
|
||||
<string name="updatefirmwareoperation_update_complete">Instalace firmware je kompletní</string>
|
||||
<string name="updatefirmwareoperation_update_complete_rebooting">Instalace firmware je kompletní, restartuji zařízení…</string>
|
||||
<string name="updatefirmwareoperation_write_failed">Zápis firmware selhal</string>
|
||||
<string name="chart_steps">Kroky</string>
|
||||
<string name="updatefirmwareoperation_metadata_updateproblem">Problém při přenosu matadat firmvéru</string>
|
||||
<string name="updatefirmwareoperation_update_complete">Instalace firmvéru je kompletní</string>
|
||||
<string name="updatefirmwareoperation_update_complete_rebooting">Instalace firmvéru je kompletní, restartuji zařízení…</string>
|
||||
<string name="updatefirmwareoperation_write_failed">Zápis firmvéru selhal</string>
|
||||
<string name="chart_steps">Kroků</string>
|
||||
<string name="liveactivity_live_activity">Současná aktivita</string>
|
||||
<string name="weeksteps_today_steps_description">Kroky dnes, cíl: %1$s</string>
|
||||
<string name="weeksteps_today_steps_description">Kroků dnes, cíl: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">Nepotvrzovat přenos dat o aktivitě</string>
|
||||
<string name="pref_summary_dont_ack_transfers">Pokud není přenos dat potvrzen náramku, potom nebudou smazána. Užitečné pokud je GB používán dohromady s jinou aplikací.</string>
|
||||
<string name="pref_summary_keep_data_on_device">Zachová data o aktivitě v Mi Band i po synchronizaci. Užitečné pokud je GB používán dohromady s jinou aplikací.</string>
|
||||
<string name="pref_title_low_latency_fw_update">Použít režim z nízkým zpožděním pro aktualizace firmwaru.</string>
|
||||
<string name="pref_title_low_latency_fw_update">Použít režim z nízkým zpožděním pro aktualizace firmwaru</string>
|
||||
<string name="pref_summary_low_latency_fw_update">Může to pomoci u zařízení, kde aktualizace firmwaru selhala</string>
|
||||
<string name="live_activity_steps_history">Historie kroků</string>
|
||||
<string name="live_activity_current_steps_per_minute">Aktuálně kroků/min</string>
|
||||
@ -287,23 +292,23 @@
|
||||
<string name="device_not_connected">Nepřipojeno.</string>
|
||||
<string name="user_feedback_all_alarms_disabled">Všechny budíky vypnuty</string>
|
||||
<string name="pref_title_keep_data_on_device">Zachovat data o aktivitě v zařízení</string>
|
||||
<string name="miband_fwinstaller_incompatible_version">Nekompatibilní firmware</string>
|
||||
<string name="fwinstaller_firmware_not_compatible_to_device">Tento firmware není kompatibilní s tímto zařízením</string>
|
||||
<string name="miband_fwinstaller_incompatible_version">Nekompatibilní firmvér</string>
|
||||
<string name="fwinstaller_firmware_not_compatible_to_device">Tento firmvér není kompatibilní s tímto zařízením</string>
|
||||
<string name="miband_prefs_reserve_alarm_calendar">Budíky pro nadcházející události</string>
|
||||
<string name="miband_prefs_hr_sleep_detection">Použít sledování tepu pro zlepšení detekce spánku</string>
|
||||
<string name="miband_prefs_device_time_offset_hours">Časový posun zařízení v hodinách (pro zjišťování spánku směnařů)</string>
|
||||
<string name="miband2_prefs_dateformat">Mi2: formát data</string>
|
||||
<string name="dateformat_time">Čas</string>
|
||||
<string name="dateformat_date_time">Datum a čas</string>
|
||||
<string name="dateformat_date_time">Čas a dátum</string>
|
||||
<string name="mi2_prefs_activate_display_on_lift">Zapnout displej při zvednutí</string>
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">Přenáším data od %1$s</string>
|
||||
<string name="waiting_for_reconnect">Čekání na znovupřipojení</string>
|
||||
<string name="activity_prefs_about_you">O vás</string>
|
||||
<string name="activity_prefs_about_you">Vaše údaje</string>
|
||||
<string name="activity_prefs_year_birth">Rok narození</string>
|
||||
<string name="activity_prefs_gender">Pohlaví</string>
|
||||
<string name="activity_prefs_height_cm">Výška v cm</string>
|
||||
<string name="activity_prefs_weight_kg">Váha v kg</string>
|
||||
<string name="authenticating">ověřování</string>
|
||||
<string name="authenticating">Ověřování</string>
|
||||
<string name="authentication_required">Ověřování vyžadováno</string>
|
||||
<string name="appwidget_text">Spí...</string>
|
||||
<string name="add_widget">Přidat widget</string>
|
||||
@ -313,8 +318,8 @@
|
||||
<string name="device_fw">Verze FW: %1$s</string>
|
||||
<string name="error_creating_directory_for_logfiles">Chyba při vytváření adresáře pro logy: %1$s</string>
|
||||
<string name="DEVINFO_HR_VER">"Tep: "</string>
|
||||
<string name="updatefirmwareoperation_update_in_progress">Probíhá aktualizace firmware</string>
|
||||
<string name="updatefirmwareoperation_firmware_not_sent">Firmware neodeslán</string>
|
||||
<string name="updatefirmwareoperation_update_in_progress">Aktualizace firmvéru</string>
|
||||
<string name="updatefirmwareoperation_firmware_not_sent">Firmvér nebyl odeslán</string>
|
||||
<string name="charts_legend_heartrate">Srdeční tep</string>
|
||||
<string name="live_activity_heart_rate">Srdeční tep</string>
|
||||
<string name="pref_title_pebble_health_store_raw">Uložit hrubý záznam do databáze</string>
|
||||
@ -328,11 +333,11 @@
|
||||
<string name="dbmanagementactivity_error_exporting_db">Chyba při exportu DB: %1$s</string>
|
||||
<string name="dbmanagementactivity_import_data_title">Importovat data?</string>
|
||||
<string name="dbmanagementactivity_overwrite_database_confirmation">Opravdu chcete přepsat aktuální databázi? Všechna uložená data o aktivitě se ztratí.</string>
|
||||
<string name="dbmanagementactivity_import_successful">Import byl úspěšný.</string>
|
||||
<string name="dbmanagementactivity_import_successful">Importováno.</string>
|
||||
<string name="dbmanagementactivity_error_importing_db">Chyba při importu DB: %1$s</string>
|
||||
<string name="dbmanagementactivity_delete_activity_data_title">Smazat data o aktivitách?</string>
|
||||
<string name="dbmanagementactivity_really_delete_entire_db">Opravdu chcete smazat celou databázi? Všechna data o aktivitách a informace o zařízeních se ztratí.</string>
|
||||
<string name="dbmanagementactivity_database_successfully_deleted">Data úspěšně smazána.</string>
|
||||
<string name="dbmanagementactivity_database_successfully_deleted">Data smazána.</string>
|
||||
<string name="dbmanagementactivity_db_deletion_failed">Mazání dat se nezdařilo.</string>
|
||||
<string name="dbmanagementactivity_delete_old_activity_db">Smazat původní databázi?</string>
|
||||
<string name="dbmanagementactivity_delete_old_activitydb_confirmation">Opravdu chcete smazat původní databázi? Data o aktivitách, která nebyla importována budou ztracena.</string>
|
||||
@ -345,7 +350,7 @@
|
||||
<string name="title_activity_vibration">Vibrace</string>
|
||||
<!--Strings related to Pebble Pairing Activity-->
|
||||
<string name="title_activity_pebble_pairing">Párování Pebble</string>
|
||||
<string name="pebble_pairing_hint">Dialog párování by se měl objevit na vašem zařízení s Androidem. Pokud se to nestane, zkontrolujte panel notifikací a potvrďte párování. Potom potvrďte párování na Pebble.</string>
|
||||
<string name="pebble_pairing_hint">Dialog párování by se měl objevit na vašem zařízení s Androidem. Pokud se to nestane, zkontrolujte panel notifikací a potvrďte párování. Potom potvrďte párování na Pebble</string>
|
||||
<string name="weather_notification_label">Ujistěte se, že tento skin je povolen v aplikaci pro oznámení počasí pro získávání informací v Pebble.\n\nNení třeba nic nastavovat.\n\nAplikaci pro počasí Pebble je možné povolit ve správě aplikací.\n\nPodporované ciferníky ukáží počasí automaticky.</string>
|
||||
<string name="pref_title_setup_bt_pairing">Zapnout párování BT</string>
|
||||
<string name="pref_summary_setup_bt_pairing">Toto vypněte v případě problémů s připojením</string>
|
||||
@ -357,77 +362,146 @@
|
||||
<string name="StringUtils_sender">(%1$s)</string>
|
||||
<string name="find_device_you_found_it">Nalezeno!</string>
|
||||
<string name="miband2_prefs_timeformat">Formát času Mi2</string>
|
||||
<string name="action_donate">Přispět</string>
|
||||
<string name="title_activity_calblacklist">Zakázané kalendáře</string>
|
||||
<string name="action_donate">Podpořit</string>
|
||||
<string name="title_activity_calblacklist">Zakázané notifikace Kalendáře</string>
|
||||
|
||||
<string name="pref_call_privacy_mode_number">Skryj číslo a zobraz jméno</string>
|
||||
<string name="pref_call_privacy_mode_number">Skrýť číslo, ale zobrazit jméno</string>
|
||||
<string name="pref_blacklist_calendars">Zakázané kalendáře</string>
|
||||
|
||||
<string name="pref_header_pebble_timeline">Časová osa Pebble</string>
|
||||
<string name="pref_header_pebble_timeline">Časová os Pebble</string>
|
||||
<string name="pref_title_enable_calendar_sync">Synchronizace kalendáře</string>
|
||||
<string name="pref_summary_enable_calendar_sync">Odeslat události do časové osy</string>
|
||||
<string name="pref_summary_enable_calendar_sync">Odesílat události kalendáře na časovou osu</string>
|
||||
|
||||
<string name="stats_title">Zóny rychlosti</string>
|
||||
<string name="stats_x_axis_label">Celkem minut</string>
|
||||
<string name="stats_x_axis_label">Minut celkovo</string>
|
||||
<string name="stats_y_axis_label">Kroků za minutu</string>
|
||||
|
||||
<string name="calories">Kalorií</string>
|
||||
<string name="distance">Vzdálenost</string>
|
||||
<string name="clock">Hodiny</string>
|
||||
<string name="heart_rate">Srdeční tep</string>
|
||||
<string name="battery">Baterie</string>
|
||||
<string name="mi2_prefs_goal_notification">Oznámení splnění cíle</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">Náramek bude vibrovat při splnění denního cíle kroků</string>
|
||||
<string name="mi2_prefs_display_items">Zobrazit položky</string>
|
||||
<string name="mi2_prefs_display_items_summary">Vybrat zobrazované položky na displeji náramku</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">Otáčením zápěstí změnit stav</string>
|
||||
<string name="clock">Měření času</string>
|
||||
<string name="heart_rate">Tep srdca</string>
|
||||
<string name="battery">Batéria</string>
|
||||
<string name="mi2_prefs_goal_notification">Upozornění na cíl</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">Náramek zavibruje při dosažení cíle denního počtu kroků</string>
|
||||
<string name="mi2_prefs_display_items">Zobrazení položek</string>
|
||||
<string name="mi2_prefs_display_items_summary">Vyberte položky zobrazené na obrazovce náramku</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">Otočením zápěstí přepnout typ informace</string>
|
||||
<string name="mi2_prefs_do_not_disturb">Nerušit</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">Při zapnutí nebude náramek přijímat notifikace</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Varování při neaktivitě</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">Náramek bude vibrovat pokud budete určitou dobu neaktivní</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">Doba neaktivity (v minutách)</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Vypnout varování na neaktivitu v určené době</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Začátek</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Konec</string>
|
||||
<string name="dbmanagementactivity_error_exporting_shared">Chyba při exportu nastavení: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_importing_shared">Chyba při importu nastavení: %1$s</string>
|
||||
<string name="mi2_fw_installhandler_fw53_hint">Je třeba instalovat verzi %1$s před instalací FW!</string>
|
||||
<string name="mi2_enable_text_notifications">Textové notifikace</string>
|
||||
<string name="mi2_enable_text_notifications_summary">Je nutné mít FW >= 1.0.1.28 a nainstalováno Mili_pro.ft*.</string>
|
||||
<string name="off">Vypnuto</string>
|
||||
<string name="mi2_dnd_off">Vypnuto</string>
|
||||
<string name="mi2_dnd_automatic">Automaticky (podle spánku)</string>
|
||||
<string name="mi2_dnd_scheduled">Časováno (časový úsek)</string>
|
||||
<string name="discovery_attempting_to_pair">Zouším párovat s %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">Spojení s %1$s selhalo ihned.</string>
|
||||
<string name="discovery_trying_to_connect_to">Zkouším spojení s: %1$s</string>
|
||||
<string name="discovery_enable_bluetooth">Zapnout BT pro hledání zařízení.</string>
|
||||
<string name="discovery_successfully_bonded">Spojeno úspěšně s %1$s.</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">Náramek nebude přijímat upozornění, pokud je aktivní režim Nerušit</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Upozornění na nečinnost</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">Náramek zavibruje, když budete zadaný čas bez pohybu</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">Limit času bez pohybu (v minutách)</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Vypnutí upozornění na nečinnost během zadaného časového intervalu</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Od</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Do</string>
|
||||
<string name="dbmanagementactivity_error_exporting_shared">Chyba při exportu preferencí: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_importing_shared">Chyba při importu preferencí: %1$s</string>
|
||||
<string name="mi2_fw_installhandler_fw53_hint">Před instalací tohoto firmwaru musíte nainstalovat verzi %1$s!</string>
|
||||
<string name="mi2_enable_text_notifications">Textové upozornění</string>
|
||||
<string name="mi2_enable_text_notifications_summary">Vyžaduje aby byl nainstalován font >= 1.0.1.28 and Mili_pro.ft*.</string>
|
||||
<string name="off">Vyp.</string>
|
||||
<string name="mi2_dnd_off">Vyp.</string>
|
||||
<string name="mi2_dnd_automatic">Automaticky (detekce spánku)</string>
|
||||
<string name="mi2_dnd_scheduled">Naplánovano (časový interval)</string>
|
||||
<string name="discovery_attempting_to_pair">Pokus o spárování %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">Spojení s %1$s ihned selhalo.</string>
|
||||
<string name="discovery_trying_to_connect_to">Pokouším sa spojit s: %1$s</string>
|
||||
<string name="discovery_enable_bluetooth">Chcete-li najít zařízení, povolte funkci Bluetooth.</string>
|
||||
<string name="discovery_successfully_bonded">Spojeno s %1$s.</string>
|
||||
<string name="discovery_pair_title">Párovat s %1$s?</string>
|
||||
<string name="discovery_pair_question">Vyberte Párování pro spárování s vaším zaříením. Pokud to selže, tak to zkuste bez párování.</string>
|
||||
<string name="discovery_yes_pair">Párování</string>
|
||||
<string name="discovery_pair_question">Chcete-li spárovat svá zařízení, klepněte na Párovat. Pokud to selže, zkuste to znovu bez párování.</string>
|
||||
<string name="discovery_yes_pair">Párovat</string>
|
||||
<string name="discovery_dont_pair">Nepárovat</string>
|
||||
<string name="mi2_prefs_button_actions">Akce tlačítka</string>
|
||||
<string name="mi2_prefs_button_actions_summary">Definujte akce při stisku tlačítka na Mi Band 2</string>
|
||||
<string name="mi2_prefs_button_press_count">Počet stisků tlačítka</string>
|
||||
<string name="mi2_prefs_button_press_count_summary">Definujte počet stisknutí tlačítka k vyslání broadcast zprávy</string>
|
||||
<string name="mi2_prefs_button_press_broadcast">Zpráva k vyslání (broadcast)</string>
|
||||
<string name="mi2_prefs_button_press_broadcast_summary">Zpráva k vyslání do systému pokud počtu stisknutí tlačítka (viz výše)</string>
|
||||
<string name="mi2_prefs_button_action">Povolit akci tlačítka</string>
|
||||
<string name="mi2_prefs_button_action_summary">Povolit akci tlačítka na definovaný počet stisknutí</string>
|
||||
<string name="mi2_prefs_button_action_vibrate">Povolit vibrace náramku</string>
|
||||
<string name="mi2_prefs_button_action_vibrate_summary">Povolit vibrace náramku při vyslání broadcast zprávy</string>
|
||||
<string name="mi2_prefs_button_press_count_max_delay">Maximální prodleva mezi stisky</string>
|
||||
<string name="mi2_prefs_button_press_count_max_delay_summary">Maximální prodleva mezi stisky tlačítka v milisekundách</string>
|
||||
<string name="mi2_prefs_button_press_count_match_delay">Prodleva před akcí</string>
|
||||
<string name="mi2_prefs_button_press_count_match_delay_summary">Prodleva před akcí tlačítka. Umožňuje více průchodů (v extra button_id u Intent) nebo 0 pro okamžitou akci</string>
|
||||
<string name="fw_upgrade_notice_amazfitbip">Chystáte se nainstalovat firmware %s namísto toho, který je aktuálně na vašem Amazfit Bipu.
|
||||
<string name="mi2_prefs_button_actions_summary">Nastavení akcí po stisknutí tlačítka Mi Band 2</string>
|
||||
<string name="mi2_prefs_button_press_count">Počet stisknutí tlačítka</string>
|
||||
<string name="mi2_prefs_button_press_count_summary">Počet stisknutí tlačítka na spuštění vysílání zpráv</string>
|
||||
<string name="mi2_prefs_button_press_broadcast">Vysílání zpráv</string>
|
||||
<string name="mi2_prefs_button_press_broadcast_summary">Vysílání zprávy po definovaném počtu stisknutí tlačítka</string>
|
||||
<string name="mi2_prefs_button_action">Zapnout akci tlačítka</string>
|
||||
<string name="mi2_prefs_button_action_summary">Zapnout akci na zadaný počet stisknutí tlačítka</string>
|
||||
<string name="mi2_prefs_button_action_vibrate">Zapnout vibrování náramku</string>
|
||||
<string name="mi2_prefs_button_action_vibrate_summary">Zapnout vibrace náramku při stisknutí tlačítka</string>
|
||||
<string name="mi2_prefs_button_press_count_max_delay">Maximální zpoždění mezi stisky</string>
|
||||
<string name="mi2_prefs_button_press_count_max_delay_summary">Maximální zpoždění mezi stisknutím tlačítka v milisekundách</string>
|
||||
<string name="mi2_prefs_button_press_count_match_delay">Zpoždění po provedení akce tlačítka</string>
|
||||
<string name="mi2_prefs_button_press_count_match_delay_summary">Zpoždění po provedení akce tlačítka (číslo je v button_id) nebo 0 pro okamžitě</string>
|
||||
<string name="fw_upgrade_notice_amazfitbip">Chystáte se nainstalovat firmvér %s na vašem Amazfit Bip.
|
||||
\n
|
||||
\nUjistěte se, že jste nainstalovali firmware .gps, pak soubor .res a nakonec soubor .fw. Hodiny se po instalaci souboru .fw restartují.
|
||||
\nProsím nezapomeňte nainstalovat soubor .fw, potom soubor .res a nakonec soubor .gps. Vaše hodinky se po instalaci souboru .fw restartují.
|
||||
\n
|
||||
\nPoznámka: Nemusíte instalovat soubory .res a .gps, pokud jsou tyto soubory přesně stejné jako ty, které byly dříve nainstalovány.
|
||||
\nPoznámka: Nemusíte instalovat .res a .gps, pokud jsou tyto soubory přesně stejné jako ty, které byly nainstalovány dříve.
|
||||
\n
|
||||
\nEXPERIMENTÁLNÍ PROCES, DĚLÁTE NA VAŠE VLASTNÍ RIZIKO</string>
|
||||
\nDĚLÁTE TO NA VLASTNÍ NEBEZPEČÍ!</string>
|
||||
<string name="amazfitbip_firmware">"Firmware Amazfit Bipu %1$s"</string>
|
||||
<string name="controlcenter_connect">Připojit</string>
|
||||
</resources>
|
||||
<string name="fw_upgrade_notice_amazfitcor">Chystáte se nainstalovat firmvér %s do vašeho Amazfit Cor.
|
||||
\n
|
||||
\nProsím, ujistěte se, že jste nainstalovali soubor .fw a potom soubor .res. Vaše hodinky se po instalaci souboru .fw restartují.
|
||||
\n
|
||||
\nPoznámka: Nemusíte instalovat soubor .res, pokud je stejný jako nainstalován dříve.
|
||||
\n
|
||||
\n NETESTOVÁNO, MŮŽE UMRTVIT VAŠE ZAŘÍZENÍ, DĚLÁTE TO NA VLASTNÍ NEBEZPEČÍ!</string>
|
||||
<string name="pref_title_charts_swipe">Zapnout možnost potažení vlevo/vpravo v grafech aktivit</string>
|
||||
|
||||
<string name="pref_title_weather">Počasí</string>
|
||||
<string name="pref_title_weather_location">Poloha pro počasí (CM/LOS)</string>
|
||||
|
||||
<string name="pref_title_pebble_enable_bgjs">Zapnout JS na pozadí</string>
|
||||
<string name="pref_summary_pebble_enable_bgjs">Pokud je zapnuto, umožňuje hodinám zobrazovat počasí, údaje o baterii atd.</string>
|
||||
|
||||
<string name="pref_header_auto_export">Automatický export</string>
|
||||
<string name="pref_title_auto_export_enabled">Zapnutý/Vypnutý</string>
|
||||
<string name="pref_title_auto_export_location">Složka pro uložení</string>
|
||||
<string name="pref_title_auto_export_interval">Časový interval</string>
|
||||
<string name="pref_summary_auto_export_interval">Exportovat každou %d hodinu</string>
|
||||
|
||||
<string name="preferences_amazfitbip_settings">Nastavení Amazfit Bip</string>
|
||||
<string name="prefs_title_heartrate_measurement_interval">Celodenní měření tepu</string>
|
||||
<string name="interval_one_minute">Jednou za minutu</string>
|
||||
<string name="interval_five_minutes">Každých 5 minut</string>
|
||||
<string name="interval_ten_minutes">Každých 10 minut</string>
|
||||
<string name="interval_thirty_minutes">Každých 30 minut</string>
|
||||
<string name="interval_one_hour">Jednou za hodinu</string>
|
||||
|
||||
<string name="notif_export_failed_title">Export databáze selhal! Zkontrolujte svá nastavení.</string>
|
||||
<string name="automatic">Automaticky</string>
|
||||
<string name="simplified_chinese">Zjednodušená Čínština</string>
|
||||
<string name="traditional_chinese">Tradiční Čísština</string>
|
||||
<string name="english">Angličtina</string>
|
||||
<string name="spanish">Španělština</string>
|
||||
|
||||
<string name="activity_web_view">Aktivity Webový pohled</string>
|
||||
|
||||
<string name="_pebble_watch_open_on_phone">Otevřít na telefonu</string>
|
||||
<string name="_pebble_watch_mute">Ztlumit</string>
|
||||
<string name="_pebble_watch_reply">Znova</string>
|
||||
|
||||
<string name="kind_firmware">Firmvér</string>
|
||||
<string name="kind_invalid">Neplatná data</string>
|
||||
<string name="kind_font">Písmo</string>
|
||||
<string name="kind_gps">GPS Firmvér</string>
|
||||
<string name="kind_gps_almanac">Almanach GPS</string>
|
||||
<string name="kind_gps_cep">Korekce chyb GPS</string>
|
||||
<string name="kind_resources">Zdroje</string>
|
||||
<string name="kind_watchface">Ciferník</string>
|
||||
|
||||
<string name="devicetype_unknown">Neznámé zařízení</string>
|
||||
<string name="devicetype_test">Testovací zařízení</string>
|
||||
<string name="devicetype_pebble">Pebble</string>
|
||||
<string name="devicetype_miband">Mi Band</string>
|
||||
<string name="devicetype_miband2">Mi Band 2</string>
|
||||
<string name="devicetype_amazfit_bip">Amazfit Bip</string>
|
||||
<string name="devicetype_amazfit_cor">Amazfit Cor</string>
|
||||
<string name="devicetype_vibratissimo">Vibratissimo</string>
|
||||
<string name="devicetype_liveview">LiveView</string>
|
||||
<string name="devicetype_hplus">HPlus</string>
|
||||
<string name="devicetype_makibes_f68">Makibes F68</string>
|
||||
<string name="devicetype_exrizu_k8">Exrizu K8</string>
|
||||
<string name="devicetype_no1_f1">No.1 F1</string>
|
||||
<string name="devicetype_teclast_h30">Teclast H30</string>
|
||||
<string name="devicetype_xwatch">XWatch</string>
|
||||
|
||||
<string name="choose_auto_export_location">Vyberte umístění exportu</string>
|
||||
<string name="notification_channel_name">Gadgetbridge notifikace</string>
|
||||
</resources>
|
||||
|
@ -33,11 +33,11 @@
|
||||
<string name="appmananger_app_reinstall">Taasinstalli</string>
|
||||
<string name="appmanager_app_openinstore">Otsi Pebble\'i poest</string>
|
||||
<string name="appmanager_health_activate">Aktiveeri</string>
|
||||
<string name="appmanager_health_deactivate">Deaktiveeri</string>
|
||||
<string name="appmanager_health_deactivate">Inaktiveeri</string>
|
||||
<string name="appmanager_hrm_activate">Aktiveeri HRM</string>
|
||||
<string name="appmanager_hrm_deactivate">Deaktiveeri HRM</string>
|
||||
<string name="appmanager_hrm_deactivate">Inaktiveeri HRM</string>
|
||||
<string name="appmanager_weather_activate">Aktiveeri süsteemi ilmarakendus</string>
|
||||
<string name="appmanager_weather_deactivate">Deaktiveeri süsteemi ilmarakendus</string>
|
||||
<string name="appmanager_weather_deactivate">Inaktiveeri süsteemi ilmarakendus</string>
|
||||
<string name="appmanager_weather_install_provider">Paigalda ilmateavituste rakendus</string>
|
||||
<string name="app_configure">Seadista</string>
|
||||
<string name="app_move_to_top">Liiguta kõige üles</string>
|
||||
@ -113,4 +113,28 @@
|
||||
<string name="pref_blacklist">Rakenduste must nimekiri</string>
|
||||
<string name="pref_blacklist_calendars">Kalendrite must nimekiri</string>
|
||||
|
||||
<string name="pref_summary_minimize_priority_off">Olekuriba ikooni ja lukustusekraani märguandeid kuvatakse</string>
|
||||
<string name="pref_summary_minimize_priority_on">Olekuriba ikoon ja lukustuserkaani märguanded on peidetud</string>
|
||||
|
||||
<string name="pref_summary_notifications_pebblemsg">Tugi rakendustele, mis saadavad PebbleKit kaudu märguandeid Pebblele.</string>
|
||||
<string name="pref_title_whenscreenon">...ka sisse lülitatud ekraaniga</string>
|
||||
<string name="pref_summary_notification_filter">Peata soovimatute märguannete saatmine \"Ära sega\" režiimis</string>
|
||||
<string name="pref_summary_transliteration">Luba see, kui su seadmel puudub su keele fondi tugi</string>
|
||||
|
||||
<string name="pref_title_call_privacy_mode">Kõne privaatrežiim</string>
|
||||
<string name="pref_call_privacy_mode_name">Peida nimi, kuva ainult number</string>
|
||||
<string name="pref_header_cannned_messages">Talletatud sõnumid</string>
|
||||
<string name="pref_title_canned_replies">Vastused</string>
|
||||
<string name="pref_title_canned_reply_suffix">Ühine järelliide</string>
|
||||
<string name="pref_header_development">Arendajate seaded</string>
|
||||
<string name="pref_title_development_miaddr">Mi Band\'i aadress</string>
|
||||
|
||||
<string name="pref_title_canned_messages_set">Uuenda Pebble\'l</string>
|
||||
|
||||
<string name="pref_title_pebble_settings">Pebble\'i seaded</string>
|
||||
|
||||
<string name="pref_header_activitytrackers">Aktiivsusmonitorid</string>
|
||||
<string name="pref_title_pebble_activitytracker">Eelistatud aktiivsusmonitor</string>
|
||||
<string name="pref_title_pebble_sync_health">Sünkrooni Pebble\'i terviseandmeid</string>
|
||||
<string name="pref_title_pebble_sync_misfit">Sünkrooni Misfit\'i</string>
|
||||
</resources>
|
||||
|
@ -306,7 +306,7 @@
|
||||
<string name="miband_prefs_reserve_alarm_calendar">Sveglie da riservare per i prossimi eventi del calendario</string>
|
||||
<string name="miband_prefs_hr_sleep_detection">Utilizza il sensore del battito cardiaco per migliorare il riconoscimento del sonno</string>
|
||||
<string name="miband_prefs_device_time_offset_hours">Sfasamento dell\'orario per il device (per consentire il rilevamento del sonno per chi lavora a turni)</string>
|
||||
<string name="miband2_prefs_dateformat">Mi2: formato della data</string>
|
||||
<string name="miband2_prefs_dateformat">Mi Band 2: Formato Data</string>
|
||||
<string name="dateformat_time">Ora</string>
|
||||
<string name="dateformat_date_time">Ora e data</string>
|
||||
<string name="mi2_prefs_goal_notification">Notifica raggiungimento obbiettivi</string>
|
||||
@ -500,4 +500,5 @@
|
||||
<string name="notification_channel_name">Notifiche Gadgetbridge</string>
|
||||
<string name="devicetype_xwatch">XWatch</string>
|
||||
|
||||
<string name="on">Acceso</string>
|
||||
</resources>
|
||||
|
@ -28,7 +28,7 @@
|
||||
<string name="appmananger_app_delete">Удалить</string>
|
||||
<string name="appmananger_app_delete_cache">Удалить и очистить кеш</string>
|
||||
<string name="appmananger_app_reinstall">Переустановка</string>
|
||||
<string name="appmanager_app_openinstore">Искать в Pebble Appstore</string>
|
||||
<string name="appmanager_app_openinstore">Искать в магазине Pebble</string>
|
||||
<string name="appmanager_health_activate">Активировать</string>
|
||||
<string name="appmanager_health_deactivate">Деактивировать</string>
|
||||
<string name="appmanager_hrm_activate">Включить монитор сердечного ритма</string>
|
||||
@ -466,4 +466,5 @@
|
||||
<string name="interval_thirty_minutes">раз в полчаса</string>
|
||||
<string name="interval_one_hour">раз в час</string>
|
||||
|
||||
<string name="pref_title_weather">Погода</string>
|
||||
</resources>
|
||||
|
555
app/src/main/res/values-sk/strings.xml
Normal file
555
app/src/main/res/values-sk/strings.xml
Normal file
@ -0,0 +1,555 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="app_name">Gadgetbridge</string>
|
||||
|
||||
<string name="title_activity_controlcenter">Gadgetbridge</string>
|
||||
<string name="action_settings">Nastavenia</string>
|
||||
<string name="action_debug">Ladenie</string>
|
||||
<string name="action_quit">Ukončiť</string>
|
||||
<string name="action_donate">Podporiť</string>
|
||||
<string name="controlcenter_fetch_activity_data">Načítať dáta</string>
|
||||
<string name="controlcenter_find_device">Nájsť zariadenie</string>
|
||||
<string name="controlcenter_take_screenshot">Urobiť snímku obrazovky</string>
|
||||
<string name="controlcenter_disconnect">Odpojiť</string>
|
||||
<string name="controlcenter_delete_device">Odstrániť zariadenie</string>
|
||||
<string name="controlcenter_delete_device_name">Odstrániť %1$s</string>
|
||||
<string name="controlcenter_delete_device_dialogmessage">Odstráni zariadenie a vymaže všetky dáta!</string>
|
||||
<string name="controlcenter_navigation_drawer_open">Otvoriť navigačnú lištu</string>
|
||||
<string name="controlcenter_navigation_drawer_close">Zavrieť navigačnú lištu</string>
|
||||
<string name="controlcenter_snackbar_need_longpress">Podržte kartu dlhšie pre odpojenie</string>
|
||||
<string name="controlcenter_snackbar_disconnecting">Odpájanie</string>
|
||||
<string name="controlcenter_snackbar_connecting">Pripájanie</string>
|
||||
<string name="controlcenter_snackbar_requested_screenshot">Vytvorenie snímky obrazovky zariadenia</string>
|
||||
|
||||
|
||||
<string name="title_activity_debug">Ladenie</string>
|
||||
|
||||
<string name="title_activity_appmanager">Manažér aplikácií</string>
|
||||
<string name="appmanager_cached_watchapps_watchfaces">Aplikácie v cache</string>
|
||||
<string name="appmanager_installed_watchapps">Nainštalované aplikácie</string>
|
||||
<string name="appmanager_installed_watchfaces">Nainštalované ciferníky</string>
|
||||
<string name="appmananger_app_delete">Odstrániť</string>
|
||||
<string name="appmananger_app_delete_cache">Odstrániť z cache</string>
|
||||
<string name="appmananger_app_reinstall">Nainštalovať znovu</string>
|
||||
<string name="appmanager_app_openinstore">Hľadať v Pebble Appstore</string>
|
||||
<string name="appmanager_health_activate">Aktivovať</string>
|
||||
<string name="appmanager_health_deactivate">Deaktivovať</string>
|
||||
<string name="appmanager_hrm_activate">Zapnúť meranie tepu</string>
|
||||
<string name="appmanager_hrm_deactivate">Vypnúť meranie tepu</string>
|
||||
<string name="appmanager_weather_activate">Aktivovať systémovú aplikáciu pre počasie</string>
|
||||
<string name="appmanager_weather_deactivate">Deaktivovať systémovú aplikáciu pre počasie</string>
|
||||
<string name="appmanager_weather_install_provider">Nainštalovať aplikáciu pre upozornenia na počasie</string>
|
||||
<string name="app_configure">Nastaviť</string>
|
||||
<string name="app_move_to_top">Posunúť hore</string>
|
||||
|
||||
<string name="title_activity_appblacklist">Zakázané upozornenia</string>
|
||||
|
||||
<string name="title_activity_calblacklist">Zakázané upozornenia Kalendára</string>
|
||||
|
||||
<string name="title_activity_fw_app_insaller">Inštalátor FW/Apl</string>
|
||||
<string name="fw_upgrade_notice">Nainštaluje firmware %s do Mi Band namiesto existujúceho.</string>
|
||||
<string name="fw_upgrade_notice_amazfitbip">Chystáte sa nainštalovať firmvér %s na vašom Amazfit Bip.
|
||||
\n
|
||||
\nProsím nezabudnite nainštalovať súbor .fw, potom súbor .res a nakoniec súbor .gps. Vaše hodinky sa po nainštalovaní súboru .fw reštartujú.
|
||||
\n
|
||||
\nPoznámka: Nemusíte inštalovať .res a .gps, ak sú tieto súbory presne rovnaké ako tie, ktoré boli nainštalované skôr.
|
||||
\n
|
||||
\nROBÍTE TO NA VLASTNÉ RIZIKO!</string>
|
||||
<string name="fw_upgrade_notice_amazfitcor">Chystáte sa nainštalovať firmvér %s do vášho Amazfit Cor.
|
||||
\n
|
||||
\nProsím, uistite sa, že ste nainštalovali súbor .fw a potom súbor .res. Vaše hodinky sa po inštalácii súboru .fw reštartujú.
|
||||
\n
|
||||
\nPoznámka: Nemusíte inštalovať súbor .res, ak je rovnaký ako nainštalovaný predtým.
|
||||
\n
|
||||
\nNETESTOVANÉ, MÔŽE UMŔTVIŤ VAŠE ZARIADENIE, ROBÍTE TO NA VLASTNÉ RIZIKO!</string>
|
||||
<string name="fw_multi_upgrade_notice">Nainštaluje firmvér %1$s a %2$s do Mi Band miesto existujúceho.</string>
|
||||
<string name="miband_firmware_known">Tento firmware bol testovaný a je kompatibilný s Gadgetbridge.</string>
|
||||
<string name="miband_firmware_unknown_warning">Tento firmware nebol testovaný a nemusí byť kompatibilný s Gadgetbridge.
|
||||
\n
|
||||
\nNedoporučujeme ho nahrávať do Mi Band!</string>
|
||||
<string name="miband_firmware_suggest_whitelist">Ak budete pokračovať a všetko bude dobre fungovať aj potom, upozornite vývojárov Gadgetbridge, aby označili tento firmvér: %s ako vyskúšaný</string>
|
||||
|
||||
<string name="title_activity_settings">Nastavenia</string>
|
||||
|
||||
<string name="pref_header_general">Základné nastavenia</string>
|
||||
<string name="pref_title_general_autoconnectonbluetooth">Pripojiť zariadenie ak je BT zapnutý</string>
|
||||
<string name="pref_title_general_autostartonboot">Spúšťať automaticky</string>
|
||||
<string name="pref_title_general_autocreonnect">Automatické opätovné pripojenie</string>
|
||||
<string name="pref_title_audo_player">Preferovaný prehrávač zvukov</string>
|
||||
<string name="pref_default">Predvolené</string>
|
||||
<string name="pref_title_charts_swipe">Zapnúť možnosť potiahnutia vľavo/vpravo v grafoch aktivít</string>
|
||||
|
||||
<string name="pref_header_datetime">Dátum a čas</string>
|
||||
<string name="pref_title_datetime_syctimeonconnect">Nastaviť čas</string>
|
||||
<string name="pref_summary_datetime_syctimeonconnect">Nastaviť čas počas pripojenia a pri zmene času v Androide</string>
|
||||
|
||||
<string name="pref_title_theme">Téma aplikácie</string>
|
||||
<string name="pref_theme_light">Svetlá</string>
|
||||
<string name="pref_theme_dark">Tmavá</string>
|
||||
|
||||
<string name="pref_title_language">Jazyk</string>
|
||||
|
||||
<string name="pref_title_minimize_priority">Skryť upozornenia Gadgetbridge</string>
|
||||
<string name="pref_summary_minimize_priority_off">V stavovom riadku na obrazovke uzamknutia bude zobrazená ikona a upozornenie</string>
|
||||
<string name="pref_summary_minimize_priority_on">V stavovom riadku na obrazovke uzamknutia nebude zobrazená ikona a upozornenie</string>
|
||||
|
||||
<string name="pref_header_notifications">Upozornenia</string>
|
||||
<string name="pref_title_notifications_repetitions">Opakovanie</string>
|
||||
<string name="pref_title_notifications_call">Hovory</string>
|
||||
<string name="pref_title_notifications_sms">SMS</string>
|
||||
<string name="pref_title_notifications_pebblemsg">Správy Pebble</string>
|
||||
<string name="pref_summary_notifications_pebblemsg">Podpora pre aplikácie, ktoré posielajú upozornenia do Pebble cez PebbleKit.</string>
|
||||
<string name="pref_title_notifications_generic">Prístup k upozorneniam</string>
|
||||
<string name="pref_title_whenscreenon">Upozornenia aj pri zapnutej obrazovke</string>
|
||||
<string name="pref_title_notification_filter">Nerušiť</string>
|
||||
<string name="pref_summary_notification_filter">Neposielať nechcené upozornenia v režime Nerušiť</string>
|
||||
<string name="pref_title_transliteration">Náhrada diakritiky</string>
|
||||
<string name="pref_summary_transliteration">Toto zapnite, ak vaše zariadenie nepodporuje písma (znaky s diakritikou) pre vás jazyk</string>
|
||||
|
||||
<string name="always">Vždy</string>
|
||||
<string name="when_screen_off">Pri vypnutej obrazovke</string>
|
||||
<string name="never">Nikdy</string>
|
||||
|
||||
<string name="pref_header_privacy">Súkromie</string>
|
||||
<string name="pref_title_call_privacy_mode">Ochrana súkromia pri hovore</string>
|
||||
<string name="pref_call_privacy_mode_off">Zobraziť meno a číslo</string>
|
||||
<string name="pref_call_privacy_mode_name">Skryť meno, ale zobraziť číslo</string>
|
||||
<string name="pref_call_privacy_mode_number">Skryť číslo, ale zobraziť meno</string>
|
||||
<string name="pref_call_privacy_mode_complete">Skryť meno aj číslo</string>
|
||||
|
||||
<string name="pref_title_weather">Počasie</string>
|
||||
<string name="pref_title_weather_location">Poloha pre počasie (CM/LOS)</string>
|
||||
|
||||
<string name="pref_blacklist">Zakázané aplikácie (bez upozornení)</string>
|
||||
<string name="pref_blacklist_calendars">Zakázané kalendáre</string>
|
||||
|
||||
<string name="pref_header_cannned_messages">Potlačené správy</string>
|
||||
<string name="pref_title_canned_replies">Odpovede</string>
|
||||
<string name="pref_title_canned_reply_suffix">Bežná prípona</string>
|
||||
<string name="pref_title_canned_messages_dismisscall">Zamietnuté hovory</string>
|
||||
<string name="pref_title_canned_messages_set">Aktualizovať na Pebble</string>
|
||||
|
||||
<string name="pref_header_development">Vývojárske nastavenia</string>
|
||||
<string name="pref_title_development_miaddr">Adresa Mi Band</string>
|
||||
|
||||
<string name="pref_title_pebble_settings">Nastavenia Pebble</string>
|
||||
|
||||
<string name="pref_header_activitytrackers">Sledovače aktivity</string>
|
||||
<string name="pref_title_pebble_activitytracker">Preferovaný sledovač aktivity</string>
|
||||
<string name="pref_title_pebble_sync_health">Synchronizovať Pebble Health</string>
|
||||
<string name="pref_title_pebble_sync_misfit">Synchronizovať Misfit</string>
|
||||
<string name="pref_title_pebble_sync_morpheuz">Synchronizovať Morpheuz</string>
|
||||
|
||||
<string name="pref_title_enable_outgoing_call">Podpora odchádzjúcich hovorov</string>
|
||||
<string name="pref_summary_enable_outgoing_call">Vypnutím tiež prestanú u Pebble 2/LE vibrácie u odchádzajúcich hovorov</string>
|
||||
|
||||
<string name="pref_title_enable_pebblekit">Povoliť prístup tretích strán k aplikácii Android</string>
|
||||
<string name="pref_summary_enable_pebblekit">Povoliť experimentálnu podporu pre aplikácie Androidu cez PebbleKit</string>
|
||||
|
||||
<string name="pref_header_pebble_timeline">Časová os Pebble</string>
|
||||
<string name="pref_title_sunrise_sunset">Východ a západ slnka</string>
|
||||
<string name="pref_summary_sunrise_sunset">Posielať časy východu a západu slnka podľa umiestnenia do Pebble časovej osi</string>
|
||||
<string name="pref_title_enable_calendar_sync">Synchronizácia kalendára</string>
|
||||
<string name="pref_summary_enable_calendar_sync">Odosielať udalosti kalendára na časovú os</string>
|
||||
|
||||
<string name="pref_title_autoremove_notifications">Automaticky odstraňovať skryté upozornenia</string>
|
||||
<string name="pref_summary_autoremove_notifications">Upozornenia budú z Pebble odstránené automaticky, ak boli skryté na zariadení s Androidom</string>
|
||||
|
||||
<string name="pref_title_pebble_privacy_mode">Režim súkromia</string>
|
||||
<string name="pref_pebble_privacy_mode_off">Bežné upozornenia</string>
|
||||
<string name="pref_pebble_privacy_mode_content">Posunúť text upozornenia mimo obrazovku</string>
|
||||
<string name="pref_pebble_privacy_mode_complete">Zobraziť iba ikonu notifikácia</string>
|
||||
|
||||
<string name="pref_header_location">Poloha</string>
|
||||
<string name="pref_title_location_aquire">Zistiť polohu</string>
|
||||
<string name="pref_title_location_latitude">Z. šírka</string>
|
||||
<string name="pref_title_location_longitude">Z. dĺžka</string>
|
||||
<string name="pref_title_location_keep_uptodate">Aktualizovať polohu</string>
|
||||
<string name="pref_summary_location_keep_uptodate">Pri spustení zistiť aktuálnu polohu, uloženú polohu použiť ako záložnú</string>
|
||||
|
||||
<string name="toast_enable_networklocationprovider">Povoľte zisťovanie polohy podľa siete</string>
|
||||
<string name="toast_aqurired_networklocation">Poloha zistená</string>
|
||||
|
||||
<string name="pref_title_pebble_forceprotocol">Vynútiť protokol upozornení</string>
|
||||
<string name="pref_summary_pebble_forceprotocol">Táto voľba vynúti použitie najnovšieho protokolu upozornení podľa verzie firmware. ZAPNITE IBA AK VIETE, ČO ROBÍTE!</string>
|
||||
<string name="pref_title_pebble_forceuntested">Povoliť netestované funkcie</string>
|
||||
<string name="pref_summary_pebble_forceuntested">Povolí funkcie, ktoré neboli testované. ZAPNITE IBA AK VIETE, ČO ROBÍTE!</string>
|
||||
<string name="pref_title_pebble_forcele">Vždy preferovať BLE</string>
|
||||
<string name="pref_summary_pebble_forcele">"Použiť experimentálnu podporu Pebble LE pre všetky Pebble zariadenia namiesto klasického BT. Vyžaduje spárovanie Pebble LE \" po pripojení bez LE"</string>
|
||||
<string name="pref_title_pebble_mtu_limit">Pebble 2/LE GATT MTU ohraničenie</string>
|
||||
<string name="pref_summary_pebble_mtu_limit">Ak vaše Pebble 2/Pebble LE nepracuje správne, skúste toto nastavenie pre omezenie MTU (povolený rozsah 20-512)</string>
|
||||
<string name="pref_title_pebble_enable_applogs">Zapnúť logovanie Watch App</string>
|
||||
<string name="pref_summary_pebble_enable_applogs">Spôsobí, že logy z aplikácií v hodinkách budú zaznamenávané aplikáciou Gadgetbridge (vyžaduje opätovné pripojenie)</string>
|
||||
<string name="pref_title_pebble_always_ack_pebblekit">Predčasné potvrdenie (ACK) pre PebbleKit</string>
|
||||
<string name="pref_summary_pebble_always_ack_pebblekit">Spôsobí, že správy odosielané externým aplikáciám tretích strán budú vždy a okamžite potvrdené</string>
|
||||
<string name="pref_title_pebble_enable_bgjs">Zapnúť JS na pozadí</string>
|
||||
<string name="pref_summary_pebble_enable_bgjs">Ak je zapnuté, umožňuje hodinám zobrazovať počasie, údaje o batérii atď.</string>
|
||||
|
||||
<string name="pref_title_pebble_reconnect_attempts">Pokusov o znovupripojenie</string>
|
||||
|
||||
<string name="pref_title_unit_system">Merné jednotky</string>
|
||||
<string name="pref_title_timeformat">Formát času</string>
|
||||
<string name="pref_title_screentime">Čas zapnutia obrazovky</string>
|
||||
<string name="prefs_title_all_day_heart_rate">Celodenné meranie tepu</string>
|
||||
<string name="preferences_hplus_settings">Nastavenia HPlus/Makibes</string>
|
||||
|
||||
<string name="pref_header_auto_export">Automatický export</string>
|
||||
<string name="pref_title_auto_export_enabled">Zapnutý/Vypnutý</string>
|
||||
<string name="pref_title_auto_export_location">Priečinok pre uloženie</string>
|
||||
<string name="pref_title_auto_export_interval">Časový interval</string>
|
||||
<string name="pref_summary_auto_export_interval">Exportovať každú %d hodinu</string>
|
||||
|
||||
<string name="not_connected">Nepripojené</string>
|
||||
<string name="connecting">Pripájanie</string>
|
||||
<string name="connected">Pripojené</string>
|
||||
<string name="unknown_state">Neznámy stav</string>
|
||||
<string name="_unknown_">(neznáme)</string>
|
||||
<string name="test">Test</string>
|
||||
<string name="test_notification">Test upozornení</string>
|
||||
<string name="this_is_a_test_notification_from_gadgetbridge">Toto je upozornenie z Gadgetbridge</string>
|
||||
<string name="bluetooth_is_not_supported_">BT nie je podporovaný.</string>
|
||||
<string name="bluetooth_is_disabled_">BT je vypnutý.</string>
|
||||
<string name="tap_connected_device_for_app_mananger">Dotknite sa pripojeného zariadenia pre zobrazenie správcu aplikácií</string>
|
||||
<string name="tap_connected_device_for_activity">Dotknite sa pripojeného zariadenia pre zobrazenie aktivít</string>
|
||||
<string name="tap_connected_device_for_vibration">Dotknite sa pripojeného zariadenia pre vibrácie</string>
|
||||
<string name="tap_a_device_to_connect">Dotknite sa pripojeného zariadenia pre pripojenie</string>
|
||||
<string name="cannot_connect_bt_address_invalid_">Nie je možné pripojiť. Je BT adresa v poriadku?</string>
|
||||
<string name="gadgetbridge_running">Gadgetbridge je spustený</string>
|
||||
<string name="installing_binary_d_d">Instalujem binárny súbor %1$d/%2$d</string>
|
||||
<string name="installation_failed_">Inštalácia zlyhala</string>
|
||||
<string name="installation_successful">Inštalácia bola úspešná</string>
|
||||
<string name="firmware_install_warning">CHCETE INŠTALOVAŤ FIRMWARE, POKRAČUJTE NA VLASTNÉ RIZIKO.
|
||||
\n
|
||||
\n
|
||||
\nTento firmware je pre revíziu HW: %s</string>
|
||||
<string name="app_install_info">Inštalujete aplikáciu:
|
||||
\n
|
||||
\n
|
||||
\n%1$s Verzia %2$s od %3$s
|
||||
\n</string>
|
||||
<string name="n_a">Nedostupné</string>
|
||||
<string name="initialized">Spustené</string>
|
||||
<string name="appversion_by_creator">%1$s od %2$s</string>
|
||||
<string name="title_activity_discovery">Vyhľadávanie zariadenia</string>
|
||||
|
||||
<string name="discovery_stop_scanning">Zastaviť hľadanie</string>
|
||||
<string name="discovery_start_scanning">Spustiť hľadanie</string>
|
||||
<string name="action_discover">Pripojiť nové zariadenia</string>
|
||||
<string name="device_with_rssi">%1$s (%2$s)</string>
|
||||
<string name="title_activity_android_pairing">Párovať zariadenie</string>
|
||||
<string name="android_pairing_hint">Použite párovanie BT Androidu pre spárovanie so zariadením.</string>
|
||||
<string name="title_activity_mi_band_pairing">Párovať Mi Band</string>
|
||||
<string name="pairing">Párujem s %s…</string>
|
||||
<string name="pairing_creating_bond_with">Vytváram väzbu s %1$s (%2$s)</string>
|
||||
<string name="pairing_unable_to_pair_with">Nie je možné spárovať s %1$s (%2$s)</string>
|
||||
<string name="pairing_in_progress">Vytváram väzbu: %1$s (%2$s)</string>
|
||||
<string name="pairing_already_bonded">Väzba s %1$s (%2$s) už existuje, prepájam…</string>
|
||||
<string name="message_cannot_pair_no_mac">Adresa MAC neprišla, nemôžem spárovať.</string>
|
||||
<string name="preferences_category_device_specific_settings">Nastavenia zariadenia</string>
|
||||
<string name="preferences_miband_settings">Nastavenia Mi Band / Amazfit</string>
|
||||
<string name="preferences_amazfitbip_settings">Nastavenia Amazfit Bip</string>
|
||||
<string name="male">Muž</string>
|
||||
<string name="female">Žena</string>
|
||||
<string name="other">Iné</string>
|
||||
<string name="left">Ľavej</string>
|
||||
<string name="right">Pravej</string>
|
||||
<string name="miband_pairing_using_dummy_userdata">Užívateľské dáta nie sú platné, teraz používam predvolené.</string>
|
||||
<string name="miband_pairing_tap_hint">Keď Mi Band zavibruje a blikne, dotknite sa ho niekoľkokrát po sebe.</string>
|
||||
<string name="appinstaller_install">Nainštalovať</string>
|
||||
<string name="discovery_connected_devices_hint">Nastavte svoje zariadenie pre vyhľadanie. Už pripojené zariadenia nebudú vyhľadané. Zapnite lokalizáciu (GPS) na mobiloch s Androidom 6 a vyšším. Vypnite stráženie súkromia pre Gadgetbridge, pretože môže spôsobiť nestabilitu mobilu. Ak nie je zariadenie vyhľadané v priebehu niekoľkých minút, skúste to znovu po reštarte mobilu.</string>
|
||||
<string name="discovery_note">Poznámka:</string>
|
||||
<string name="candidate_item_device_image">Obraz zariadenia</string>
|
||||
<string name="miband_prefs_alias">Názov/přezdívka</string>
|
||||
<string name="pref_header_vibration_count">Počet vibrácií</string>
|
||||
|
||||
<string name="title_activity_sleepmonitor">Sledovanie spánku</string>
|
||||
<string name="pref_write_logfiles">Zapísať logy</string>
|
||||
<string name="initializing">Spúšťanie</string>
|
||||
<string name="busy_task_fetch_activity_data">Načítavanie údajov o aktivite</string>
|
||||
<string name="sleep_activity_date_range">Od %1$s do %2$s</string>
|
||||
<string name="miband_prefs_wearside">Na ktorej ruke nosíte?</string>
|
||||
<string name="pref_screen_vibration_profile">Profil vibrácií</string>
|
||||
|
||||
<string name="vibration_profile_staccato">Staccato</string>
|
||||
<string name="vibration_profile_short">Krátké</string>
|
||||
<string name="vibration_profile_medium">Stredné</string>
|
||||
<string name="vibration_profile_long">Dlhé</string>
|
||||
<string name="vibration_profile_waterdrop">Kvapka</string>
|
||||
<string name="vibration_profile_ring">Zvonenie</string>
|
||||
<string name="vibration_profile_alarm_clock">Budík</string>
|
||||
<string name="miband_prefs_vibration">Vibrácie</string>
|
||||
|
||||
<string name="vibration_try">Vyskúšať</string>
|
||||
<string name="pref_screen_notification_profile_sms">Upozornenia na SMS</string>
|
||||
<string name="pref_header_vibration_settings">Nastavenia vibrácií</string>
|
||||
<string name="pref_screen_notification_profile_generic">Bežné upozornenia</string>
|
||||
<string name="pref_screen_notification_profile_email">Upozornenia na emaily</string>
|
||||
<string name="pref_screen_notification_profile_incoming_call">Upozornenia na hovory</string>
|
||||
<string name="pref_screen_notification_profile_generic_chat">Rozhovory (chat)</string>
|
||||
<string name="pref_screen_notification_profile_generic_navigation">Navigácia</string>
|
||||
<string name="pref_screen_notification_profile_generic_social">Sociálne siete</string>
|
||||
|
||||
<string name="prefs_title_heartrate_measurement_interval">Celodenné meranie tepu</string>
|
||||
<string name="interval_one_minute">Raz za minútu</string>
|
||||
<string name="interval_five_minutes">Každých 5 minút</string>
|
||||
<string name="interval_ten_minutes">Každých 10 minút</string>
|
||||
<string name="interval_thirty_minutes">Každých 30 minút</string>
|
||||
<string name="interval_one_hour">Raz za hodinu</string>
|
||||
|
||||
<string name="stats_title">Zóny rýchlosti</string>
|
||||
<string name="stats_x_axis_label">Minút celkovo</string>
|
||||
<string name="stats_y_axis_label">Krokov za minútu</string>
|
||||
|
||||
<string name="control_center_find_lost_device">Nájsť stratené zariadenie</string>
|
||||
<string name="control_center_cancel_to_stop_vibration">Zrušit pro zastavení vibrací.</string>
|
||||
<string name="title_activity_charts">Vaše aktivity</string>
|
||||
<string name="title_activity_set_alarm">Nastaviť budíky</string>
|
||||
<string name="controlcenter_start_configure_alarms">Nastavenie budíkov</string>
|
||||
<string name="title_activity_alarm_details">Detaily budenia</string>
|
||||
<string name="alarm_sun_short">Ne</string>
|
||||
<string name="alarm_mon_short">Po</string>
|
||||
<string name="alarm_tue_short">Ut</string>
|
||||
<string name="alarm_wed_short">St</string>
|
||||
<string name="alarm_thu_short">Št</string>
|
||||
<string name="alarm_fri_short">Pi</string>
|
||||
<string name="alarm_sat_short">So</string>
|
||||
<string name="alarm_smart_wakeup">Inteligentné buzdenie</string>
|
||||
<string name="user_feedback_miband_set_alarms_failed">Nepodarilo sa nastaviť budík, skúste to znova!</string>
|
||||
<string name="user_feedback_miband_set_alarms_ok">Budík bol odoslaný do zariadenia!</string>
|
||||
<string name="chart_no_data_synchronize">Chýbajú dáta, mám ich stiahnuť?</string>
|
||||
<string name="user_feedback_miband_activity_data_transfer">Stiahnuť dáta %1$s z %2$s</string>
|
||||
<string name="miband_prefs_fitness_goal">Cieľový počet krokov za deň</string>
|
||||
<string name="dbaccess_error_executing">Chyba spustenia \'%1$s\'</string>
|
||||
<string name="controlcenter_start_activitymonitor">Vaša aktivita (pokusná)</string>
|
||||
<string name="cannot_connect">Nedá sa pripojiť k: %1$s</string>
|
||||
<string name="installer_activity_unable_to_find_handler">Nemôžem nájsť program na inštaláciu tohto súboru.</string>
|
||||
<string name="pbw_install_handler_unable_to_install">Nepodarilo sa nainštalovať súbor: %1$s</string>
|
||||
<string name="pbw_install_handler_hw_revision_mismatch">Nemožno nainštalovať vybraný firmware: nezhoduje sa HW revíziou vášho Pebble.</string>
|
||||
<string name="installer_activity_wait_while_determining_status">Vyčkajte na zistenie stavu inštalácie…</string>
|
||||
<string name="notif_battery_low_title">Nízka úroveň nabitia batérie v zariadení!</string>
|
||||
<string name="notif_battery_low_percent">%1$s zostáva v batérii: %2$s%%</string>
|
||||
<string name="notif_battery_low_bigtext_last_charge_time">Posledné nabitie: %s
|
||||
\n</string>
|
||||
<string name="notif_battery_low_bigtext_number_of_charges">Počet nabití: %s</string>
|
||||
<string name="notif_export_failed_title">Export databázy zlyhal! Skontrolujte svoje nastavenia.</string>
|
||||
<string name="sleepchart_your_sleep">Váš spánok</string>
|
||||
<string name="weeksleepchart_sleep_a_week">Spánok za týždeň</string>
|
||||
<string name="weeksleepchart_today_sleep_description">Spánok dnes, cieľ: %1$s</string>
|
||||
<string name="weekstepschart_steps_a_week">Kroky za týždeň</string>
|
||||
<string name="activity_sleepchart_activity_and_sleep">Vaša aktivita a spánok</string>
|
||||
<string name="updating_firmware">Nahrávam firmvér…</string>
|
||||
<string name="fwapp_install_device_not_ready">Súbor sa nedá nainštalovať, zariadenie nie je pripravené.</string>
|
||||
<string name="installhandler_firmware_name">%1$s: %2$s %3$s</string>
|
||||
<string name="miband_fwinstaller_compatible_version">Kompatibilná verzia</string>
|
||||
<string name="miband_fwinstaller_untested_version">Netestovaná verzia!</string>
|
||||
<string name="fwappinstaller_connection_state">Připojené k zariadeniu: %1$s</string>
|
||||
<string name="pbw_installhandler_pebble_firmware">Pebble firmvér %1$s</string>
|
||||
<string name="pbwinstallhandler_correct_hw_revision">Správná HW revízia</string>
|
||||
<string name="pbwinstallhandler_incorrect_hw_revision">Revízía HW nie je správna!</string>
|
||||
<string name="pbwinstallhandler_app_item">%1$s (%2$s)</string>
|
||||
<string name="updatefirmwareoperation_updateproblem_do_not_reboot">Pri prenose firmvéru nastali ťažkosti. Nereštartujte svoj Mi Band!</string>
|
||||
<string name="updatefirmwareoperation_metadata_updateproblem">Problém pri prenose metadát firmvéru</string>
|
||||
<string name="updatefirmwareoperation_update_complete">Inštalácia firmvéru je kompletná</string>
|
||||
<string name="updatefirmwareoperation_update_complete_rebooting">Inštalácia firmvéru je kompletná, reštartujem zariadenie…</string>
|
||||
<string name="updatefirmwareoperation_write_failed">Zápis firmvéru zlyhal</string>
|
||||
<string name="chart_steps">Krokov</string>
|
||||
<string name="calories">Kalórií</string>
|
||||
<string name="distance">Vzdialenosť</string>
|
||||
<string name="clock">Meranie času</string>
|
||||
<string name="heart_rate">Tep srdca</string>
|
||||
<string name="battery">Batéria</string>
|
||||
<string name="liveactivity_live_activity">Súčasná aktivita</string>
|
||||
<string name="weeksteps_today_steps_description">Krokov dnes, cieľ: %1$s</string>
|
||||
<string name="pref_title_dont_ack_transfer">Nepotvrdzovať prenos dát o aktivite</string>
|
||||
<string name="pref_summary_dont_ack_transfers">Pokiaľ nie je prenos dát potvrdený náramkom, potom nebudú vymazané. To je užitečné, pokiaľ je GB používaný dohromady s inou aplikáciou.</string>
|
||||
<string name="pref_summary_keep_data_on_device">Zachová dáta o aktivite v Mi Band aj po synchronizácii. To je užitečné, ak je GB používaný dohromady s inou aplikáciou.</string>
|
||||
<string name="pref_title_low_latency_fw_update">Použiť režim z nízkym oneskorením pri aktualizácii firmvéru</string>
|
||||
<string name="pref_summary_low_latency_fw_update">Môže to pomôcť u zariadenia, kde aktualizácia firmvéru zlyhala</string>
|
||||
|
||||
<string name="live_activity_steps_history">História krokov</string>
|
||||
<string name="live_activity_current_steps_per_minute">Dnes krokov/min</string>
|
||||
<string name="live_activity_total_steps">Celkom krokov</string>
|
||||
<string name="live_activity_steps_per_minute_history">História krokov za minútu</string>
|
||||
<string name="live_activity_start_your_activity">Začať aktivitu</string>
|
||||
<string name="abstract_chart_fragment_kind_activity">Aktivita</string>
|
||||
<string name="abstract_chart_fragment_kind_light_sleep">Ľahký spánok</string>
|
||||
<string name="abstract_chart_fragment_kind_deep_sleep">Hlboký spánok</string>
|
||||
<string name="abstract_chart_fragment_kind_not_worn">Nenosené</string>
|
||||
<string name="device_not_connected">Nepripojené.</string>
|
||||
<string name="user_feedback_all_alarms_disabled">Všetky alarmy vypnuté</string>
|
||||
<string name="pref_title_keep_data_on_device">Zachovať dáta o aktivite v zariadení</string>
|
||||
<string name="miband_fwinstaller_incompatible_version">Nekompatibilný firmvér</string>
|
||||
<string name="fwinstaller_firmware_not_compatible_to_device">Tento firmware nie je kompatibilný s týmto zariadením</string>
|
||||
<string name="miband_prefs_reserve_alarm_calendar">Alarmy pre nadchádzajúce udalosti</string>
|
||||
<string name="miband_prefs_hr_sleep_detection">Použiť sledovanie tepu pre zlepšenie detekcie spánku</string>
|
||||
<string name="miband_prefs_device_time_offset_hours">Časový posun zariadenia v hodinách (pre zisťovanie spánku v pracujúcich na smeny)</string>
|
||||
<string name="miband2_prefs_dateformat">Mi2: formát datumu</string>
|
||||
<string name="dateformat_time">Čas</string>
|
||||
<string name="dateformat_date_time">Čas a dátum</string>
|
||||
<string name="mi2_prefs_button_actions">Akcie tlačidla</string>
|
||||
<string name="mi2_prefs_button_actions_summary">Nastavenie akcií po stlačení tlačidla Mi Band 2</string>
|
||||
<string name="mi2_prefs_button_press_count">Počet stlačení tlačidla</string>
|
||||
<string name="mi2_prefs_button_press_count_summary">Počet stlačení tlačidla na spustenie vysielania správ</string>
|
||||
<string name="mi2_prefs_button_press_broadcast">Vysielanie správ</string>
|
||||
<string name="mi2_prefs_button_press_broadcast_summary">Vysielanie správy po definovanom počte stlačenia tlačidla</string>
|
||||
<string name="mi2_prefs_button_action">Zapnúť akciu tlačidla</string>
|
||||
<string name="mi2_prefs_button_action_summary">Zapnúť akciu na zadaný počet stlačenia tlačidla</string>
|
||||
<string name="mi2_prefs_button_action_vibrate">Zapnúť vibrovanie náramku</string>
|
||||
<string name="mi2_prefs_button_action_vibrate_summary">Zapnúť vibrácie náramku pri stlačení tlačidla</string>
|
||||
<string name="mi2_prefs_button_press_count_max_delay">Maximálne oneskorenie medzi stlačeniami</string>
|
||||
<string name="mi2_prefs_button_press_count_max_delay_summary">Maximálne oneskorenie medzi stlačením tlačidla v milisekundách</string>
|
||||
<string name="mi2_prefs_button_press_count_match_delay">Oneskorenie po vykonaní akcie tlačidla</string>
|
||||
<string name="mi2_prefs_button_press_count_match_delay_summary">Oneskorenie po vykonaní akcie tlačidla (číslo je v button_id) alebo 0 pre okamžite</string>
|
||||
<string name="mi2_prefs_goal_notification">Upozornenie na cieľ</string>
|
||||
<string name="mi2_prefs_goal_notification_summary">Náramok zavibruje pri dosiahnutí cieľa denného počtu krokov</string>
|
||||
<string name="mi2_prefs_display_items">Zobrazenie položiek</string>
|
||||
<string name="mi2_prefs_display_items_summary">Vyberte položky zobrazené na obrazovke náramku</string>
|
||||
<string name="mi2_prefs_activate_display_on_lift">Zapnúť obrazovku pri zdvihnutí</string>
|
||||
<string name="mi2_prefs_rotate_wrist_to_switch_info">Otočením zápästia prepnúť typ informácie</string>
|
||||
<string name="mi2_prefs_do_not_disturb">Nerušiť</string>
|
||||
<string name="mi2_prefs_do_not_disturb_summary">Náramok nebude prijímať upozornenia, pokiaľ je aktívny režim Nerušiť</string>
|
||||
<string name="mi2_prefs_inactivity_warnings">Upozornenia na nečinnosť</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_summary">Náramok zavibruje, keď budete zadaný čas bez pohybu</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_threshold">Limit času bez pohybu (v minútach)</string>
|
||||
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Vypnutie upozornení na nečinnosť počas zadaného časového intervalu</string>
|
||||
<string name="mi2_prefs_do_not_disturb_start">Od</string>
|
||||
<string name="mi2_prefs_do_not_disturb_end">Do</string>
|
||||
|
||||
<string name="automatic">Automaticky</string>
|
||||
<string name="simplified_chinese">Zjednodušená Čínština</string>
|
||||
<string name="traditional_chinese">Tradičná Čísština</string>
|
||||
<string name="english">Angličtina</string>
|
||||
<string name="spanish">Španielčina</string>
|
||||
|
||||
<string name="FetchActivityOperation_about_to_transfer_since">Prenášam dáta od %1$s</string>
|
||||
|
||||
<string name="waiting_for_reconnect">Čakanie na opätovné pripojenie</string>
|
||||
|
||||
<string name="activity_prefs_about_you">Vaše údaje</string>
|
||||
<string name="activity_prefs_year_birth">Rok narodenia</string>
|
||||
<string name="activity_prefs_gender">Pohlavie</string>
|
||||
<string name="activity_prefs_height_cm">Výška v cm</string>
|
||||
<string name="activity_prefs_weight_kg">Váha v kg</string>
|
||||
|
||||
<string name="authenticating">Overovanie</string>
|
||||
<string name="authentication_required">Vyžiadané overenie</string>
|
||||
|
||||
<string name="appwidget_text">Spí...</string>
|
||||
<string name="add_widget">Pridať miniaplikáciu</string>
|
||||
<string name="activity_prefs_sleep_duration">Preferovaná doba spánku v hodinách</string>
|
||||
<string name="appwidget_alarms_set">Budík nastavený na %1$02d:%2$02d</string>
|
||||
<string name="device_hw">Revízia HW: %1$s</string>
|
||||
<string name="device_fw">Verzia FW: %1$s</string>
|
||||
<string name="error_creating_directory_for_logfiles">Chyba pri vytváraní adresára pre logy: %1$s</string>
|
||||
<string name="DEVINFO_HR_VER">"Tep: "</string>
|
||||
<string name="updatefirmwareoperation_update_in_progress">Prebieha aktualizácia firmvéru</string>
|
||||
<string name="updatefirmwareoperation_firmware_not_sent">Firmvér nebol odoslaný</string>
|
||||
<string name="charts_legend_heartrate">Tep srdca</string>
|
||||
<string name="live_activity_heart_rate">Tep srdca</string>
|
||||
|
||||
<string name="pref_title_pebble_health_store_raw">Uložiť hrubý záznam do databázy</string>
|
||||
<string name="pref_summary_pebble_health_store_raw">Ak je zaškrtnuté, tak sú dáta uložené v pôvodnej podobe pre neskoršie vyhodnotenie. Databáza bude v tom prípade väčšia!</string>
|
||||
<string name="action_db_management">Správa databázy</string>
|
||||
<string name="title_activity_db_management">Správa databázy</string>
|
||||
<string name="activity_db_management_import_export_explanation">Pre operácie s databázou sa použije nasledujúca cesta v zariadení.
|
||||
\nTáto cesta je dostupná aj pre ostatné aplikácie Androidu a aj váš počítač.
|
||||
\nExportovanú databázu (alebo miesto pre importovanú databázu) nájdete tu:</string>
|
||||
<string name="activity_db_management_merge_old_title">Vymazať pôvodnú databázu</string>
|
||||
<string name="dbmanagementactivvity_cannot_access_export_path">Nemožno pristúpiť na zadanú cestu. Kontaktujte vývojárov.</string>
|
||||
<string name="dbmanagementactivity_exported_to">Exportované do: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_exporting_db">Chyba pri exporte DB: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_exporting_shared">Chyba pri exporte preferencií: %1$s</string>
|
||||
<string name="dbmanagementactivity_import_data_title">Importovať dáta?</string>
|
||||
<string name="dbmanagementactivity_overwrite_database_confirmation">Naozaj chcete prepísať aktuálnu databázu? Všetky uložené dáta o aktivite sa stratia.</string>
|
||||
<string name="dbmanagementactivity_import_successful">Import bol úspešný.</string>
|
||||
<string name="dbmanagementactivity_error_importing_db">Chyba pri importe DB: %1$s</string>
|
||||
<string name="dbmanagementactivity_error_importing_shared">Chyba pri importe preferencií: %1$s</string>
|
||||
<string name="dbmanagementactivity_delete_activity_data_title">Vymazať dáta o aktivitách?</string>
|
||||
<string name="dbmanagementactivity_really_delete_entire_db">Naozaj chcete vymazať celú databázu? Všetky dáta o aktivitách a informácie o zariadeniach sa stratia.</string>
|
||||
<string name="dbmanagementactivity_database_successfully_deleted">Dáta boli úspešne vymazané.</string>
|
||||
<string name="dbmanagementactivity_db_deletion_failed">Mazanie dát zlyhalo.</string>
|
||||
<string name="dbmanagementactivity_delete_old_activity_db">Vymazať pôvodnú databázu?</string>
|
||||
<string name="dbmanagementactivity_delete_old_activitydb_confirmation">Naozaj chcete vyzmazať pôvodnú databázu? Dáta o aktivitách, ktorá neboli importované sa stratia.</string>
|
||||
<string name="dbmanagementactivity_old_activity_db_successfully_deleted">Pôvodná databáza bola vymazaná.</string>
|
||||
<string name="dbmanagementactivity_old_activity_db_deletion_failed">Mazanie pôvodnej databázy zlyhalo.</string>
|
||||
<string name="dbmanagementactivity_overwrite">Pprepísať</string>
|
||||
<string name="Cancel">Zrušiť</string>
|
||||
<string name="Delete">Odstrániť</string>
|
||||
|
||||
<string name="title_activity_vibration">Vibrácie</string>
|
||||
|
||||
<string name="title_activity_pebble_pairing">Párovánie Pebble</string>
|
||||
<string name="pebble_pairing_hint">Dialóg párovania by sa mal objaviť na vašom zariadení s Androidom. Ak sa tak nestane, skontrolujte panel upozornení a potvrďte párovanie. Potom potvrďte párovanie na Pebble</string>
|
||||
|
||||
<string name="weather_notification_label">Uistite sa, že tento skin je povolený v aplikácii pre upozornenia stavu počasia pre získavanie informácií z vášho Pebble.
|
||||
\n
|
||||
\nNie je potrebné nič nastavovať.
|
||||
\n
|
||||
\nAplikáciu pre počasie Pebble je možné povoliť v správe aplikácií.
|
||||
\n
|
||||
\nPodporované ciferníky ukážu počasie automaticky.</string>
|
||||
<string name="pref_title_setup_bt_pairing">Zapnúť BT párovanie</string>
|
||||
<string name="pref_summary_setup_bt_pairing">Toto vypnite v prípade problémov s pripojením</string>
|
||||
|
||||
<string name="unit_metric">Metrické</string>
|
||||
<string name="unit_imperial">Imperiálne</string>
|
||||
|
||||
<string name="timeformat_24h">24h</string>
|
||||
<string name="timeformat_am_pm">dop./odp.</string>
|
||||
|
||||
<string name="pref_screen_notification_profile_alarm_clock">Budík</string>
|
||||
|
||||
<string name="activity_web_view">Aktivity Webový pohľad</string>
|
||||
|
||||
<string name="StringUtils_sender">(%1$s)</string>
|
||||
<string name="find_device_you_found_it">Nájdené!</string>
|
||||
<string name="miband2_prefs_timeformat">Formát času Mi2</string>
|
||||
<string name="mi2_fw_installhandler_fw53_hint">Pred inštaláciou tohto firmvéru musíte nainštalovať verziu %1$s!</string>
|
||||
<string name="mi2_enable_text_notifications">Textové upozornenia</string>
|
||||
<string name="mi2_enable_text_notifications_summary">Vyžaduje nainštalovaný súbor fontu >= 1.0.1.28 and Mili_pro.ft*.</string>
|
||||
<string name="off">Vyp.</string>
|
||||
<string name="mi2_dnd_off">Vyp.</string>
|
||||
<string name="mi2_dnd_automatic">Automaticky (detekcia spánku)</string>
|
||||
<string name="mi2_dnd_scheduled">Naplánované (časový interval)</string>
|
||||
<string name="discovery_attempting_to_pair">Pokus o spárovanie s %1$s</string>
|
||||
<string name="discovery_bonding_failed_immediately">Spojenie s %1$s okamžite zlyhalo.</string>
|
||||
<string name="discovery_trying_to_connect_to">Pokušam sa spojiť s: %1$s</string>
|
||||
<string name="discovery_enable_bluetooth">Ak chcete nájsť zariadenia, povoľte funkciu Bluetooth.</string>
|
||||
<string name="discovery_successfully_bonded">Spojené s %1$s.</string>
|
||||
<string name="discovery_pair_title">Párovať s %1$s?</string>
|
||||
<string name="discovery_pair_question">Ak chcete spárovať svoje zariadenia, kliknite na Párovať. Ak to zlyhá, skúste to znovu bez párovania.</string>
|
||||
<string name="discovery_yes_pair">Párovať</string>
|
||||
<string name="discovery_dont_pair">Nepárovať</string>
|
||||
|
||||
<string name="_pebble_watch_open_on_phone">Otvoriť na telefóne</string>
|
||||
<string name="_pebble_watch_mute">Stlmiť</string>
|
||||
<string name="_pebble_watch_reply">Znovu</string>
|
||||
|
||||
<string name="kind_firmware">Firmvér</string>
|
||||
<string name="kind_invalid">Neplatné dáta</string>
|
||||
<string name="kind_font">Písmo</string>
|
||||
<string name="kind_gps">GPS Firmvér</string>
|
||||
<string name="kind_gps_almanac">Almanach GPS</string>
|
||||
<string name="kind_gps_cep">Korekcia chýb GPS</string>
|
||||
<string name="kind_resources">Zdroje</string>
|
||||
<string name="kind_watchface">Ciferník</string>
|
||||
|
||||
<string name="devicetype_unknown">Neznáme zariadenie</string>
|
||||
<string name="devicetype_test">Testovacie zariadenie</string>
|
||||
<string name="devicetype_pebble">Pebble</string>
|
||||
<string name="devicetype_miband">Mi Band</string>
|
||||
<string name="devicetype_miband2">Mi Band 2</string>
|
||||
<string name="devicetype_amazfit_bip">Amazfit Bip</string>
|
||||
<string name="devicetype_amazfit_cor">Amazfit Cor</string>
|
||||
<string name="devicetype_vibratissimo">Vibratissimo</string>
|
||||
<string name="devicetype_liveview">LiveView</string>
|
||||
<string name="devicetype_hplus">HPlus</string>
|
||||
<string name="devicetype_makibes_f68">Makibes F68</string>
|
||||
<string name="devicetype_exrizu_k8">Exrizu K8</string>
|
||||
<string name="devicetype_no1_f1">No.1 F1</string>
|
||||
<string name="devicetype_teclast_h30">Teclast H30</string>
|
||||
<string name="devicetype_xwatch">XWatch</string>
|
||||
|
||||
<string name="choose_auto_export_location">Vyberte umiestnenie exportu</string>
|
||||
<string name="notification_channel_name">Gadgetbridge upozornenia</string>
|
||||
<string name="controlcenter_connect">Pripojiť</string>
|
||||
</resources>
|
@ -532,7 +532,7 @@
|
||||
<string name="notif_export_failed_title">数据库导出失败! 请检查您的设置。</string>
|
||||
<string name="miband_prefs_reserve_alarm_calendar">预警未来事件</string>
|
||||
<string name="mi2_prefs_button_press_broadcast_summary">在指定按键次数后发送消息</string>
|
||||
<string name="DEVINFO_HR_VER">"设备版本: "</string>
|
||||
<string name="DEVINFO_HR_VER">"心率: "</string>
|
||||
<string name="timeformat_am_pm">AM/PM</string>
|
||||
|
||||
<string name="devicetype_vibratissimo">Vibratissimo</string>
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
<string-array name="pref_language_options">
|
||||
<item name="default">System Default</item>
|
||||
<item name="cz">Čeština</item>
|
||||
<item name="de">Deutsch</item>
|
||||
<item name="en">English</item>
|
||||
<item name="es">Español</item>
|
||||
@ -25,10 +26,12 @@
|
||||
<item name="ko">한국어</item>
|
||||
<item name="ja">日本語</item>
|
||||
<item name="hu">Magyar</item>
|
||||
<item name="sk">Slovenčina</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_language_values">
|
||||
<item>default</item>
|
||||
<item>cz</item>
|
||||
<item>de</item>
|
||||
<item>en</item>
|
||||
<item>es</item>
|
||||
@ -41,6 +44,7 @@
|
||||
<item>ko</item>
|
||||
<item>ja</item>
|
||||
<item>hu</item>
|
||||
<item>sk</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="notification_mode">
|
||||
@ -146,6 +150,17 @@
|
||||
<item>@string/p_scheduled</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="activate_display_on_lift">
|
||||
<item>@string/off</item>
|
||||
<item>@string/on</item>
|
||||
<item>@string/mi2_dnd_scheduled</item>
|
||||
</string-array>
|
||||
<string-array name="activate_display_on_lift_values">
|
||||
<item>@string/p_off</item>
|
||||
<item>@string/p_on</item>
|
||||
<item>@string/p_scheduled</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="pref_mi2_display_items">
|
||||
<item>@string/chart_steps</item>
|
||||
<item>@string/distance</item>
|
||||
@ -235,5 +250,4 @@
|
||||
<item>1800</item>
|
||||
<item>3600</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -488,6 +488,7 @@
|
||||
<string name="mi2_fw_installhandler_fw53_hint">You need to install version %1$s before installing this firmware!</string>
|
||||
<string name="mi2_enable_text_notifications">Text notifications</string>
|
||||
<string name="mi2_enable_text_notifications_summary"><![CDATA[Needs firmware >= 1.0.1.28 and Mili_pro.ft* installed.]]></string>
|
||||
<string name="on">On</string>
|
||||
<string name="off">Off</string>
|
||||
<string name="mi2_dnd_off">Off</string>
|
||||
<string name="mi2_dnd_automatic">Automatic (sleep detection)</string>
|
||||
|
@ -20,6 +20,7 @@
|
||||
<item name="p_battery" type="string">battery</item>
|
||||
|
||||
<item name="p_off" type="string">off</item>
|
||||
<item name="p_on" type="string">on</item>
|
||||
<item name="p_automatic" type="string">automatic</item>
|
||||
<item name="p_scheduled" type="string">scheduled</item>
|
||||
|
||||
|
@ -1,5 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog>
|
||||
<release version="0.25.1" versioncode="125">
|
||||
<change>Amazfit Cor: Try to send weather location instead of AQI</change>
|
||||
<change>Amazfit Bip: Support setting start end end time for background light when lifting the arm</change>
|
||||
<change>Pebble: various fixes and improvemnets for background javascript</change>
|
||||
<change>Explicity ask for RECEIVE_SMS permission to fix problems with Android 8</change>
|
||||
</release>
|
||||
<release version="0.25.0" versioncode="124">
|
||||
<change>Inital suport for Xwatch</change>
|
||||
<change>Move the connected device to top in control center</change>
|
||||
|
@ -122,14 +122,37 @@
|
||||
android:summary="@string/mi2_prefs_display_items_summary"
|
||||
android:title="@string/mi2_prefs_display_items"/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="mi2_activate_display_on_lift_wrist"
|
||||
android:title="@string/mi2_prefs_activate_display_on_lift" />
|
||||
<PreferenceScreen
|
||||
android:persistent="false"
|
||||
android:title="@string/mi2_prefs_activate_display_on_lift">
|
||||
|
||||
<!-- workaround for missing toolbar -->
|
||||
<PreferenceCategory android:title="@string/mi2_prefs_activate_display_on_lift" />
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="@string/p_off"
|
||||
android:entries="@array/activate_display_on_lift"
|
||||
android:entryValues="@array/activate_display_on_lift_values"
|
||||
android:key="activate_display_on_lift_wrist"
|
||||
android:summary="%s"
|
||||
android:title="@string/mi2_prefs_activate_display_on_lift" />
|
||||
|
||||
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
|
||||
android:defaultValue="00:00"
|
||||
android:dependency="activate_display_on_lift_wrist"
|
||||
android:key="display_on_lift_start"
|
||||
android:title="@string/mi2_prefs_do_not_disturb_start" />
|
||||
|
||||
<nodomain.freeyourgadget.gadgetbridge.util.TimePreference
|
||||
android:defaultValue="00:00"
|
||||
android:dependency="activate_display_on_lift_wrist"
|
||||
android:key="display_on_lift_end"
|
||||
android:title="@string/mi2_prefs_do_not_disturb_end" />
|
||||
|
||||
</PreferenceScreen>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:dependency="mi2_activate_display_on_lift_wrist"
|
||||
android:dependency="activate_display_on_lift_wrist"
|
||||
android:key="mi2_rotate_wrist_to_switch_info"
|
||||
android:title="@string/mi2_prefs_rotate_wrist_to_switch_info" />
|
||||
|
||||
|
@ -6,7 +6,7 @@ buildscript {
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.0.1'
|
||||
classpath 'com.android.tools.build:gradle:3.1.0'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
4
fastlane/metadata/android/en-US/changelogs/125.txt
Normal file
4
fastlane/metadata/android/en-US/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Amazfit Cor: Try to send weather location instead of AQI
|
||||
* Amazfit Bip: Support setting start end end time for background light when lifting the arm
|
||||
* Pebble: various fixes and improvemnets for background javascript
|
||||
* Explicity ask for RECEIVE_SMS permission to fix problems with Android 8
|
@ -17,4 +17,4 @@ org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryErro
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
android.enableAapt2=false
|
||||
android.enableAapt2=true
|
||||
|
Loading…
Reference in New Issue
Block a user