1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-04 09:17:29 +01:00

Merge pull request #1 from Freeyourgadget/master

Version to 0.39.0
This commit is contained in:
Mamut 2019-11-19 12:26:33 +02:00 committed by GitHub
commit aefe7017f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
80 changed files with 2315 additions and 877 deletions

31
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,31 @@
---
name: Bug report
about: Create a report to help us improve
---
#### Before reporting a bug, please confirm the following:
- [ ] I have read the [wiki](https://github.com/Freeyourgadget/Gadgetbridge/wiki), and I didn't find a solution to my problem / an answer to my question.
- [ ] I have searched the [issues](https://github.com/Freeyourgadget/Gadgetbridge/issues), and I didn't find a solution to my problem / an answer to my question.
- [ ] If you upload an image or other content, please make sure you have read and understood the [github policies and terms of services](https://help.github.com/articles/github-terms-of-service/#1-responsibility-for-user-generated-content)
### I got Gadgetbridge from:
* [ ] F-Droid
* [ ] I built it myself from source code (specify tag / commit)
If you got it from Google Play, please note [that version](https://github.com/TaaviE/Gadgetbridge) is unofficial and not supported here; it's also often quite outdated. Please switch to one of the above versions if you can.
#### Your issue is:
*If possible, please attach [logs](https://github.com/Freeyourgadget/Gadgetbridge/wiki/Log-Files)! that might help identifying the problem.*
#### Your wearable device is:
*Please specify model and firmware version if possible*
#### Your android version is:
#### Your Gadgetbridge version is:
*New issues about already solved/documented topics could be closed without further comments. Same for too generic or incomplete reports.*

View File

@ -1,8 +1,26 @@
### Changelog
#### Version 0.39.0
* Amazfit GTS: Initial and incomplete support, mostly untested
* Add forward/backward buttons to charts for faster navigation
* Debug: allow to reset last fetch date for Huami devices
#### Version 0.38.0
* Amazfit GTR: Initial and incomplete support, mostly untested
* Amazfit Bip: add Portuguese to the list of selectable languages
* Mi Band 4: Enable emoji font setting
* Makibes HR3: Support the english version
* Makibes HR3: Enable bluetooth pairing for working reconnection
* Work around crash when trying to display changelog
* Sleep detection settings: Rolling 24 hours (existing style) or Noon to noon
* Add alternative color to heartrate in chart settings
#### Version 0.37.1
* Amazfit Bip Lite: Support flashing firmware and watchfaces
#### Version 0.37.0
* Initial Makibes HR3 support
* Amazfit Bip Lite: Inittal working support, firmware update is disabled for now (we do not have any firmware for testing)
* Amazfit Bip Lite: Initial working support, firmware update is disabled for now (we do not have any firmware for testing)
* Amazfit Cor 2: Enable Emoji Font setting and 3rd party HR access
* Find Phone now also vibration in addition to playing the ring tone
* ID115: All settings are now per-device

View File

@ -25,8 +25,8 @@ android {
targetSdkVersion 27
// Note: always bump BOTH versionCode and versionName!
versionName "0.37.0"
versionCode 158
versionName "0.39.0"
versionCode 161
vectorDrawables.useSupportLibrary = true
}
buildTypes {

View File

@ -31,6 +31,7 @@ import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
@ -202,7 +203,12 @@ public class ControlCenterv2 extends AppCompatActivity
ChangeLog cl = createChangeLog();
if (cl.isFirstRun()) {
try {
cl.getLogDialog().show();
} catch (Exception ignored){
GB.toast(getBaseContext(), "Error showing Changelog", Toast.LENGTH_LONG, GB.ERROR);
}
}
GBApplication.deviceService().start();
@ -285,7 +291,11 @@ public class ControlCenterv2 extends AppCompatActivity
return true;
case R.id.external_changelog:
ChangeLog cl = createChangeLog();
cl.getFullLogDialog().show();
try {
cl.getLogDialog().show();
} catch (Exception ignored) {
GB.toast(getBaseContext(), "Error showing Changelog", Toast.LENGTH_LONG, GB.ERROR);
}
return true;
}

View File

@ -19,6 +19,7 @@
package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@ -26,30 +27,35 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.core.app.NavUtils;
import androidx.core.app.NotificationCompat;
import androidx.core.app.RemoteInput;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Objects;
import androidx.core.app.NavUtils;
import androidx.core.app.NotificationCompat;
import androidx.core.app.RemoteInput;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
@ -70,10 +76,6 @@ public class DebugActivity extends AbstractGBActivity {
private static final String EXTRA_REPLY = "reply";
private static final String ACTION_REPLY
= "nodomain.freeyourgadget.gadgetbridge.DebugActivity.action.reply";
private Spinner sendTypeSpinner;
private EditText editContent;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@ -94,6 +96,8 @@ public class DebugActivity extends AbstractGBActivity {
}
}
};
private Spinner sendTypeSpinner;
private EditText editContent;
private void handleRealtimeSample(Serializable extra) {
if (extra instanceof ActivitySample) {
@ -219,6 +223,43 @@ public class DebugActivity extends AbstractGBActivity {
}
});
Button setFetchTimeButton = findViewById(R.id.SetFetchTimeButton);
setFetchTimeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar currentDate = Calendar.getInstance();
Context context = getApplicationContext();
if (context instanceof GBApplication) {
GBApplication gbApp = (GBApplication) context;
final GBDevice device = gbApp.getDeviceManager().getSelectedDevice();
if (device != null) {
new DatePickerDialog(DebugActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar date = Calendar.getInstance();
date.set(year, monthOfYear, dayOfMonth);
long timestamp = date.getTimeInMillis() - 1000;
GB.toast("Setting lastSyncTimeMillis: " + timestamp, Toast.LENGTH_LONG, GB.INFO);
SharedPreferences.Editor editor = GBApplication.getDeviceSpecificSharedPrefs(device.getAddress()).edit();
editor.remove("lastSyncTimeMillis"); //FIXME: key reconstruction is BAD
editor.putLong("lastSyncTimeMillis", timestamp);
editor.apply();
}
}, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DATE)).show();
} else {
GB.toast("Device not selected/connected", Toast.LENGTH_LONG, GB.INFO);
}
}
}
});
Button setMusicInfoButton = findViewById(R.id.setMusicInfoButton);
setMusicInfoButton.setOnClickListener(new View.OnClickListener() {
@Override

View File

@ -69,6 +69,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
/**
* A base class fragment to be used with ChartsActivity. The fragment can supply
@ -151,8 +152,12 @@ public abstract class AbstractChartFragment extends AbstractGBFragment {
if (intentFilterActions != null) {
mIntentFilterActions.addAll(Arrays.asList(intentFilterActions));
}
mIntentFilterActions.add(ChartsHost.DATE_NEXT);
mIntentFilterActions.add(ChartsHost.DATE_PREV);
mIntentFilterActions.add(ChartsHost.DATE_NEXT_DAY);
mIntentFilterActions.add(ChartsHost.DATE_PREV_DAY);
mIntentFilterActions.add(ChartsHost.DATE_NEXT_WEEK);
mIntentFilterActions.add(ChartsHost.DATE_PREV_WEEK);
mIntentFilterActions.add(ChartsHost.DATE_NEXT_MONTH);
mIntentFilterActions.add(ChartsHost.DATE_PREV_MONTH);
mIntentFilterActions.add(ChartsHost.REFRESH);
}
@ -170,12 +175,18 @@ public abstract class AbstractChartFragment extends AbstractGBFragment {
}
protected void init() {
Prefs prefs = GBApplication.getPrefs();
TypedValue runningColor = new TypedValue();
BACKGROUND_COLOR = GBApplication.getBackgroundColor(getContext());
LEGEND_TEXT_COLOR = DESCRIPTION_COLOR = GBApplication.getTextColor(getContext());
CHART_TEXT_COLOR = ContextCompat.getColor(getContext(), R.color.secondarytext);
if (prefs.getBoolean("chart_heartrate_color", false)) {
HEARTRATE_COLOR = ContextCompat.getColor(getContext(), R.color.chart_heartrate_alternative);
}else{
HEARTRATE_COLOR = ContextCompat.getColor(getContext(), R.color.chart_heartrate);
}
HEARTRATE_FILL_COLOR = ContextCompat.getColor(getContext(), R.color.chart_heartrate_fill);
getContext().getTheme().resolveAttribute(R.attr.chart_activity, runningColor, true);
AK_ACTIVITY_COLOR = runningColor.data;
getContext().getTheme().resolveAttribute(R.attr.chart_deep_sleep, runningColor, true);
@ -243,10 +254,18 @@ public abstract class AbstractChartFragment extends AbstractGBFragment {
String action = intent.getAction();
if (ChartsHost.REFRESH.equals(action)) {
refresh();
} else if (ChartsHost.DATE_NEXT.equals(action)) {
handleDateNext(getStartDate(), getEndDate());
} else if (ChartsHost.DATE_PREV.equals(action)) {
handleDatePrev(getStartDate(), getEndDate());
} else if (ChartsHost.DATE_NEXT_DAY.equals(action)) {
handleDate(getStartDate(), getEndDate(),+1);
} else if (ChartsHost.DATE_PREV_DAY.equals(action)) {
handleDate(getStartDate(), getEndDate(),-1);
} else if (ChartsHost.DATE_NEXT_WEEK.equals(action)) {
handleDate(getStartDate(), getEndDate(),+7);
} else if (ChartsHost.DATE_PREV_WEEK.equals(action)) {
handleDate(getStartDate(), getEndDate(),-7);
} else if (ChartsHost.DATE_NEXT_MONTH.equals(action)) {
handleDate(getStartDate(), getEndDate(),+30);
} else if (ChartsHost.DATE_PREV_MONTH.equals(action)) {
handleDate(getStartDate(), getEndDate(),-30);
}
}
@ -256,31 +275,17 @@ public abstract class AbstractChartFragment extends AbstractGBFragment {
*
* @param startDate
* @param endDate
* @param Offset
*/
protected void handleDatePrev(Date startDate, Date endDate) {
protected void handleDate(Date startDate, Date endDate, Integer Offset) {
if (isVisibleInActivity()) {
if (!shiftDates(startDate, endDate, -1)) {
if (!shiftDates(startDate, endDate, Offset)) {
return;
}
}
refreshIfVisible();
}
/**
* Default implementation shifts the dates by one day, if visible
* and calls #refreshIfVisible().
*
* @param startDate
* @param endDate
*/
protected void handleDateNext(Date startDate, Date endDate) {
if (isVisibleInActivity()) {
if (!shiftDates(startDate, endDate, +1)) {
return;
}
}
refreshIfVisible();
}
protected void refreshIfVisible() {
if (isVisibleInActivity()) {
@ -712,6 +717,29 @@ public abstract class AbstractChartFragment extends AbstractGBFragment {
return samples;
}
protected List<? extends ActivitySample> getSamplesofSleep(DBHandler db, GBDevice device) {
int SLEEP_HOUR_LIMIT = 12;
int tsStart = getTSStart();
Calendar day = GregorianCalendar.getInstance();
day.setTimeInMillis(tsStart * 1000L);
day.set(Calendar.HOUR_OF_DAY, SLEEP_HOUR_LIMIT);
day.set(Calendar.MINUTE, 0);
day.set(Calendar.SECOND, 0);
tsStart = toTimestamp(day.getTime());
int tsEnd = getTSEnd();
day.setTimeInMillis(tsEnd* 1000L);
day.set(Calendar.HOUR_OF_DAY, SLEEP_HOUR_LIMIT);
day.set(Calendar.MINUTE, 0);
day.set(Calendar.SECOND, 0);
tsEnd = toTimestamp(day.getTime());
List<ActivitySample> samples = (List<ActivitySample>) getSamples(db, device, tsStart, tsEnd);
ensureStartAndEndSamples(samples, tsStart, tsEnd);
return samples;
}
protected void ensureStartAndEndSamples(List<ActivitySample> samples, int tsStart, int tsEnd) {
if (samples == null || samples.isEmpty()) {
return;

View File

@ -175,20 +175,52 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
}
});
Button mPrevButton = findViewById(R.id.charts_previous);
Button mPrevButton = findViewById(R.id.charts_previous_day);
mPrevButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handlePrevButtonClicked();
handleButtonClicked(DATE_PREV_DAY);
}
});
Button mNextButton = findViewById(R.id.charts_next);
Button mNextButton = findViewById(R.id.charts_next_day);
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNextButtonClicked();
handleButtonClicked(DATE_NEXT_DAY);
}
});
Button mPrevWeekButton = findViewById(R.id.charts_previous_week);
mPrevWeekButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleButtonClicked(DATE_PREV_WEEK);
}
});
Button mNextWeekButton = findViewById(R.id.charts_next_week);
mNextWeekButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleButtonClicked(DATE_NEXT_WEEK);
}
});
Button mPrevMonthButton = findViewById(R.id.charts_previous_month);
mPrevMonthButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleButtonClicked(DATE_PREV_MONTH);
}
});
Button mNextMonthButton = findViewById(R.id.charts_next_month);
mNextMonthButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleButtonClicked(DATE_NEXT_MONTH);
}
});
}
private String formatDetailedDuration() {
@ -229,12 +261,8 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
return mEndDate;
}
private void handleNextButtonClicked() {
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(DATE_NEXT));
}
private void handlePrevButtonClicked() {
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(DATE_PREV));
private void handleButtonClicked(String Action) {
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(Action));
}
@Override

View File

@ -23,8 +23,14 @@ import java.util.Date;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
public interface ChartsHost {
String DATE_PREV = ChartsActivity.class.getName().concat(".date_prev");
String DATE_NEXT = ChartsActivity.class.getName().concat(".date_next");
String DATE_PREV_DAY = ChartsActivity.class.getName().concat(".date_prev_day");
String DATE_NEXT_DAY = ChartsActivity.class.getName().concat(".date_next_day");
String DATE_PREV_WEEK = ChartsActivity.class.getName().concat(".date_prev_week");
String DATE_NEXT_WEEK = ChartsActivity.class.getName().concat(".date_next_week");
String DATE_PREV_MONTH = ChartsActivity.class.getName().concat(".date_prev_month");
String DATE_NEXT_MONTH = ChartsActivity.class.getName().concat(".date_next_month");
String REFRESH = ChartsActivity.class.getName().concat(".refresh");
GBDevice getDevice();

View File

@ -44,18 +44,20 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.HeartRateUtils;
import nodomain.freeyourgadget.gadgetbridge.activities.charts.SleepAnalysis.SleepSession;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmount;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
public class SleepChartFragment extends AbstractChartFragment {
@ -72,9 +74,29 @@ public class SleepChartFragment extends AbstractChartFragment {
@Override
protected ChartsData refreshInBackground(ChartsHost chartsHost, DBHandler db, GBDevice device) {
List<? extends ActivitySample> samples = getSamples(db, device);
Prefs prefs = GBApplication.getPrefs();
List<? extends ActivitySample> samples;
if (prefs.getBoolean("chart_sleep_range_24h", false)) {
samples = getSamples(db, device);
}else{
samples = getSamplesofSleep(db, device);
}
MySleepChartsData mySleepChartsData = refreshSleepAmounts(device, samples);
if (!prefs.getBoolean("chart_sleep_range_24h", false)) {
if (mySleepChartsData.sleepSessions.size() > 0) {
long tstart = mySleepChartsData.sleepSessions.get(0).getSleepStart().getTime() / 1000;
long tend = mySleepChartsData.sleepSessions.get(mySleepChartsData.sleepSessions.size() - 1).getSleepEnd().getTime() / 1000;
for (Iterator<ActivitySample> iterator = (Iterator<ActivitySample>) samples.iterator(); iterator.hasNext(); ) {
ActivitySample sample = iterator.next();
if (sample.getTimestamp() < tstart || sample.getTimestamp() > tend) {
iterator.remove();
}
}
}
}
DefaultChartsData chartsData = refresh(device, samples);
return new MyChartsData(mySleepChartsData, chartsData);

View File

@ -16,13 +16,17 @@ import org.slf4j.LoggerFactory;
import java.util.Objects;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.devices.makibeshr3.MakibesHR3Constants;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
import nodomain.freeyourgadget.gadgetbridge.util.XTimePreference;
import nodomain.freeyourgadget.gadgetbridge.util.XTimePreferenceFragment;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.*;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_DATEFORMAT;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_SCREEN_ORIENTATION;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_TIMEFORMAT;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_WEARLOCATION;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISCONNECT_NOTIFICATION;
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISCONNECT_NOTIFICATION_END;
@ -370,25 +374,12 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat {
});
}
EditTextPreference mibandTimeOffset = findPreference(MiBandConst.PREF_MIBAND_DEVICE_TIME_OFFSET_HOURS);
if (mibandTimeOffset != null) {
mibandTimeOffset.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
}
});
}
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_BROADCAST_DELAY, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_PRESS_MAX_INTERVAL, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_PRESS_COUNT, InputType.TYPE_CLASS_NUMBER);
setInputTypeFor(MiBandConst.PREF_MIBAND_DEVICE_TIME_OFFSET_HOURS, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
setInputTypeFor(MakibesHR3Constants.PREF_FIND_PHONE_DURATION, InputType.TYPE_CLASS_NUMBER);
EditTextPreference findPhoneDuration = findPreference(MakibesHR3Constants.PREF_FIND_PHONE_DURATION);
if (findPhoneDuration != null) {
findPhoneDuration.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
}
});
}
}
static DeviceSpecificSettingsFragment newInstance(String settingsFileSuffix, @NonNull int[] supportedSettings) {
@ -431,4 +422,16 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat {
});
}
}
private void setInputTypeFor(final String preferenceKey, final int editTypeFlags) {
EditTextPreference textPreference = findPreference(preferenceKey);
if (textPreference != null) {
textPreference.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
editText.setInputType(editTypeFlags);
}
});
}
}
}

View File

@ -63,6 +63,13 @@ public class HuamiConst {
public static final String PREF_EXPOSE_HR_THIRDPARTY = "expose_hr_thirdparty";
public static final String PREF_USE_CUSTOM_FONT = "use_custom_font";
public static final String PREF_BUTTON_ACTION_ENABLE = "button_action_enable";
public static final String PREF_BUTTON_ACTION_VIBRATE = "button_action_vibrate";
public static final String PREF_BUTTON_ACTION_PRESS_COUNT = "button_action_press_count";
public static final String PREF_BUTTON_ACTION_PRESS_MAX_INTERVAL = "button_action_press_max_interval";
public static final String PREF_BUTTON_ACTION_BROADCAST_DELAY = "button_action_broadcast_delay";
public static final String PREF_BUTTON_ACTION_BROADCAST = "button_action_broadcast";
public static int toActivityKind(int rawType) {
switch (rawType) {
case TYPE_DEEP_SLEEP:

View File

@ -86,6 +86,7 @@ public class AmazfitBipCoordinator extends HuamiCoordinator {
R.xml.devicesettings_liftwrist_display,
R.xml.devicesettings_disconnectnotification,
R.xml.devicesettings_expose_hr_thirdparty,
R.xml.devicesettings_buttonactions,
R.xml.devicesettings_pairingkey
};
}

View File

@ -55,7 +55,8 @@ public class AmazfitBipLiteCoordinator extends AmazfitBipCoordinator {
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
return null;
AmazfitBipLiteFWInstallHandler handler = new AmazfitBipLiteFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@Override

View File

@ -0,0 +1,44 @@
/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele
Gobbetti
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.amazfitbip;
import android.content.Context;
import android.net.Uri;
import androidx.annotation.NonNull;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipLiteFirmwareInfo;
public class AmazfitBipLiteFWHelper extends HuamiFWHelper {
public AmazfitBipLiteFWHelper(Uri uri, Context context) throws IOException {
super(uri, context);
}
@NonNull
@Override
protected void determineFirmwareInfo(byte[] wholeFirmwareBytes) {
firmwareInfo = new AmazfitBipLiteFirmwareInfo(wholeFirmwareBytes);
if (!firmwareInfo.isHeaderValid()) {
throw new IllegalArgumentException("Not a an Amazifit Bip Lite firmware");
}
}
}

View File

@ -0,0 +1,49 @@
/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer
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.amazfitbip;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
class AmazfitBipLiteFWInstallHandler extends AbstractMiBandFWInstallHandler {
AmazfitBipLiteFWInstallHandler(Uri uri, Context context) {
super(uri, context);
}
@Override
protected String getFwUpgradeNotice() {
return mContext.getString(R.string.fw_upgrade_notice_amazfitbip_lite, helper.getHumanFirmwareVersion());
}
@Override
protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException {
return new AmazfitBipLiteFWHelper(uri, context);
}
@Override
protected boolean isSupportedDeviceType(GBDevice device) {
return device.getType() == DeviceType.AMAZFITBIP_LITE;
}
}

View File

@ -0,0 +1,99 @@
/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele
Gobbetti, João Paulo Barraca
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.amazfitgtr;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.net.Uri;
import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class AmazfitGTRCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTRCoordinator.class);
@Override
public DeviceType getDeviceType() {
return DeviceType.AMAZFITGTR;
}
@NonNull
@Override
public DeviceType getSupportedType(GBDeviceCandidate candidate) {
try {
BluetoothDevice device = candidate.getDevice();
String name = device.getName();
if (name != null && name.equalsIgnoreCase("Amazfit GTR")) {
return DeviceType.AMAZFITGTR;
}
} catch (Exception ex) {
LOG.error("unable to check device support", ex);
}
return DeviceType.UNKNOWN;
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
AmazfitGTRFWInstallHandler handler = new AmazfitGTRFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@Override
public int getBondingStyle() {
return BONDING_STYLE_REQUIRE_KEY;
}
@Override
public boolean supportsHeartRateMeasurement(GBDevice device) {
return true;
}
@Override
public boolean supportsActivityTracks() {
return true;
}
@Override
public boolean supportsWeather() {
return true;
}
@Override
public boolean supportsMusicInfo() {
return true;
}
public int[] getSupportedDeviceSpecificSettings(GBDevice device) {
return new int[]{
R.xml.devicesettings_amazfitgtr,
R.xml.devicesettings_wearlocation,
R.xml.devicesettings_liftwrist_display,
R.xml.devicesettings_disconnectnotification,
R.xml.devicesettings_expose_hr_thirdparty,
R.xml.devicesettings_pairingkey
};
}
}

View File

@ -0,0 +1,43 @@
/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele
Gobbetti
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.amazfitgtr;
import android.content.Context;
import android.net.Uri;
import androidx.annotation.NonNull;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.AmazfitGTRFirmwareInfo;
public class AmazfitGTRFWHelper extends HuamiFWHelper {
public AmazfitGTRFWHelper(Uri uri, Context context) throws IOException {
super(uri, context);
}
@Override
protected void determineFirmwareInfo(byte[] wholeFirmwareBytes) {
firmwareInfo = new AmazfitGTRFirmwareInfo(wholeFirmwareBytes);
if (!firmwareInfo.isHeaderValid()) {
throw new IllegalArgumentException("Not a an Amazifit GTR firmware");
}
}
}

View File

@ -0,0 +1,49 @@
/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer
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.amazfitgtr;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
class AmazfitGTRFWInstallHandler extends AbstractMiBandFWInstallHandler {
AmazfitGTRFWInstallHandler(Uri uri, Context context) {
super(uri, context);
}
@Override
protected String getFwUpgradeNotice() {
return mContext.getString(R.string.fw_upgrade_notice_amazfitgtr, helper.getHumanFirmwareVersion());
}
@Override
protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException {
return new AmazfitGTRFWHelper(uri, context);
}
@Override
protected boolean isSupportedDeviceType(GBDevice device) {
return device.getType() == DeviceType.AMAZFITGTR;
}
}

View File

@ -0,0 +1,83 @@
package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.net.Uri;
import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class AmazfitGTSCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTSCoordinator.class);
@Override
public DeviceType getDeviceType() {
return DeviceType.AMAZFITGTS;
}
@NonNull
@Override
public DeviceType getSupportedType(GBDeviceCandidate candidate) {
try {
BluetoothDevice device = candidate.getDevice();
String name = device.getName();
if (name != null && name.equalsIgnoreCase("Amazfit GTS")) {
return DeviceType.AMAZFITGTS;
}
} catch (Exception ex) {
LOG.error("unable to check device support", ex);
}
return DeviceType.UNKNOWN;
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
AmazfitGTSFWInstallHandler handler = new AmazfitGTSFWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
@Override
public int getBondingStyle() {
return BONDING_STYLE_REQUIRE_KEY;
}
@Override
public boolean supportsHeartRateMeasurement(GBDevice device) {
return true;
}
@Override
public boolean supportsWeather() {
return true;
}
@Override
public boolean supportsActivityTracks() {
return true;
}
@Override
public boolean supportsMusicInfo() {
return true;
}
public int[] getSupportedDeviceSpecificSettings(GBDevice device) {
return new int[]{
R.xml.devicesettings_amazfitgtr,
R.xml.devicesettings_wearlocation,
R.xml.devicesettings_liftwrist_display,
R.xml.devicesettings_disconnectnotification,
R.xml.devicesettings_expose_hr_thirdparty,
R.xml.devicesettings_pairingkey
};
}
}

View File

@ -0,0 +1,41 @@
/* Copyright (C) 2016-2019 Andreas Shimokawa, Carsten Pfeiffer, Daniele
Gobbetti
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.amazfitgts;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts.AmazfitGTSFirmwareInfo;
public class AmazfitGTSFWHelper extends HuamiFWHelper {
public AmazfitGTSFWHelper(Uri uri, Context context) throws IOException {
super(uri, context);
}
@Override
protected void determineFirmwareInfo(byte[] wholeFirmwareBytes) {
firmwareInfo = new AmazfitGTSFirmwareInfo(wholeFirmwareBytes);
if (!firmwareInfo.isHeaderValid()) {
throw new IllegalArgumentException("Not a an Amazifit GTS firmware");
}
}
}

View File

@ -0,0 +1,50 @@
/* Copyright (C) 2015-2019 Andreas Shimokawa, Carsten Pfeiffer
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.amazfitgts;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr.AmazfitGTRFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
class AmazfitGTSFWInstallHandler extends AbstractMiBandFWInstallHandler {
AmazfitGTSFWInstallHandler(Uri uri, Context context) {
super(uri, context);
}
@Override
protected String getFwUpgradeNotice() {
return mContext.getString(R.string.fw_upgrade_notice_amazfitgts, helper.getHumanFirmwareVersion());
}
@Override
protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException {
return new AmazfitGTRFWHelper(uri, context);
}
@Override
protected boolean isSupportedDeviceType(GBDevice device) {
return device.getType() == DeviceType.AMAZFITGTS;
}
}

View File

@ -84,6 +84,7 @@ public class MiBand2Coordinator extends HuamiCoordinator {
R.xml.devicesettings_liftwrist_display,
R.xml.devicesettings_rotatewrist_cycleinfo,
R.xml.devicesettings_expose_hr_thirdparty,
R.xml.devicesettings_buttonactions,
R.xml.devicesettings_pairingkey
};
}

View File

@ -89,6 +89,7 @@ public class MiBand4Coordinator extends HuamiCoordinator {
return new int[]{
R.xml.devicesettings_miband3,
R.xml.devicesettings_wearlocation,
R.xml.devicesettings_custom_emoji_font,
R.xml.devicesettings_dateformat,
R.xml.devicesettings_nightmode,
R.xml.devicesettings_liftwrist_display,

View File

@ -216,7 +216,7 @@ public final class MakibesHR3Constants {
public static final byte ARG_SEND_NOTIFICATION_SOURCE_WEIBO = (byte) 0x13;
public static final byte ARG_SEND_NOTIFICATION_SOURCE_KAKOTALK = (byte) 0x14;
// ARG_SET_NOTIFICATION_SOURCE_*
// 02 (This is 00 and 01 during connection. I don't know what it does. Maybe clears notifications?)
// 02 (This is 00 and 01 during connection. Doesn't seem to do anything.)
// ASCII
public static final byte CMD_SEND_NOTIFICATION = (byte) 0x72;

View File

@ -18,7 +18,9 @@ package nodomain.freeyourgadget.gadgetbridge.devices.makibeshr3;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import android.app.Activity;
import android.content.Context;
@ -145,10 +147,16 @@ public class MakibesHR3Coordinator extends AbstractDeviceCoordinator {
public DeviceType getSupportedType(GBDeviceCandidate candidate) {
String name = candidate.getDevice().getName();
// TODO: Device discovery
if ((name != null) && name.equals("Y808")) {
List<String> deviceNames = new ArrayList<String>(){{
add("Y808"); // Chinese version
add("MAKIBES HR3"); // English version
}};
if (name != null) {
if (deviceNames.contains(name)) {
return DeviceType.MAKIBESHR3;
}
}
return DeviceType.UNKNOWN;
}
@ -162,7 +170,7 @@ public class MakibesHR3Coordinator extends AbstractDeviceCoordinator {
@Override
public int getBondingStyle() {
return BONDING_STYLE_NONE;
return BONDING_STYLE_BOND;
}
@Override

View File

@ -27,12 +27,6 @@ public final class MiBandConst {
public static final String PREF_MIBAND_ALARMS = "mi_alarms";
public static final String PREF_MIBAND_DONT_ACK_TRANSFER = "mi_dont_ack_transfer";
public static final String PREF_MIBAND_RESERVE_ALARM_FOR_CALENDAR = "mi_reserve_alarm_calendar";
public static final String PREF_MIBAND_BUTTON_ACTION_ENABLE = "mi2_enable_button_action";
public static final String PREF_MIBAND_BUTTON_ACTION_VIBRATE = "mi2_button_action_vibrate";
public static final String PREF_MIBAND_BUTTON_PRESS_COUNT = "mi_button_press_count";
public static final String PREF_MIBAND_BUTTON_PRESS_MAX_DELAY = "mi_button_press_count_max_delay";
public static final String PREF_MIBAND_BUTTON_ACTION_DELAY = "mi_button_press_count_match_delay";
public static final String PREF_MIBAND_BUTTON_PRESS_BROADCAST = "mi_button_press_broadcast";
public static final String PREF_MIBAND_USE_HR_FOR_SLEEP_DETECTION = "mi_hr_sleep_detection";
public static final String PREF_MIBAND_DEVICE_TIME_OFFSET_HOURS = "device_time_offset_hours";
public static final String PREF_MI2_DATEFORMAT = "mi2_dateformat";

View File

@ -40,6 +40,8 @@ public enum DeviceType {
AMAZFITCOR2(15, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_amazfit_cor2),
MIBAND4(16, R.drawable.ic_device_miband2, R.drawable.ic_device_miband2_disabled, R.string.devicetype_miband4),
AMAZFITBIP_LITE(17, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_amazfit_bip_lite),
AMAZFITGTR(18, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_amazfit_gtr),
AMAZFITGTS(19, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_amazfit_gts),
VIBRATISSIMO(20, R.drawable.ic_device_lovetoy, R.drawable.ic_device_lovetoy_disabled, R.string.devicetype_vibratissimo),
LIVEVIEW(30, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_liveview),
HPLUS(40, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_hplus),

View File

@ -35,8 +35,10 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.hplus.HPlusSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipLiteSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.AmazfitGTRSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor.AmazfitCorSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor2.AmazfitCor2Support;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts.AmazfitGTSSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband3.MiBand3Support;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband4.MiBand4Support;
import nodomain.freeyourgadget.gadgetbridge.service.devices.id115.ID115Support;
@ -142,6 +144,12 @@ public class DeviceSupportFactory {
case AMAZFITBIP_LITE:
deviceSupport = new ServiceDeviceSupport(new AmazfitBipLiteSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING));
break;
case AMAZFITGTR:
deviceSupport = new ServiceDeviceSupport(new AmazfitGTRSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING));
break;
case AMAZFITGTS:
deviceSupport = new ServiceDeviceSupport(new AmazfitGTSSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING));
break;
case AMAZFITCOR:
deviceSupport = new ServiceDeviceSupport(new AmazfitCorSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING));
break;

View File

@ -22,6 +22,8 @@ import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.text.format.DateFormat;
import android.widget.Toast;
@ -112,6 +114,8 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.ConditionalWrit
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.IntentListener;
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotification.AlertCategory;
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotification.AlertNotificationProfile;
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotification.NewAlert;
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.deviceinfo.DeviceInfoProfile;
import nodomain.freeyourgadget.gadgetbridge.service.devices.common.SimpleNotification;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.actions.StopNotificationAction;
@ -128,6 +132,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.NotificationUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Version;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_COUNT;
@ -585,6 +590,104 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
}
}
/*
This works on all Huami devices except Mi Band 2
*/
protected void sendNotificationNew(NotificationSpec notificationSpec, boolean hasExtraHeader) {
if (notificationSpec.type == NotificationType.GENERIC_ALARM_CLOCK) {
onAlarmClock(notificationSpec);
return;
}
String senderOrTitle = StringUtils.getFirstOf(notificationSpec.sender, notificationSpec.title);
String message = StringUtils.truncate(senderOrTitle, 32) + "\0";
if (notificationSpec.subject != null) {
message += StringUtils.truncate(notificationSpec.subject, 128) + "\n\n";
}
if (notificationSpec.body != null) {
message += StringUtils.truncate(notificationSpec.body, 128);
}
try {
TransactionBuilder builder = performInitialized("new notification");
byte customIconId = HuamiIcon.mapToIconId(notificationSpec.type);
AlertCategory alertCategory = AlertCategory.CustomHuami;
// The SMS icon for AlertCategory.SMS is unique and not available as iconId
if (notificationSpec.type == NotificationType.GENERIC_SMS) {
alertCategory = AlertCategory.SMS;
}
// EMAIL icon does not work in FW 0.0.8.74, it did in 0.0.7.90
else if (customIconId == HuamiIcon.EMAIL) {
alertCategory = AlertCategory.Email;
}
int maxLength = 230;
if (characteristicChunked != null) {
int prefixlength = 2;
// We also need a (fake) source name for Mi Band 3 for SMS/EMAIL, else the message is not displayed
byte[] appSuffix = "\0 \0".getBytes();
int suffixlength = appSuffix.length;
if (alertCategory == AlertCategory.CustomHuami) {
String appName;
prefixlength = 3;
final PackageManager pm = getContext().getPackageManager();
ApplicationInfo ai = null;
try {
ai = pm.getApplicationInfo(notificationSpec.sourceAppId, 0);
} catch (PackageManager.NameNotFoundException ignored) {
}
if (ai != null) {
appName = "\0" + pm.getApplicationLabel(ai) + "\0";
} else {
appName = "\0" + "UNKNOWN" + "\0";
}
appSuffix = appName.getBytes();
suffixlength = appSuffix.length;
}
if (hasExtraHeader) {
prefixlength += 4;
}
byte[] rawmessage = message.getBytes();
int length = Math.min(rawmessage.length, maxLength - prefixlength);
byte[] command = new byte[length + prefixlength + suffixlength];
int pos = 0;
command[pos++] = (byte) alertCategory.getId();
if (hasExtraHeader) {
command[pos++] = 0; // TODO
command[pos++] = 0;
command[pos++] = 0;
command[pos++] = 0;
}
command[pos++] = 1;
if (alertCategory == AlertCategory.CustomHuami) {
command[pos] = customIconId;
}
System.arraycopy(rawmessage, 0, command, prefixlength, length);
System.arraycopy(appSuffix, 0, command, prefixlength + length, appSuffix.length);
writeToChunked(builder, 0, command);
} else {
AlertNotificationProfile<?> profile = new AlertNotificationProfile(this);
NewAlert alert = new NewAlert(alertCategory, 1, message, customIconId);
profile.setMaxLength(maxLength);
profile.newAlert(builder, alert);
}
builder.queue(getQueue());
} catch (IOException ex) {
LOG.error("Unable to send notification to device", ex);
}
}
@Override
public void onNotification(NotificationSpec notificationSpec) {
if (notificationSpec.type == NotificationType.GENERIC_ALARM_CLOCK) {
@ -987,7 +1090,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
return;
}
String requiredButtonPressMessage = prefs.getString(MiBandConst.PREF_MIBAND_BUTTON_PRESS_BROADCAST,
String requiredButtonPressMessage = prefs.getString(HuamiConst.PREF_BUTTON_ACTION_BROADCAST,
this.getContext().getString(R.string.mi2_prefs_button_press_broadcast_default_value));
Intent in = new Intent();
@ -995,7 +1098,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
in.putExtra("button_id", currentButtonActionId);
LOG.info("Sending " + requiredButtonPressMessage + " with button_id " + currentButtonActionId);
this.getContext().getApplicationContext().sendBroadcast(in);
if (prefs.getBoolean(MiBandConst.PREF_MIBAND_BUTTON_ACTION_VIBRATE, false)) {
if (prefs.getBoolean(HuamiConst.PREF_BUTTON_ACTION_VIBRATE, false)) {
performPreferredNotification(null, null, null, HuamiService.ALERT_LEVEL_VIBRATE_ONLY, null);
}
@ -1112,18 +1215,17 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
}
}
public void handleButtonEvent() {
///logMessageContent(value);
private void handleButtonEvent() {
// If disabled we return from function immediately
Prefs prefs = GBApplication.getPrefs();
if (!prefs.getBoolean(MiBandConst.PREF_MIBAND_BUTTON_ACTION_ENABLE, false)) {
Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()));
if (!prefs.getBoolean(HuamiConst.PREF_BUTTON_ACTION_ENABLE, false)) {
return;
}
int buttonPressMaxDelay = prefs.getInt(MiBandConst.PREF_MIBAND_BUTTON_PRESS_MAX_DELAY, 2000);
int buttonActionDelay = prefs.getInt(MiBandConst.PREF_MIBAND_BUTTON_ACTION_DELAY, 0);
int requiredButtonPressCount = prefs.getInt(MiBandConst.PREF_MIBAND_BUTTON_PRESS_COUNT, 0);
int buttonPressMaxDelay = prefs.getInt(HuamiConst.PREF_BUTTON_ACTION_PRESS_MAX_INTERVAL, 2000);
int buttonActionDelay = prefs.getInt(HuamiConst.PREF_BUTTON_ACTION_BROADCAST_DELAY, 0);
int requiredButtonPressCount = prefs.getInt(HuamiConst.PREF_BUTTON_ACTION_PRESS_COUNT, 0);
if (requiredButtonPressCount > 0) {
long timeSinceLastPress = System.currentTimeMillis() - currentButtonPressTime;
@ -1141,7 +1243,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
currentButtonTimerActivationTime = currentButtonPressTime;
if (buttonActionDelay > 0) {
LOG.info("Activating timer");
final Timer buttonActionTimer = new Timer("Mi Band Button Action Timer");
final Timer buttonActionTimer = new Timer("Huami Button Action Timer");
buttonActionTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
@ -1542,11 +1644,11 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
LOG.warn("Device not initialized yet, so not sending weather info");
return;
}
boolean supportsConditionString = false;
boolean supportsConditionString = true;
Version version = new Version(gbDevice.getFirmwareVersion());
if (version.compareTo(new Version("0.0.8.74")) >= 0) {
supportsConditionString = true;
if (gbDevice.getType() == DeviceType.AMAZFITBIP && version.compareTo(new Version("0.0.8.74")) < 0) {
supportsConditionString = false;
}
MiBandConst.DistanceUnit unit = HuamiCoordinator.getDistanceUnit();

View File

@ -109,10 +109,12 @@ public class AmazfitBipFirmwareInfo extends HuamiFirmwareInfo {
crcToVersion.put(32576, "1.1.5.16");
crcToVersion.put(28893, "1.1.5.24");
crcToVersion.put(61710, "1.1.5.56");
crcToVersion.put(23387, "1.1.6.34");
// Latin Firmware
crcToVersion.put(52828, "1.1.5.36 (Latin)");
crcToVersion.put(60625, "1.1.6.30 (Latin)");
crcToVersion.put(17913, "1.1.6.32 (Latin)");
// resources
crcToVersion.put(12586, "0.0.8.74");
@ -139,7 +141,8 @@ public class AmazfitBipFirmwareInfo extends HuamiFirmwareInfo {
crcToVersion.put(5341, "1.1.5.02-24");
crcToVersion.put(22662, "1.1.5.36");
crcToVersion.put(24045, "1.1.5.56");
crcToVersion.put(37677, "1.1.6.30");
crcToVersion.put(37677, "1.1.6.30-32");
crcToVersion.put(26735, "1.1.6.34");
// gps
crcToVersion.put(61520, "9367,8f79a91,0,0,");
@ -153,6 +156,12 @@ public class AmazfitBipFirmwareInfo extends HuamiFirmwareInfo {
crcToVersion.put(61054, "8");
crcToVersion.put(62291, "9 (old Latin)");
crcToVersion.put(59577, "9 (Latin)");
// BipOS FW
crcToVersion.put(28373, "1.1.2.05 (BipOS 0.5)");
// BipOS RES
crcToVersion.put(16303, "1.1.2.05 (BipOS 0.5)");
}
public AmazfitBipFirmwareInfo(byte[] bytes) {

View File

@ -0,0 +1,94 @@
/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer
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.service.devices.huami.amazfitbip;
import java.util.HashMap;
import java.util.Map;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareInfo;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType;
import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils;
public class AmazfitBipLiteFirmwareInfo extends HuamiFirmwareInfo {
// this is the same as Bip and Cor
private static final byte[] FW_HEADER = new byte[]{
0x00, (byte) 0x98, 0x00, 0x20, (byte) 0xA5, 0x04, 0x00, 0x20, (byte) 0xAD, 0x04, 0x00, 0x20, (byte) 0xC5, 0x04, 0x00, 0x20
};
private static Map<Integer, String> crcToVersion = new HashMap<>();
static {
// firmware
crcToVersion.put(11059, "1.1.6.02");
// Latin Firmware
// resources
crcToVersion.put(57510, "1.1.6.02");
// font
crcToVersion.put(61054, "8");
crcToVersion.put(59577, "9 (Latin)");
}
public AmazfitBipLiteFirmwareInfo(byte[] bytes) {
super(bytes);
}
@Override
protected HuamiFirmwareType determineFirmwareType(byte[] bytes) {
if (ArrayUtils.startsWith(bytes, NEWRES_HEADER)) {
if ((bytes.length <= 100000) || (bytes.length > 700000)) { // dont know how to distinguish from Cor/Mi Band 3 .res
return HuamiFirmwareType.INVALID;
}
return HuamiFirmwareType.RES;
}
if (ArrayUtils.startsWith(bytes, FW_HEADER)) {
if (searchString32BitAligned(bytes, "Amazfit Bip Lite")) {
return HuamiFirmwareType.FIRMWARE;
}
return HuamiFirmwareType.INVALID;
}
if (ArrayUtils.startsWith(bytes, WATCHFACE_HEADER)) {
return HuamiFirmwareType.WATCHFACE;
}
if (ArrayUtils.startsWith(bytes, NEWFT_HEADER)) {
if (bytes[10] == 0x01) {
return HuamiFirmwareType.FONT;
} else if (bytes[10] == 0x02 || bytes[10] == 0x0A) {
return HuamiFirmwareType.FONT_LATIN;
}
}
return HuamiFirmwareType.INVALID;
}
@Override
public boolean isGenerallyCompatibleWith(GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITBIP_LITE;
}
@Override
protected Map<Integer, String> getCrcMap() {
return crcToVersion;
}
}

View File

@ -20,7 +20,10 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipLiteFWHelper;
public class AmazfitBipLiteSupport extends AmazfitBipSupport {
@ -35,7 +38,7 @@ public class AmazfitBipLiteSupport extends AmazfitBipSupport {
}
@Override
public HuamiFWHelper createFWHelper(Uri uri, Context context) {
return null;
public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException {
return new AmazfitBipLiteFWHelper(uri, context);
}
}

View File

@ -68,97 +68,7 @@ public class AmazfitBipSupport extends HuamiSupport {
@Override
public void onNotification(NotificationSpec notificationSpec) {
if (notificationSpec.type == NotificationType.GENERIC_ALARM_CLOCK) {
onAlarmClock(notificationSpec);
return;
}
String senderOrTitle = StringUtils.getFirstOf(notificationSpec.sender, notificationSpec.title);
String message = StringUtils.truncate(senderOrTitle, 32) + "\0";
if (notificationSpec.subject != null) {
message += StringUtils.truncate(notificationSpec.subject, 128) + "\n\n";
}
if (notificationSpec.body != null) {
message += StringUtils.truncate(notificationSpec.body, 128);
}
try {
TransactionBuilder builder = performInitialized("new notification");
byte customIconId = HuamiIcon.mapToIconId(notificationSpec.type);
AlertCategory alertCategory = AlertCategory.CustomHuami;
// The SMS icon for AlertCategory.SMS is unique and not available as iconId
if (notificationSpec.type == NotificationType.GENERIC_SMS) {
alertCategory = AlertCategory.SMS;
}
// EMAIL icon does not work in FW 0.0.8.74, it did in 0.0.7.90
else if (customIconId == HuamiIcon.EMAIL) {
alertCategory = AlertCategory.Email;
}
int maxLength = 230;
if (characteristicChunked != null) {
int prefixlength = 2;
// We also need a (fake) source name for Mi Band 3 for SMS/EMAIL, else the message is not displayed
byte[] appSuffix = "\0 \0".getBytes();
int suffixlength = appSuffix.length;
if (alertCategory == AlertCategory.CustomHuami) {
String appName;
prefixlength = 3;
final PackageManager pm = getContext().getPackageManager();
ApplicationInfo ai = null;
try {
ai = pm.getApplicationInfo(notificationSpec.sourceAppId, 0);
} catch (PackageManager.NameNotFoundException ignored) {
}
if (ai != null) {
appName = "\0" + pm.getApplicationLabel(ai) + "\0";
} else {
appName = "\0" + "UNKNOWN" + "\0";
}
appSuffix = appName.getBytes();
suffixlength = appSuffix.length;
}
if (gbDevice.getType() == DeviceType.MIBAND4) {
prefixlength += 4;
}
byte[] rawmessage = message.getBytes();
int length = Math.min(rawmessage.length, maxLength - prefixlength);
byte[] command = new byte[length + prefixlength + suffixlength];
int pos = 0;
command[pos++] = (byte) alertCategory.getId();
if (gbDevice.getType() == DeviceType.MIBAND4) {
command[pos++] = 0; // TODO
command[pos++] = 0;
command[pos++] = 0;
command[pos++] = 0;
}
command[pos++] = 1;
if (alertCategory == AlertCategory.CustomHuami) {
command[pos] = customIconId;
}
System.arraycopy(rawmessage, 0, command, prefixlength, length);
System.arraycopy(appSuffix, 0, command, prefixlength + length, appSuffix.length);
writeToChunked(builder, 0, command);
} else {
AlertNotificationProfile<?> profile = new AlertNotificationProfile(this);
NewAlert alert = new NewAlert(alertCategory, 1, message, customIconId);
profile.setMaxLength(maxLength);
profile.newAlert(builder, alert);
}
builder.queue(getQueue());
} catch (IOException ex) {
LOG.error("Unable to send notification to Amazfit Bip", ex);
}
super.sendNotificationNew(notificationSpec, false);
}
@Override
@ -169,11 +79,6 @@ public class AmazfitBipSupport extends HuamiSupport {
onSetCallState(callSpec);
}
@Override
public void handleButtonEvent() {
// ignore
}
@Override
protected AmazfitBipSupport setDisplayItems(TransactionBuilder builder) {
if (gbDevice.getFirmwareVersion() == null) {

View File

@ -0,0 +1,116 @@
/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer
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.service.devices.huami.amazfitgtr;
import java.util.HashMap;
import java.util.Map;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareInfo;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType;
import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils;
public class AmazfitGTRFirmwareInfo extends HuamiFirmwareInfo {
private static final int FW_OFFSET = 3;
private static final byte[] FW_HEADER = new byte[]{
0x20, (byte) 0x99, 0x12, 0x01, 0x08 // completely nonsense probably
};
private static final byte[] GPS_ALMANAC_HEADER = new byte[]{ // probably wrong
(byte) 0xa0, (byte) 0x80, 0x08, 0x00, (byte) 0x8b, 0x07
};
private static final byte[] GPS_CEP_HEADER = new byte[]{ // probably wrong
0x2a, 0x12, (byte) 0xa0, 0x02
};
// gps detection is totally bogus, just the first 16 bytes
private static final byte[][] GPS_HEADERS = {
new byte[]{
0x73, 0x75, 0x68, (byte) 0xd0, 0x70, 0x73, (byte) 0xbb, 0x5a,
0x3e, (byte) 0xc3, (byte) 0xd3, 0x09, (byte) 0x9e, 0x1d, (byte) 0xd3, (byte) 0xc9
}
};
private static Map<Integer, String> crcToVersion = new HashMap<>();
static {
// firmware
// Latin Firmware
// resources
// font
// gps
crcToVersion.put(62532, "18344,eb2f43f,126");
}
public AmazfitGTRFirmwareInfo(byte[] bytes) {
super(bytes);
}
@Override
protected HuamiFirmwareType determineFirmwareType(byte[] bytes) {
if (ArrayUtils.equals(bytes, NEWRES_HEADER, COMPRESSED_RES_HEADER_OFFSET_NEW)) {
return HuamiFirmwareType.RES_COMPRESSED;
}
if (ArrayUtils.equals(bytes, FW_HEADER, FW_OFFSET)) {
if (searchString32BitAligned(bytes, "Amazfit GTR")) {
return HuamiFirmwareType.FIRMWARE;
}
return HuamiFirmwareType.INVALID;
}
if (ArrayUtils.startsWith(bytes, WATCHFACE_HEADER)) {
return HuamiFirmwareType.WATCHFACE;
}
if (ArrayUtils.startsWith(bytes, NEWFT_HEADER)) {
if (bytes[10] == 0x01) {
return HuamiFirmwareType.FONT;
} else if (bytes[10] == 0x02) {
return HuamiFirmwareType.FONT_LATIN;
}
}
if (ArrayUtils.startsWith(bytes, GPS_ALMANAC_HEADER)) {
return HuamiFirmwareType.GPS_ALMANAC;
}
if (ArrayUtils.startsWith(bytes, GPS_CEP_HEADER)) {
return HuamiFirmwareType.GPS_CEP;
}
for (byte[] gpsHeader : GPS_HEADERS) {
if (ArrayUtils.startsWith(bytes, gpsHeader)) {
return HuamiFirmwareType.GPS;
}
}
return HuamiFirmwareType.INVALID;
}
@Override
public boolean isGenerallyCompatibleWith(GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITGTR;
}
@Override
protected Map<Integer, String> getCrcMap() {
return crcToVersion;
}
}

View File

@ -0,0 +1,58 @@
/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer, Matthieu
Baerts, Roi Greenberg
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.service.devices.huami.amazfitgtr;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr.AmazfitGTRFWHelper;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipSupport;
public class AmazfitGTRSupport extends AmazfitBipSupport {
@Override
public byte getCryptFlags() {
return (byte) 0x80;
}
@Override
protected byte getAuthFlags() {
return 0x00;
}
@Override
public void onNotification(NotificationSpec notificationSpec) {
super.sendNotificationNew(notificationSpec, true);
}
@Override
public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException {
return new AmazfitGTRFWHelper(uri, context);
}
@Override
protected AmazfitGTRSupport setDisplayItems(TransactionBuilder builder) {
// not supported yet
return this;
}
}

View File

@ -0,0 +1,116 @@
/* Copyright (C) 2017-2019 Andreas Shimokawa, Carsten Pfeiffer
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.service.devices.huami.amazfitgts;
import java.util.HashMap;
import java.util.Map;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareInfo;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType;
import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils;
public class AmazfitGTSFirmwareInfo extends HuamiFirmwareInfo {
private static final int FW_OFFSET = 3;
private static final byte[] FW_HEADER = new byte[]{
0x20, (byte) 0x99, 0x12, 0x01, 0x08 // completely nonsense probably
};
private static final byte[] GPS_ALMANAC_HEADER = new byte[]{ // probably wrong
(byte) 0xa0, (byte) 0x80, 0x08, 0x00, (byte) 0x8b, 0x07
};
private static final byte[] GPS_CEP_HEADER = new byte[]{ // probably wrong
0x2a, 0x12, (byte) 0xa0, 0x02
};
// gps detection is totally bogus, just the first 16 bytes
private static final byte[][] GPS_HEADERS = {
new byte[]{
0x73, 0x75, 0x68, (byte) 0xd0, 0x70, 0x73, (byte) 0xbb, 0x5a,
0x3e, (byte) 0xc3, (byte) 0xd3, 0x09, (byte) 0x9e, 0x1d, (byte) 0xd3, (byte) 0xc9
}
};
private static Map<Integer, String> crcToVersion = new HashMap<>();
static {
// firmware
// Latin Firmware
// resources
// font
// gps
crcToVersion.put(62532, "18344,eb2f43f,126");
}
public AmazfitGTSFirmwareInfo(byte[] bytes) {
super(bytes);
}
@Override
protected HuamiFirmwareType determineFirmwareType(byte[] bytes) {
if (ArrayUtils.equals(bytes, NEWRES_HEADER, COMPRESSED_RES_HEADER_OFFSET_NEW)) {
return HuamiFirmwareType.RES_COMPRESSED;
}
if (ArrayUtils.equals(bytes, FW_HEADER, FW_OFFSET)) {
if (searchString32BitAligned(bytes, "Amazfit GTS")) {
return HuamiFirmwareType.FIRMWARE;
}
return HuamiFirmwareType.INVALID;
}
if (ArrayUtils.startsWith(bytes, WATCHFACE_HEADER)) {
return HuamiFirmwareType.WATCHFACE;
}
if (ArrayUtils.startsWith(bytes, NEWFT_HEADER)) {
if (bytes[10] == 0x01) {
return HuamiFirmwareType.FONT;
} else if (bytes[10] == 0x02) {
return HuamiFirmwareType.FONT_LATIN;
}
}
if (ArrayUtils.startsWith(bytes, GPS_ALMANAC_HEADER)) {
return HuamiFirmwareType.GPS_ALMANAC;
}
if (ArrayUtils.startsWith(bytes, GPS_CEP_HEADER)) {
return HuamiFirmwareType.GPS_CEP;
}
for (byte[] gpsHeader : GPS_HEADERS) {
if (ArrayUtils.startsWith(bytes, gpsHeader)) {
return HuamiFirmwareType.GPS;
}
}
return HuamiFirmwareType.INVALID;
}
@Override
public boolean isGenerallyCompatibleWith(GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITGTS;
}
@Override
protected Map<Integer, String> getCrcMap() {
return crcToVersion;
}
}

View File

@ -0,0 +1,44 @@
package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr.AmazfitGTRFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts.AmazfitGTSFWHelper;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipSupport;
public class AmazfitGTSSupport extends AmazfitBipSupport {
@Override
public byte getCryptFlags() {
return (byte) 0x80;
}
@Override
protected byte getAuthFlags() {
return 0x00;
}
@Override
public void onNotification(NotificationSpec notificationSpec) {
super.sendNotificationNew(notificationSpec, true);
}
@Override
public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException {
return new AmazfitGTSFWHelper(uri, context);
}
@Override
protected AmazfitGTSSupport setDisplayItems(TransactionBuilder builder) {
// not supported yet
return this;
}
}

View File

@ -36,6 +36,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband3.MiBand3Coordin
import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband3.MiBand3FWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband3.MiBand3Service;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipSupport;
import nodomain.freeyourgadget.gadgetbridge.util.GB;

View File

@ -23,6 +23,8 @@ import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband4.MiBand4FWHelper;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband3.MiBand3Support;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperationNew;
@ -33,6 +35,11 @@ public class MiBand4Support extends MiBand3Support {
return (byte) 0x80;
}
@Override
public void onNotification(NotificationSpec notificationSpec) {
super.sendNotificationNew(notificationSpec, true);
}
@Override
public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException {
return new MiBand4FWHelper(uri, context);

View File

@ -1,7 +1,3 @@
// TODO: GB sometimes fails to connect until a connection with WearFit was made. This must be caused
// TODO: by GB, not by Makibes hr3 support. Charging the watch, attempting to pair, delete and
// TODO: re-add, scan for devices and go back, might also help. This needs further research.
// TODO: All the commands that aren't supported by GB should be added to device specific settings.
// TODO: It'd be cool if we could change the language. There's no official way to do so, but the

View File

@ -46,6 +46,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.hplus.EXRIZUK8Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.HPlusCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.MakibesF68Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipLiteCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr.AmazfitGTRCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts.AmazfitGTSCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.makibeshr3.MakibesHR3Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.Q8Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbip.AmazfitBipCoordinator;
@ -208,6 +210,8 @@ public class DeviceHelper {
result.add(new AmazfitBipLiteCoordinator());
result.add(new AmazfitCorCoordinator());
result.add(new AmazfitCor2Coordinator());
result.add(new AmazfitGTRCoordinator());
result.add(new AmazfitGTSCoordinator());
result.add(new MiBand3Coordinator());
result.add(new MiBand4Coordinator());
result.add(new MiBand2HRXCoordinator());

View File

@ -34,12 +34,6 @@
android:gravity="fill_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/charts_previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="&lt;" />
<TextView
android:id="@+id/charts_text_date"
android:layout_width="0dp"
@ -48,11 +42,55 @@
android:layout_weight="1"
android:text="Today" />
</LinearLayout>
<LinearLayout
android:id="@+id/charts_date_button_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="fill_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/charts_next"
android:id="@+id/charts_previous_month"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="&lt;&lt;&lt;" />
<Button
android:id="@+id/charts_previous_week"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="&lt;&lt;" />
<Button
android:id="@+id/charts_previous_day"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="&lt;" />
<Button
android:id="@+id/charts_next_day"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text=">" />
<Button
android:id="@+id/charts_next_week"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text=">>" />
<Button
android:id="@+id/charts_next_month"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text=">>>" />
</LinearLayout>
</LinearLayout>

View File

@ -105,7 +105,6 @@
android:id="@+id/HeartRateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
grid:layout_columnSpan="2"
grid:layout_gravity="fill_horizontal"
android:text="Heart Rate Test" />
@ -113,10 +112,17 @@
android:id="@+id/rebootButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
grid:layout_columnSpan="2"
grid:layout_gravity="fill_horizontal"
android:text="reboot" />
<Button
android:id="@+id/SetFetchTimeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
grid:layout_columnSpan="2"
grid:layout_gravity="fill_horizontal"
android:text="Set Activity Fetch Time" />
<Button
android:id="@+id/factoryResetButton"
android:layout_width="wrap_content"

View File

@ -221,7 +221,7 @@
<string name="pref_screen_notification_profile_generic_social">Sociální sítě</string>
<string name="control_center_find_lost_device">Najit ztracené zařízení</string>
<string name="control_center_cancel_to_stop_vibration">Zastavit vibrací.</string>
<string name="title_activity_charts">Vaše aktivita</string>
<string name="title_activity_charts">Aktivita</string>
<string name="title_activity_set_alarm">Nastavit buzení</string>
<string name="controlcenter_start_configure_alarms">Nastavit buzení</string>
<string name="title_activity_alarm_details">Detail buzení</string>
@ -253,7 +253,7 @@
<string name="weeksleepchart_sleep_a_week">Spánek za týden</string>
<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="activity_sleepchart_activity_and_sleep">Aktivita a spánek</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>
@ -757,8 +757,38 @@
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="prefs_find_phone">Vyhledat telefon</string>
<string name="prefs_enable_find_phone">Povolit vyhledání telefonu</string>
<string name="prefs_enable_find_phone">Zapnout \\\'Vyhledání telefonu\\\'</string>
<string name="prefs_find_phone_summary">Použijte náramek/hodinky k prozvonění telefonu.</string>
<string name="prefs_find_phone_duration">Délka zvonění ve vteřinách</string>
<string name="maximum_duration">Délka</string>
<string name="discovery_need_to_enter_authkey">Toto zařízení vyžaduje tajný klíč, podržte dlouze na jménu zařízení pro jeho vložení. pro více detailů čtěte wiki.</string>
<string name="fw_upgrade_notice_amazfitbip_lite">Chystáte se nainstalovat firmvér %s na vašem Amazfit Bip Lite.
\n
\nProsím nezapomeňte nainstalovat soubor .fw, a poté soubor .res . Vaše hodinky se po instalaci souboru .fw restartují.
\n
\nPoznámka: Nemusíte instalovat soubory .res , pokud je tento soubor přesně stejný jako ten, který byl nainstalován dříve.
\n
\nPOKRAČUJTE TO NA VLASTNÍ NEBEZPEČÍ!</string>
<string name="devicetype_amazfit_gtr">Amazfit GTR</string>
<string name="fw_upgrade_notice_amazfitgtr">Chystáte se nainstalovat firmvér %s na vašem Amazfit GTR.
\n
\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 .res a .gps, pokud jsou tyto soubory přesně stejné jako ty, které byly nainstalovány dříve.
\n
\nPOKRAČUJTE TO NA VLASTNÍ NEBEZPEČÍ!</string>
<string name="pref_chart_heartrate_color_red">Červená</string>
<string name="pref_chart_heartrate_color_orange">Oranžová</string>
<string name="pref_title_chart_heartrate_color">Barva tepové frekvence</string>
<string name="pref_title_chart_sleep_rolling_24_hour">Rozsah pro spánek</string>
<string name="pref_chart_sleep_rolling_24_on">Předchozích 24 hodin</string>
<string name="pref_chart_sleep_rolling_24_off">Od poledne k poledni</string>
<string name="devicetype_amazfit_gts">Amazfit GTS</string>
<string name="fw_upgrade_notice_amazfitgts">Chystáte se nainstalovat firmvér %s do vašeho Amazfit GTS.
\n
\nProsím, ujistěte se, že jste nainstalovali soubor .fw a potom soubor .res. Váš se po instalaci souboru .fw restartuje.
\n
\nPoznámka: Nemusíte instalovat soubor .res a .gps, pokud jsou stejné jako soubory nainstalovány dříve.
\n
\nPOKRAČUJTE NA VLASTNÍ NEBEZPEČÍ!</string>
</resources>

View File

@ -35,7 +35,7 @@
<string name="appmanager_hrm_deactivate">HRM deaktivieren</string>
<string name="appmanager_weather_activate">System Wetter-App aktivieren</string>
<string name="appmanager_weather_deactivate">System Wetter-App deaktivieren</string>
<string name="appmanager_weather_install_provider">Installiere die Wetterbenachrichtigungs-App</string>
<string name="appmanager_weather_install_provider">Wetterbenachrichtigungs-App installieren</string>
<string name="app_configure">Konfigurieren</string>
<string name="app_move_to_top">Nach oben</string>
<!--Strings related to AppBlacklist-->
@ -92,7 +92,7 @@
<string name="pref_call_privacy_mode_complete">Name und Telefonnummer ausblenden</string>
<string name="pref_blacklist">Apps-Blacklist</string>
<string name="pref_blacklist_calendars">Kalender-Blacklist</string>
<string name="pref_header_cannned_messages">Nachrichtenvorlagen</string>
<string name="pref_header_cannned_messages">Gespeicherte Nachrichten</string>
<string name="pref_title_canned_replies">Antworten</string>
<string name="pref_title_canned_reply_suffix">Gemeinsame Endung</string>
<string name="pref_title_canned_messages_dismisscall">Anrufabweisung</string>
@ -110,15 +110,15 @@
<string name="pref_title_enable_pebblekit">Zugriff auf Android Drittanbieter-Apps zulassen</string>
<string name="pref_summary_enable_pebblekit">Experimentelle Unterstützung für Android-Apps mit PebbleKit aktivieren</string>
<string name="pref_header_pebble_timeline">Pebble-Zeitleiste</string>
<string name="pref_title_sunrise_sunset">Sonnenauf- und Untergänge</string>
<string name="pref_summary_sunrise_sunset">Sende Sonnenauf- und -untergangszeiten abhängig vom Standort auf die Pebble-Zeitleiste</string>
<string name="pref_title_enable_calendar_sync">Synchronisiere Kalender</string>
<string name="pref_summary_enable_calendar_sync">Sende Kalenderereignisse an die Zeitleiste</string>
<string name="pref_title_sunrise_sunset">Sonnenauf- und -untergang</string>
<string name="pref_summary_sunrise_sunset">Sonnenauf- und -untergangszeiten abhängig vom Standort auf die Pebble-Zeitleiste senden</string>
<string name="pref_title_enable_calendar_sync">Kalender synchronisieren</string>
<string name="pref_summary_enable_calendar_sync">Kalenderereignisse an die Zeitleiste senden</string>
<string name="pref_title_autoremove_notifications">Abgewiesene Benachrichtigungen automatisch entfernen</string>
<string name="pref_summary_autoremove_notifications">Wenn Benachrichtigungen vom Android-Gerät entfernt werden, geschieht das auch automatisch auf der Pebble</string>
<string name="pref_title_pebble_privacy_mode">Datenschutzmodus</string>
<string name="pref_pebble_privacy_mode_off">Normale Benachrichtigungen</string>
<string name="pref_pebble_privacy_mode_content">Verschiebe den Benachrichtigungstext außerhalb des Bildschirms</string>
<string name="pref_pebble_privacy_mode_content">Benachrichtigungstext außerhalb des Bildschirms verschieben</string>
<string name="pref_pebble_privacy_mode_complete">Nur das Benachrichtigungssymbol anzeigen</string>
<string name="pref_header_location">Standort</string>
<string name="pref_title_location_aquire">Standort ermitteln</string>
@ -187,7 +187,7 @@
<string name="title_activity_mi_band_pairing">Kopple dein Mi Band</string>
<string name="pairing">Koppeln mit %s…</string>
<string name="pairing_creating_bond_with">Verbindung mit %1$s (%2$s) herstellen</string>
<string name="pairing_unable_to_pair_with">Kein koppeln mit %1$s (%2$s) möglich</string>
<string name="pairing_unable_to_pair_with">Kein Koppeln mit %1$s (%2$s) möglich</string>
<string name="pairing_in_progress">Verbindung wird hergestellt: %1$s (%2$s)</string>
<string name="pairing_already_bonded">Bereits an %1$s (%2$s) gebunden, verbinden…</string>
<string name="message_cannot_pair_no_mac">Keine MAC-Adresse erhalten, koppeln nicht möglich.</string>
@ -199,7 +199,7 @@
<string name="left">Links</string>
<string name="right">Rechts</string>
<string name="miband_pairing_using_dummy_userdata">Keine gültigen Benutzerdaten angegeben, für die jetzt Dummy-Benutzerdaten verwendet werden.</string>
<string name="miband_pairing_tap_hint">Wenn Dein Mi Band vibriert und blinkt, tippe ein paar Mal hintereinander darauf.</string>
<string name="miband_pairing_tap_hint">Wenn dein Mi Band vibriert und blinkt, tippe ein paar Mal hintereinander darauf.</string>
<string name="appinstaller_install">Installieren</string>
<string name="discovery_connected_devices_hint">Mache dein Gerät auffindbar. Derzeit verbundene Geräte werden wahrscheinlich nicht erkannt. Standort aktivieren (zum Beispiel GPS) in Android 6+. Deaktiviere den Privatsphäreschutz für Gadgetbridge, da er zu Abstürzen und Neustarts deines Telefons führen kann. Wenn nach einigen Minuten kein Gerät erkannt wird, versuche es nach dem Neustart deines mobilen Gerätes erneut.</string>
<string name="discovery_note">Hinweis:</string>
@ -234,7 +234,7 @@
<string name="stats_y_axis_label">Schritte pro Minute</string>
<string name="control_center_find_lost_device">Verlorenes Gerät finden</string>
<string name="control_center_cancel_to_stop_vibration">Abbrechen, um die Vibration zu stoppen.</string>
<string name="title_activity_charts">Deine Aktivität</string>
<string name="title_activity_charts">Aktivität und Schlaf</string>
<string name="title_activity_set_alarm">Alarme konfigurieren</string>
<string name="controlcenter_start_configure_alarms">Alarme konfigurieren</string>
<string name="title_activity_alarm_details">Alarmdetails</string>
@ -254,7 +254,7 @@
<string name="dbaccess_error_executing">Fehler beim Ausführen \'%1$s\'</string>
<string name="controlcenter_start_activitymonitor">Deine Aktivität (ALPHA)</string>
<string name="cannot_connect">Keine Verbindung möglich: %1$s</string>
<string name="installer_activity_unable_to_find_handler">Kann keinen Handler finden, um diese Datei zu installieren.</string>
<string name="installer_activity_unable_to_find_handler">Es konnte kein Programm gefunden werden, das diese Datei installiert.</string>
<string name="pbw_install_handler_unable_to_install">Angegebene Datei kann nicht installiert werden: %1$s</string>
<string name="pbw_install_handler_hw_revision_mismatch">Angegebene Firmware kann nicht installiert werden: Sie passt nicht zur Hardware-Revision deiner Pebble.</string>
<string name="installer_activity_wait_while_determining_status">Bitte warten, Installationsstatus wird ermittelt…</string>
@ -263,11 +263,11 @@
<string name="notif_battery_low_bigtext_last_charge_time">Letzter Ladevorgang: %s
\n</string>
<string name="notif_battery_low_bigtext_number_of_charges">Anzahl der Ladungen: %s</string>
<string name="sleepchart_your_sleep">Dein Schlaf</string>
<string name="sleepchart_your_sleep">Schlaf</string>
<string name="weeksleepchart_sleep_a_week">Schlaf pro Woche</string>
<string name="weeksleepchart_today_sleep_description">Schlaf heute, Ziel: %1$s</string>
<string name="weekstepschart_steps_a_week">Schritte pro Woche</string>
<string name="activity_sleepchart_activity_and_sleep">Deine Aktivität und Schlaf</string>
<string name="activity_sleepchart_activity_and_sleep">Aktivität</string>
<string name="updating_firmware">Firmware aktualisieren…</string>
<string name="fwapp_install_device_not_ready">Datei kann nicht installiert werden, Gerät nicht bereit.</string>
<string name="installhandler_firmware_name">%1$s: %2$s %3$s</string>
@ -275,13 +275,13 @@
<string name="miband_fwinstaller_untested_version">Ungetestete Version!</string>
<string name="fwappinstaller_connection_state">Verbindung zum Gerät: %1$s</string>
<string name="pbw_installhandler_pebble_firmware">Pebble Firmware %1$s</string>
<string name="pbwinstallhandler_correct_hw_revision">Korrekte Hardware-Revision</string>
<string name="pbwinstallhandler_incorrect_hw_revision">Falsche Hardware-Revision!</string>
<string name="pbwinstallhandler_correct_hw_revision">Korrekte Hardwarerevision</string>
<string name="pbwinstallhandler_incorrect_hw_revision">Falsche Hardwarerevision!</string>
<string name="pbwinstallhandler_app_item">%1$s (%2$s)</string>
<string name="updatefirmwareoperation_updateproblem_do_not_reboot">Problem mit der Firmwareübertragung. DEIN MI BAND NICHT NEU STARTEN!</string>
<string name="updatefirmwareoperation_updateproblem_do_not_reboot">Problem mit der Firmwarebertragung. DEIN MI BAND NICHT NEU STARTEN!</string>
<string name="updatefirmwareoperation_metadata_updateproblem">Problem bei der Firmware-Metadatenübertragung</string>
<string name="updatefirmwareoperation_update_complete">Firmware-Installation abgeschlossen</string>
<string name="updatefirmwareoperation_update_complete_rebooting">Firmware-Installation erfolgreich beendet, Gerät wird neu gestartet…</string>
<string name="updatefirmwareoperation_update_complete">Firmwareinstallation abgeschlossen</string>
<string name="updatefirmwareoperation_update_complete_rebooting">Firmwareinstallation erfolgreich beendet, Gerät wird neu gestartet…</string>
<string name="updatefirmwareoperation_write_failed">Firmware aktualisieren fehlgeschlagen</string>
<string name="chart_steps">Schritte</string>
<string name="calories">Kalorien</string>
@ -343,8 +343,8 @@
<string name="add_widget">Widget hinzufügen</string>
<string name="activity_prefs_sleep_duration">Gewünschte Schlafdauer in Stunden</string>
<string name="appwidget_setting_alarm">Ein Wecker wurde auf %1$02d:%2$02d gestellt</string>
<string name="device_hw">Entwicklungsstand: %1$s</string>
<string name="device_fw">Firmware-Version: %1$s</string>
<string name="device_hw">Hardwarerevision: %1$s</string>
<string name="device_fw">Firmwareversion: %1$s</string>
<string name="error_creating_directory_for_logfiles">Fehler beim Erstellen des Verzeichnisses für Protokolldateien: %1$s</string>
<string name="DEVINFO_HR_VER">"HF: "</string>
<string name="updatefirmwareoperation_update_in_progress">Firmwareupdate wird durchgeführt</string>
@ -369,7 +369,7 @@
<string name="dbmanagementactivity_error_importing_db">Fehler beim Importieren der DB: %1$s</string>
<string name="dbmanagementactivity_error_importing_shared">Fehler beim Importieren der Einstellungen: %1$s</string>
<string name="dbmanagementactivity_delete_activity_data_title">Aktivitätsdaten löschen?</string>
<string name="dbmanagementactivity_really_delete_entire_db">Die gesamte Datenbank wirklich löschen\? Alle Aktivitätsdaten und Informationen über Deine Geräte gehen verloren.</string>
<string name="dbmanagementactivity_really_delete_entire_db">Die gesamte Datenbank wirklich löschen\? Alle Aktivitätsdaten und Informationen über deine Geräte gehen verloren.</string>
<string name="dbmanagementactivity_database_successfully_deleted">Daten gelöscht.</string>
<string name="dbmanagementactivity_db_deletion_failed">Datenbank löschen fehlgeschlagen.</string>
<string name="dbmanagementactivity_delete_old_activity_db">Alte Aktivitätsdatenbank löschen?</string>
@ -384,9 +384,9 @@
<!--Strings related to Pebble Pairing Activity-->
<string name="title_activity_pebble_pairing">Pebble koppeln</string>
<string name="pebble_pairing_hint">Auf deinem Android-Gerät erscheint ein Koppeln-Dialog. Wenn nicht, schaue in die Benachrichtigungsübersicht und akzeptiere die Kopplungsanforderung. Akzeptiere es auch danach auf deiner Pebble.</string>
<string name="weather_notification_label">Stelle sicher, dass dieses Skin in der Wetterbenachrichtigungsapp aktiviert ist, damit du Wetterdaten auf deiner Pebble erhältst.
<string name="weather_notification_label">Stelle sicher, dass dieser Skin in der Wetterbenachrichtigungs-App aktiviert ist, damit du Wetterdaten auf deiner Pebble erhältst.
\n
\nHier ist Keine Konfiguration nötig.
\nHier ist keine Konfiguration nötig.
\n
\nDu kannst die Systemwetter-App deiner Pebble in App-Verwaltung aktivieren.
\n
@ -446,7 +446,7 @@
<string name="english">Englisch</string>
<string name="fw_upgrade_notice_amazfitcor">Du bist dabei, die Firmware %s auf deine Amazfit Cor zu installieren.
\n
\nBitte stelle sicher, dass du die .fw Datei und die .res Datei installierst. Dein Band wird nach der Installation der .fw Datei neu gestartet.
\nBitte stelle sicher, dass du die .fw Datei und danach die .res Datei installierst. Dein Band wird nach der Installation der .fw Datei neu gestartet.
\n
\nHinweis: Du musst .res nicht installieren, wenn es genau das gleiche ist, wie die zuvor installierte.
\n
@ -562,7 +562,7 @@
<string name="korean">Koreanisch</string>
<string name="japanese">Japanisch</string>
<string name="controlcenter_change_led_color">LED-Farbe ändern</string>
<string name="controlcenter_change_fm_frequency">Ändere die Radio Frequenz</string>
<string name="controlcenter_change_fm_frequency">Radio-Frequenz ändern</string>
<string name="pref_title_notifications_timeout">Zeitabstand zwischen den Benachrichtigungen</string>
<string name="pref_title_rtl">Rechts-nach-Links</string>
<string name="pref_summary_rtl">Aktivieren, wenn dein Gerät keine Sprachen von rechts-nach-links anzeigen kann</string>
@ -690,21 +690,17 @@
<string name="interval_forty_five_minutes">alle 45 Minuten</string>
<string name="pref_title_support_voip_calls">VoIP App-Anrufe aktivieren</string>
<string name="title_activity_device_specific_settings">Gerätespezifische Einstellungen</string>
<string name="pref_title_authkey">Auth-Schlüssel</string>
<string name="pref_title_authkey">Authentifizierungsschlüssel</string>
<string name="pref_summary_authkey">Ändere den Authentifizierungsschlüssel in einen gemeinsamen Schlüssel auf all deinen Android-Geräten, von denen aus du eine Verbindung herstellen möchtet. Der bisherige Standardschlüssel für alle Geräte ist 0123456789@ABCDE</string>
<string name="devicetype_bfh16">BFH-16</string>
<string name="fw_upgrade_notice_amazfitcor2">Du bist dabei, die %s-Firmware auf deine Amazfit Cor 2 zu installieren.
\n
\n
\nBitte stelle sicher, dass Du die .fw-Datei und danach die .res-Datei installierst. Dein Band wird nach der Installation der.fw-Datei neu gestartet:
\n
\nBitte stelle sicher, dass du die .fw-Datei und danach die .res-Datei installierst. Dein Band wird nach der Installation der .fw-Datei neu gestartet.
\n
\nHinweis: Du musst .res nicht installieren, wenn es genau das gleiche ist, wie die zuvor installierte.
\n
\n
\nAUF EIGENE GEFAHR!
\n
\n
\nVOLLSTÄNDIG UNGETESTET, WAHRSCHEINLICH MUSST DU EINE BEATS_W FIRMWARE FLASHEN, WENN DEIN GERÄTENAME \"Amazfit Band 2\" IST</string>
<string name="dutch">Niederländisch</string>
<string name="turkish">Türkisch</string>
@ -742,9 +738,9 @@
<string name="pref_summary_use_custom_font">Aktiviere das, wenn dein Gerät über eine benutzerdefinierte Schriftarten-Firmware für die Emoji-Unterstützung verfügt</string>
<string name="activity_DB_ExportButton">Datenbank exportieren</string>
<string name="activity_DB_import_button">Datenbank importieren</string>
<string name="activity_DB_delete_legacy_button">alte Datenbank löschen</string>
<string name="activity_DB_delete_legacy_button">Alte Datenbank löschen</string>
<string name="activity_DB_empty_button">leere Datenbank</string>
<string name="activity_db_management_empty_DB">leere Datenbank</string>
<string name="activity_db_management_empty_DB">Leere Datenbank</string>
<string name="activity_db_management_exportimport_label">Exportieren und Importieren</string>
<string name="widget_5_minutes">5 Minuten</string>
<string name="widget_10_minutes">10 Minuten</string>
@ -757,7 +753,7 @@
<string name="activity_db_management_autoexport_label">Automatischer Export</string>
<string name="activity_DB_test_export_button">Automatischer Export jetzt starten</string>
<string name="activity_DB_test_export_message">Datenbank exportieren…</string>
<string name="activity_db_management_empty_db_warning">Achtung! Wenn Du auf diese Schaltfläche klickst, löschst Du deine Datenbank und beginnst von Grund auf neu.</string>
<string name="activity_db_management_empty_db_warning">Achtung! Wenn du auf diese Schaltfläche klickst, löschst du deine Datenbank und beginnst von Grund auf neu.</string>
<string name="appwidget_sleep_alarm_widget_label">Schlafalarm</string>
<string name="widget_steps_label">Schritte: %1$02d</string>
<string name="widget_sleep_label">Schlaf: %1$s</string>
@ -771,8 +767,38 @@
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="prefs_find_phone">Telefon finden</string>
<string name="prefs_enable_find_phone">Telefon finden aktivieren</string>
<string name="prefs_find_phone_summary">Verwende dein Band, um den Klingelton deines Handys wiederzugeben.</string>
<string name="prefs_enable_find_phone">\'Telefon finden\' einschalten</string>
<string name="prefs_find_phone_summary">Verwende dein Band, um den Klingelton deines Telefons wiederzugeben.</string>
<string name="prefs_find_phone_duration">Klingeldauer in Sekunden</string>
<string name="maximum_duration">Dauer</string>
<string name="discovery_need_to_enter_authkey">Dieses Gerät benötigt eine geheime Authentifikationstaste, die du mit einem langen Druck auf das Gerät eingeben kannst. Lies das Wiki.</string>
<string name="fw_upgrade_notice_amazfitbip_lite">Du bist dabei, die Firmware %s auf deine Amazfit Bip Lite zu installieren.
\n
\nBitte stelle sicher, dass du die .fw Datei und danach die .res Datei installierst. Deine Uhr wird nach der Installation der .fw Datei neu gestartet.
\n
\nHinweis: Du musst .res nicht installieren, wenn es genau das gleiche ist, wie die zuvor installierte.
\n
\nINSTALLATION AUF EIGENE GEFAHR!</string>
<string name="devicetype_amazfit_gtr">Amazfit GTR</string>
<string name="fw_upgrade_notice_amazfitgtr">Du bist dabei, die Firmware %s auf deine Amazfit GTR zu installieren.
\n
\nBitte stelle sicher, dass du die .fw Datei, dann die .res Datei und schließlich die .gps Datei installierst. Deine Uhr wird nach der Installation der .fw Datei neu gestartet.
\n
\nHinweis: Du musst die .res und .gps nicht installieren, wenn diese Dateien genau die gleichen sind wie die zuvor installierten.
\n
\nINSTALLATION AUF EIGENE GEFAHR!</string>
<string name="pref_chart_heartrate_color_red">Rot</string>
<string name="pref_chart_heartrate_color_orange">Orange</string>
<string name="pref_title_chart_heartrate_color">Farbe der Herzfrequenz</string>
<string name="pref_title_chart_sleep_rolling_24_hour">Schlafbereich</string>
<string name="pref_chart_sleep_rolling_24_on">Letzten 24 Stunden</string>
<string name="pref_chart_sleep_rolling_24_off">Mittag bis Mittag</string>
<string name="devicetype_amazfit_gts">Amazfit GTS</string>
<string name="fw_upgrade_notice_amazfitgts">Du bist dabei, die Firmware %s auf deine Amazfit GTS zu installieren.
\n
\nBitte stelle sicher, dass du die .fw Datei, dann die .res Datei und schließlich die .gps Datei installierst. Deine Uhr wird nach der Installation der .fw Datei neu gestartet.
\n
\nHinweis: Du musst die .res und .gps nicht installieren, wenn diese Dateien genau die gleichen sind wie die zuvor installierten.
\n
\nINSTALLATION AUF EIGENE GEFAHR!</string>
</resources>

View File

@ -41,17 +41,13 @@
<string name="title_activity_calblacklist">Αποκλεισμένα ημερολόγια</string>
<string name="title_activity_fw_app_insaller">Εγκαταστάτης εφαρμογών/FW</string>
<string name="fw_upgrade_notice">Πρόκειται να εγκαταστήσετε την έκδοση λογισμικού %s.</string>
<string name="fw_upgrade_notice_amazfitbip">"Πρόκειται να εγκαταστήστε το λογισμικό έκδοσης %s στο Amazfit Bip σας.
\n
<string name="fw_upgrade_notice_amazfitbip">Πρόκειται να εγκαταστήστε το λογισμικό έκδοσης %s στο Amazfit Bip σας.
\n
\nΠαρακαλώ να είστε σίγουροι ότι θα εγκαταστήσετε το αρχείο .fw, μετά το αρχείο .res και τέλος το αρχείο .gps. Το smartwatch θα κάνει επανεκκίνηση μετά την εγκατάσταση του .fw αρχείου.
\n
\n
\nΣημείωση: Δεν χρειάζεται η εγκατάσταση των αρχείων .res και .gps αν αυτά είναι ακριβώς τα ίδια με αυτά που έχουν εγκατασταθεί προηγουμένως.
\n
\n
\n
\nΠΡΟΧΩΡΗΣΤΕ ΜΕ ΔΙΚΗ ΣΑΣ ΕΥΘΥΝΗ!"</string>
\nΠΡΟΧΩΡΗΣΤΕ ΜΕ ΔΙΚΗ ΣΑΣ ΕΥΘΥΝΗ!</string>
<string name="fw_upgrade_notice_amazfitcor">—Πρόκειται να εγκαταστήσετε το λογισμικό %s για το Amazfit Cor.
\n
\nΠαρακαλώ βεβαιωθείτε ότι θα εγκαταστήσετε το αρχείο .fw και μετά το αρχείο .res. Το smartwatch θα επανεκκινήσει μετά την εγκατάσταση του .fw αρχείου.

View File

@ -44,8 +44,8 @@
<string name="title_activity_calblacklist">Calendarios en lista negra</string>
<!--Strings related to FwAppInstaller-->
<string name="title_activity_fw_app_insaller">Instalador de FW/App</string>
<string name="fw_upgrade_notice">Estás a punto de instalar el firmware %s del que tu Mi Band.</string>
<string name="fw_multi_upgrade_notice">Estás a punto de instalar los firmware %1$s y %2$s en lugar de los que están en tu MiBand.</string>
<string name="fw_upgrade_notice">Está a punto de instalar el %s.</string>
<string name="fw_multi_upgrade_notice">Está a punto de instalar los «firmwares» %1$s y %2$s en sustitución de los que hay actualmente en su Mi Band.</string>
<string name="miband_firmware_known">Este firmware ha sido probado y se sabe que es compatible con Gadgetbridge.</string>
<string name="miband_firmware_unknown_warning">Este firmware no ha sido probado y puede que no sea compatible con Gadgetbridge.
\n
@ -74,11 +74,11 @@
<string name="pref_title_notifications_call">Llamadas telefónicas</string>
<string name="pref_title_notifications_sms">SMS</string>
<string name="pref_title_notifications_pebblemsg">Mensajes de Pebble</string>
<string name="pref_summary_notifications_pebblemsg">Soporte para aplicaciones que envían notificaciones a Pebble a través de PebbleKit.</string>
<string name="pref_summary_notifications_pebblemsg">Compatibilidad con aplicaciones que envían notificaciones al Pebble mediante PebbleKit.</string>
<string name="pref_title_notifications_generic">Soporte para notificaciones genéricas</string>
<string name="pref_title_whenscreenon">…también con pantalla encendida</string>
<string name="pref_title_notification_filter">No Molestar</string>
<string name="pref_summary_notification_filter">Las notificaciones no deseadas se detienen en este modo</string>
<string name="pref_summary_notification_filter">Se detendrán notificaciones no deseadas en este modo</string>
<string name="pref_title_transliteration">Transcripción</string>
<string name="pref_summary_transliteration">Utilizar en caso de que tu dispositivo no soporte la fuente de tu idioma</string>
<string name="always">Siempre</string>
@ -180,7 +180,7 @@
<string name="device_with_rssi">%1$s (%2$s)</string>
<string name="title_activity_android_pairing">Emparejar dispositivo</string>
<string name="android_pairing_hint">Usar el menú de emparejamiento Bluetooth de Android para vincular el dispositivo.</string>
<string name="title_activity_mi_band_pairing">Emparejar tu MiBand</string>
<string name="title_activity_mi_band_pairing">Empareje la Mi Band</string>
<string name="pairing">Emparejando con %s…</string>
<string name="pairing_creating_bond_with">Creando emparejamiento con %1$s (%2$s)</string>
<string name="pairing_unable_to_pair_with">No se ha podido emparejar con %1$s (%2$s)</string>
@ -194,7 +194,7 @@
<string name="other">Otro</string>
<string name="left">Izquierda</string>
<string name="right">Derecha</string>
<string name="miband_pairing_using_dummy_userdata">No se han proporcionado datos de usuario válidos, se usarán datos de usuario por defecto.</string>
<string name="miband_pairing_using_dummy_userdata">No se proporcionaron datos de usuario válidos. Por ahora se emplearán datos ficticios.</string>
<string name="miband_pairing_tap_hint">Cuando tu MiBand vibre y parpadee, púlsala repetidas veces.</string>
<string name="appinstaller_install">Instalar</string>
<string name="discovery_connected_devices_hint">Haga su dispositivo detectable. Los dispositivos conectados no serán detectables. En Android 6 o superior, necesita activar la localización (ej. GPS). Desactive Privacy Guard para Gadgetbridge, debido a que podría detener y reiniciar su teléfono. Si su dispositivo no aparece en dos minutos, vuelva a intentarlo tras reiniciar su teléfono.</string>
@ -243,8 +243,8 @@
<string name="alarm_fri_short">Vie</string>
<string name="alarm_sat_short">Sáb</string>
<string name="alarm_smart_wakeup">Alarma inteligente</string>
<string name="user_feedback_miband_set_alarms_failed">Hubo un error al configurar las alarmas, ¡Por favor, inténtalo de nuevo!</string>
<string name="user_feedback_miband_set_alarms_ok">¡Alarmas enviadas al dispositivo!</string>
<string name="user_feedback_miband_set_alarms_failed">Se produjo un error al fijar las alarmas. Inténtelo de nuevo.</string>
<string name="user_feedback_miband_set_alarms_ok">Se enviaron las alarmas al dispositivo.</string>
<string name="chart_no_data_synchronize">Sin datos. ¿Sincronizar dispositivo?</string>
<string name="user_feedback_miband_activity_data_transfer">A punto de transferir %1$s de datos desde %2$s</string>
<string name="miband_prefs_fitness_goal">Objetivo de pasos diarios</string>
@ -323,7 +323,7 @@
<string name="mi2_prefs_inactivity_warnings">Alerta de inactividad</string>
<string name="mi2_prefs_inactivity_warnings_summary">La pulsera vibrará cuando hayas estado inactivo por un tiempo</string>
<string name="mi2_prefs_inactivity_warnings_threshold">Umbral de inactividad (en minutos)</string>
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Desactivar las alarmas de inactividad por un intervalo de tiempo</string>
<string name="mi2_prefs_inactivity_warnings_dnd_summary">Desactivar alarmas de inactividad por un intervalo de tiempo</string>
<string name="mi2_prefs_do_not_disturb_start">Hora de inicio</string>
<string name="mi2_prefs_do_not_disturb_end">Hora de fin</string>
<string name="FetchActivityOperation_about_to_transfer_since">A punto de transferir datos desde %1$s</string>
@ -338,7 +338,7 @@
<string name="appwidget_text">Zzz</string>
<string name="add_widget">Añadir widget</string>
<string name="activity_prefs_sleep_duration">Horas de sueño deseadas</string>
<string name="appwidget_setting_alarm">Una alarma ha sido fijada para %1$02d:%2$02d</string>
<string name="appwidget_setting_alarm">Se fijó una alarma a las %1$02d:%2$02d</string>
<string name="device_hw">Revisión de hardware: %1$s</string>
<string name="device_fw">Versión de firmware: %1$s</string>
<string name="error_creating_directory_for_logfiles">Error creando un directorio para los archivos de registro: %1$s</string>
@ -405,19 +405,13 @@
<string name="discovery_pair_question">Selecciona Emparejar para emparejar tus dispositivos. Si esto falla, prueba de nuevo sin emparejar.</string>
<string name="discovery_yes_pair">Emparejar</string>
<string name="discovery_dont_pair">No emparejar</string>
<string name="fw_upgrade_notice_amazfitbip">Estás a punto de instalar el firmware %s en tu Amazfit Bip.
<string name="fw_upgrade_notice_amazfitbip">Está a punto de instalar el «firmware» %s en su Amazfit Bip.
\n
\nPor favor, asegúrate de instalar el archivo .fw, entonces el archivo .res, y finalmente el archivo .gps. Tu reloj se reiniciará después de instalar el archivo .fw.
\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará el reloj tras instalar el archivo .fw.
\n
\nNota: no tienes que instalar los .res y .gps si ya están instalados en su última versión.
\nNota: no es necesario instalar los archivos .res y .gps si son idénticos a los instalados previamente.
\n
\n¡PROCEDE BAJO TU RESPONSABILIDAD!
\n
\nPor favor, asegúrate de instalar el firmware .gps, luego el archivo .res, y finalmente el binario .fw. Tu reloj reiniciará después de instalar el archivo .fw.
\n
\nNota: no tienes que instalar .res y .gps si estos archivos son los mismos que los previamente instalados.
\n
\nPROCEDE BAJO TU PROPIA RESPONSABILIDAD !</string>
\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO.</string>
<string name="mi2_prefs_button_actions">Acciones del botón</string>
<string name="mi2_prefs_button_actions_summary">Especificar acción para pulsación del botón del Mi Band 2</string>
<string name="mi2_prefs_button_press_count">Número de presiones</string>
@ -440,13 +434,13 @@
<string name="pref_summary_pebble_enable_bgjs">Permite a las watchfaces mostrar el tiempo, información de batería, etc.</string>
<string name="activity_web_view">Actividad Web View</string>
<string name="controlcenter_connect">Conectar…</string>
<string name="fw_upgrade_notice_amazfitcor">Estás a punto de instalar el firmware %s en tu Amazfit Cor.
<string name="fw_upgrade_notice_amazfitcor">Está a punto de instalar el «firmware» %s en su Amazfit Cor.
\n
\nPor favor, asegúrate de instalar el archivo .fw, y finalmente el archivo .res. Tu reloj reiniciará después de instalar el archivo .fw.
\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará la pulsera tras instalar el archivo .fw.
\n
\nNota: no tienes que instalar .res si este archivo es el mismo que el previamente instalado.
\nNota: no es necesario instalar el archivo .res si es idéntico al instalado previamente.
\n
\n¡PROCEDE BAJO TU PROPIA RESPONSABILIDAD !</string>
\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO.</string>
<string name="pref_title_charts_swipe">Permitir deslizar hacia izquierda/derecha en los gráficos de actividad</string>
<string name="automatic">Automático</string>
<string name="simplified_chinese">Chino simplificado</string>
@ -519,13 +513,13 @@
<string name="debugactivity_really_factoryreset">Al hacer un restablecimiento de fábrica se eliminarán todos los datos del dispositivo conectado (si se admite). Los dispositivos Xiaomi / Huami también cambian la dirección MAC de Bluetooth, por lo que aparecen como nuevos dispositivos para Gadgetbrige.</string>
<string name="blacklist_all_for_notifications">Lista negra para todas las notificaciones</string>
<string name="whitelist_all_for_notifications">Lista blanca para todas las notificaciones</string>
<string name="fw_upgrade_notice_miband3">Estás a punto de instalar el firmware %s en su Mi Band 3.
<string name="fw_upgrade_notice_miband3">Está a punto de instalar el «firmware» %s en su Mi Band 3.
\n
\nAsegúrate de instalar el archivo .fw y, a continuación, el archivo .res. Tu reloj se reiniciará después de instalar el archivo .fw.
\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará la pulsera tras instalar el archivo .fw.
\n
\nNota: No tienes que instalar el archivo .res si es el mismo que ha sido instalado previamente.
\nNota: no es necesario instalar el archivo .res si es idéntico al instalado previamente.
\n
\nNO PROBADO, PODRÍAS BRICKEAR TU DISPOSITIVO, ¡PROCEDE BAJO TU PROPIA RESPONSABILIDAD!</string>
\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO.</string>
<string name="pref_title_notifications_timeout">Tiempo mínimo entre notificaciones</string>
<string name="pref_title_rtl">Derecha a Izquierda</string>
<string name="pref_summary_rtl">Habilite esto si su dispositivo no puede mostrar idiomas de derecha a izquierda</string>
@ -602,10 +596,10 @@
<string name="watch9_calibration_hint">Establezca la hora que su dispositivo le está mostrando en este momento.</string>
<string name="share_log_warning">Tenga en cuenta que Gadgetbridge registra archivos que pueden contener mucha información personal, incluidos, entre otros, datos de salud, identificadores únicos (como la dirección MAC de un dispositivo), preferencias de música, etc. Considere editar el archivo y eliminar esta información antes de enviar el archivo a un informe público.</string>
<string name="no_data">No hay datos</string>
<string name="preferences_led_color">Color LED</string>
<string name="preferences_led_color">Color de LED</string>
<string name="preferences_fm_frequency">Frecuencia FM</string>
<string name="pref_invalid_frequency_title">Frecuencia no válida</string>
<string name="pref_invalid_frequency_message">Por favor ingrese una frecuencia entre 87.5 y 108.0</string>
<string name="pref_invalid_frequency_message">Proporcione una frecuencia entre 87,5 y 108,0</string>
<string name="language_and_region_prefs">Configuración de idioma y región</string>
<string name="title_activity_notification_filter">Filtro de Notificaciones</string>
<string name="toast_app_must_not_be_blacklisted">La aplicación no debe estar en la lista negra para ser configurada</string>
@ -617,13 +611,13 @@
<string name="filter_submode_at_least_one">Al menos una de estas palabras</string>
<string name="filter_submode_all">Todas las palabras</string>
<string name="toast_notification_filter_words_empty_hint">Ingrese al menos una palabra</string>
<string name="filter_mode">Modo de Filtro</string>
<string name="mode_configuration">Modo de Configuración</string>
<string name="save_configuration">Guardar Configuración</string>
<string name="filter_mode">Modo de filtro</string>
<string name="mode_configuration">Configuración de modo</string>
<string name="save_configuration">Guardar configuración</string>
<string name="appwidget_not_connected">No conectado, alarma no configurada.</string>
<string name="title_activity_watch9_pairing">Emparejando Watch 9</string>
<string name="title_activity_watch9_calibration">Calibrando Watch 9</string>
<string name="preferences_rtl_settings">Soporte para Derecha a Izquierda</string>
<string name="title_activity_watch9_pairing">Emparejamiento del Watch 9</string>
<string name="title_activity_watch9_calibration">Calibración del Watch 9</string>
<string name="preferences_rtl_settings">Compatibilidad con escrituras de derecha a izquierda</string>
<string name="share_log">Compartir registro</string>
<string name="warning">¡Advertencia!</string>
<string name="zetime_title_settings">Configuraciones de ZeTime</string>
@ -669,25 +663,27 @@
<string name="title_activity_device_specific_settings">Configuraciones específicas del dispositivo</string>
<string name="pref_title_authkey">Clave de autenticación</string>
<string name="pref_summary_authkey">Cambie la clave de autenticación a una clave común en todos sus dispositivos Android desde los que desea conectarse. La clave predeterminada anterior para todos los dispositivos es 0123456789@ABCDE</string>
<string name="fw_upgrade_notice_amazfitcor2">"Estás a punto de instalar el firmware para su Amazfit Cor 2.
<string name="fw_upgrade_notice_amazfitcor2">Está a punto de instalar el «firmware» %s en su Amazfit Cor 2.
\n
\nAsegúrate de instalar el archivo .fw y luego el archivo .res. Tu banda se reiniciará después de instalar el archivo .fw.
\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará la pulsera tras instalar el archivo .fw.
\n
\nNota: No tienes que instalar el archivo .res si es el mismo que ya ha sido previamente instalado.
\nNota: no es necesario instalar el archivo .res si es idéntico al instalado previamente.
\n
\n¡PROCEDE BAJO TU PROPIO RIESGO!."</string>
<string name="fw_upgrade_notice_miband4">Estás a punto de instalar el firmware% s en tu Mi Band 4.
\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO.
\n
\nAsegúrate de instalar el archivo .fw y luego el archivo .res. Tu banda se reiniciará después de instalar el archivo .fw.
\nNO SE HA REALIZADO NINGUNA PRUEBA. QUIZÁ NECESITE INSTALAR UN «FIRMWARE» BEATS_W SI EL NOMBRE DE SU DISPOSITIVO ES «Amazfit Band 2»</string>
<string name="fw_upgrade_notice_miband4">Está a punto de instalar el «firmware» %s en su Mi Band 4.
\n
\nNota: No tienes que instalar el archivo .res si es el mismo que ha sido previamente instalado.
\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará la pulsera tras instalar el archivo .fw.
\n
\n¡PROCEDE BAJO TU PROPIO RIESGO!</string>
\nNota: no es necesario instalar el archivo .res si es idéntico al instalado previamente.
\n
\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO.</string>
<string name="prefs_hr_alarm_activity">Alarma de frecuencia cardíaca durante actividad deportiva.</string>
<string name="prefs_hr_alarm_low">Límite Bajo</string>
<string name="prefs_hr_alarm_high">Límite Alto</string>
<string name="pref_screen_notification_profile_missed_call">Notificación de llamada perdida</string>
<string name="pref_screen_notification_profile_calendar">Notificación de Calendario</string>
<string name="pref_screen_notification_profile_calendar">Notificación de calendario</string>
<string name="pref_screen_notification_profile_inactivity">Notificación de inactividad</string>
<string name="interval_fifteen_minutes">Cada 15 minutos</string>
<string name="interval_forty_five_minutes">Cada 45 minutos</string>
@ -722,4 +718,60 @@
<string name="pref_charts_range_on">El rango de gráficos está configurado para un mes</string>
<string name="pref_charts_range_off">El rango de gráficos está configurado para una semana</string>
<string name="devicetype_mijia_lywsd02">Mijia Smart Clock</string>
<string name="pref_summary_expose_hr">Permite a otras aplicaciones acceder a los datos de frecuencia cardíaca en tiempo real mientras Gadgetbridge está conectado</string>
<string name="pref_title_expose_hr">Acceso terceros frec. cardíaca</string>
<string name="pref_title_use_custom_font">Utilizar tipo de letra personalizado</string>
<string name="pref_summary_use_custom_font">Actívelo si su dispositivo incluye «firmware» de tipo de letra personalizado para admitir emoyis</string>
<string name="activity_db_management_autoexport_explanation">La ubicación de exportación automática se definió en:</string>
<string name="activity_db_management_autoexport_label">Exportación automática</string>
<string name="activity_DB_ExportButton">Exportar BD</string>
<string name="activity_DB_import_button">Importar BD</string>
<string name="activity_DB_test_export_button">Ejecutar exportación automática ahora</string>
<string name="activity_DB_test_export_message">Exportando base de datos…</string>
<string name="activity_DB_delete_legacy_button">Eliminar BD anterior</string>
<string name="activity_DB_empty_button">Vaciar BD</string>
<string name="activity_db_management_empty_DB">Vaciar base de datos</string>
<string name="activity_db_management_exportimport_label">Exportar e importar</string>
<string name="activity_db_management_empty_db_warning">Atención: al pulsar en este botón se borrará la base de datos y comenzará de cero.</string>
<string name="widget_steps_label">Pasos: %1$02d</string>
<string name="widget_listing_label">Estado y alarmas</string>
<string name="widget_set_alarm_after">Fijar alarma tras:</string>
<string name="widget_5_minutes">5 minutos</string>
<string name="widget_10_minutes">10 minutos</string>
<string name="widget_20_minutes">20 minutos</string>
<string name="widget_1_hour">1 hora</string>
<plurals name="widget_alarm_target_hours">
<item quantity="one">%d hora</item>
<item quantity="other">%d horas</item>
</plurals>
<string name="pref_display_add_device_fab_on">Siempre visible</string>
<string name="pref_display_add_device_fab_off">Visible solo si no se añade ningún dispositivo</string>
<string name="activity_error_no_app_for_gpx">Para ver el rastro de actividad, instale una aplicación que maneje archivos GPX.</string>
<string name="preferences_makibes_hr3_settings">Configuración de Makibes HR3</string>
<string name="prefs_find_phone">Encontrar teléfono</string>
<string name="prefs_enable_find_phone">Encender «Encontrar teléfono»</string>
<string name="prefs_find_phone_summary">Utilice su pulsera para reproducir el tono del teléfono.</string>
<string name="prefs_find_phone_duration">Duración del tono en segundos</string>
<string name="maximum_duration">Duración</string>
<string name="discovery_need_to_enter_authkey">Este dispositivo necesita una clave de autenticación secreta. Mantenga presionado el dispositivo para introducirla. Consulte el wiki.</string>
<string name="fw_upgrade_notice_amazfitbip_lite">Está a punto de instalar el «firmware» %s en su Amazfit Bip Lite.
\n
\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará el reloj tras instalar el archivo .fw.
\n
\nNota: no es necesario instalar el archivo .res si es idéntico al instalado previamente.
\n
\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO.</string>
<string name="fw_upgrade_notice_amazfitgtr">Está a punto de instalar el «firmware» %s en su Amazfit GTR.
\n
\nAsegúrese de instalar el archivo .fw y, a continuación, el archivo .res. Se reiniciará el reloj tras instalar el archivo .fw.
\n
\nNota: no es necesario instalar los archivos .res y .gps si son idénticos a los instalados previamente.
\n
\nPROCEDA BAJO SU PROPIA CUENTA Y RIESGO.</string>
<string name="pref_chart_heartrate_color_red">Rojo</string>
<string name="pref_chart_heartrate_color_orange">Naranja</string>
<string name="pref_title_chart_heartrate_color">Color de frecuencia cardíaca</string>
<string name="pref_title_chart_sleep_rolling_24_hour">Intervalo de sueño</string>
<string name="pref_chart_sleep_rolling_24_on">Últimas 24 horas</string>
<string name="pref_chart_sleep_rolling_24_off">De mediodía a mediodía</string>
</resources>

View File

@ -433,7 +433,7 @@ Temps de sommeil préféré en heures</string>
<string name="pref_title_pebble_enable_bgjs">Activer tâche de fond JS</string>
<string name="pref_summary_pebble_enable_bgjs">Si activé, autorise l\'affichage de la météo, niveau de batterie, etc.</string>
<string name="activity_web_view">Activité Web View</string>
<string name="controlcenter_connect">Connexion</string>
<string name="controlcenter_connect">Connexion</string>
<string name="fw_upgrade_notice_amazfitcor">Vous êtes sur le point d\'installer le micrologiciel %s sur votre Amazfit Cor.
\n
\nVeuillez installer le fichier .fw, puis le fichier .res. Votre montre redémarrera après installation du fichier .fw.
@ -513,19 +513,13 @@ Temps de sommeil préféré en heures</string>
<string name="menuitem_alipay">Alipay</string>
<string name="blacklist_all_for_notifications">Mettre toutes les notifications en liste noire</string>
<string name="whitelist_all_for_notifications">Mettre toutes les notifications en liste blanche</string>
<string name="fw_upgrade_notice_miband3">"Vous allez installer le micrologiciel %s dans votre Mi Band 3.
\n
\n
<string name="fw_upgrade_notice_miband3">Vous allez installer le micrologiciel %s dans votre Mi Band 3.
\n
\nAssurez-vous d\'installer d\'abord le fichier .fw, et ensuite le fichiers .res. Votre bracelet redémarrera après l\'installation du fichiers .fw.
\n
\n
\n
\nRemarque : Vous n\'avez pas besoin d\'installer le fichier .res si c\'est exactement le même que celui déjà installé.
\n
\n
\n
\nÀ VOS RISQUES ET PÉRILS !"</string>
\nÀ VOS RISQUES ET PÉRILS !</string>
<string name="pref_title_pebble_gatt_clientonly">client GATT uniquement</string>
<string name="pref_summary_pebble_gatt_clientonly">C\'est uniquement pour les Pebble 2 et expérimental, à essayer si vous avez des problèmes de connectivité</string>
<string name="prefs_screen_orientation">Orientation de l\'écran</string>
@ -626,7 +620,7 @@ Temps de sommeil préféré en heures</string>
<string name="filter_mode">Mode Filtre</string>
<string name="mode_configuration">Mode Configuration</string>
<string name="save_configuration">Sauvegarder la configuration</string>
<string name="appwidget_not_connected">Non connecté, l\'alarme n\'est pas définie</string>
<string name="appwidget_not_connected">Non connecté, lalarme nest pas définie.</string>
<string name="prefs_disconnect_notification">Notification de déconnexion</string>
<string name="zetime_title_settings">Paramètres ZeTime</string>
<string name="zetime_title_heartrate">Paramètres Fréquence Cardiaque</string>
@ -687,11 +681,11 @@ Temps de sommeil préféré en heures</string>
\n
\nVeuillez installer le fichier .fw, puis le fichier .res. Votre montre redémarrera après installation du .fw.
\n
\nNote : Il n\'est pas nécessaire d\'installer le fichier .res si celui-ci est identique à celui installé précédemment.
\nNote : il n\'est pas nécessaire d\'installer le fichier .res si celui-ci est identique à celui installé précédemment.
\n
\nCONTINUEZ À VOS RISQUES !
\n
\nNON TESTÉ, IL PEUT ÊTRE NÉCESSAIRE DE FLASH UN micrologiciel BEATS_W SI LE NOM DE L\'APPAREIL EST \"Amazfit Band 2\"</string>
\nNON TESTÉ, IL PEUT ÊTRE NÉCESSAIRE DE FLASHER UN MICROLOGICIEL BEATS_W SI LE NOM DE L\'APPAREIL EST « Amazfit Band 2 »</string>
<string name="dutch">Néerlandais</string>
<string name="turkish">Turc</string>
<string name="ukrainian">Ukrainien</string>
@ -720,4 +714,49 @@ Temps de sommeil préféré en heures</string>
<string name="pref_title_charts_range">Gamme des graphiques</string>
<string name="weekstepschart_steps_a_month">Pas par mois</string>
<string name="weeksleepchart_sleep_a_month">Sommeil par mois</string>
<string name="menuitem_nfc">NFC</string>
<string name="pref_title_use_custom_font">Utiliser une police personnalisée</string>
<string name="activity_DB_test_export_message">Exportation de la base de données …</string>
<string name="activity_db_management_exportimport_label">Exportation et importation</string>
<string name="widget_steps_label">Étapes : %1$02d</string>
<string name="widget_listing_label">État et alarmes</string>
<string name="widget_set_alarm_after">Régler lalarme après :</string>
<string name="widget_5_minutes">5 minutes</string>
<string name="widget_10_minutes">10 minutes</string>
<string name="widget_20_minutes">20 minutes</string>
<string name="widget_1_hour">1 heure</string>
<string name="pref_display_add_device_fab_on">Toujours visible</string>
<string name="pref_display_add_device_fab_off">Visible uniquement si aucun appareil n\'est ajouté</string>
<string name="prefs_find_phone_duration">Durée de la sonnerie en secondes</string>
<string name="maximum_duration">Durée</string>
<string name="pref_charts_range_on">La portée des graphs est réglée sur un mois</string>
<string name="pref_charts_range_off">La portée des graphs est réglée sur une semaine</string>
<string name="devicetype_mijia_lywsd02">Mijia Smart Clock</string>
<string name="pref_summary_expose_hr">Permettre aux autres applis d\'accéder aux données de fréquence cardiaque en temps réel lorsque Gadgetbridge est connecté</string>
<string name="pref_title_expose_hr">Accès tiers fréq. cardiaque</string>
<string name="pref_summary_use_custom_font">À activer si votre appareil a une police spéciale embarquée pour prendre en charge les émoticônes</string>
<string name="activity_db_management_autoexport_explanation">L\'export automatique des données est réglé vers :</string>
<string name="activity_db_management_autoexport_label">Export auto</string>
<string name="activity_DB_ExportButton">Export de données</string>
<string name="activity_DB_import_button">Import de données</string>
<string name="activity_DB_test_export_button">Lancer l\'export maintenant</string>
<string name="activity_DB_delete_legacy_button">Supprimer les anciennes données</string>
<string name="activity_DB_empty_button">Vider la base de données</string>
<string name="activity_db_management_empty_DB">Vide la base de données</string>
<string name="activity_db_management_empty_db_warning">Attention ! Ce bouton détruit votre base de données et réinitialise.</string>
<string name="appwidget_sleep_alarm_widget_label">Réveil</string>
<string name="widget_sleep_label">"Dormir %1$ s"</string>
<plurals name="widget_alarm_target_hours">
<item quantity="one">%d heure</item>
<item quantity="other">%d heures</item>
</plurals>
<string name="pref_display_add_device_fab">Bouton pour connecter un nouvel appareil</string>
<string name="activity_error_no_app_for_gpx">Pour visualiser votre géolocalisation, installez une appli qui lit les fichiers GPX.</string>
<string name="preferences_makibes_hr3_settings">Réglages Makibes HR3</string>
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="prefs_find_phone">Trouver le téléphone</string>
<string name="prefs_enable_find_phone">Activer « Trouver le tél. »</string>
<string name="prefs_find_phone_summary">Utilisez votre bande pour lire l\'alarme de votre téléphone.</string>
<string name="discovery_need_to_enter_authkey">Cet appareil a besoin d\'une clé d\'auth. Pression longue sur celui-ci pour la saisir. Lisez le wiki.</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="app_name">Gadgetbridge</string>
<?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">Axustes</string>
<string name="action_debug">Depuración</string>
@ -19,10 +19,7 @@
<string name="controlcenter_snackbar_disconnecting">Desconectando</string>
<string name="controlcenter_snackbar_connecting">Conectando</string>
<string name="controlcenter_snackbar_requested_screenshot">Capturando pantalla do dispositivo</string>
<string name="title_activity_debug">Depurar</string>
<string name="title_activity_appmanager">Xestor de App</string>
<string name="appmanager_cached_watchapps_watchfaces">Apps en caché</string>
<string name="appmanager_installed_watchapps">Apps instaladas</string>
@ -40,11 +37,8 @@
<string name="appmanager_weather_install_provider">Instalar a app de notificacións do clima</string>
<string name="app_configure">Configurar</string>
<string name="app_move_to_top">Mover para arriba</string>
<string name="title_activity_appblacklist">Bloqueo de notificacións</string>
<string name="title_activity_calblacklist">Calendarios bloqueados</string>
<string name="title_activity_fw_app_insaller">Instalador de FW/App</string>
<string name="fw_upgrade_notice">Está a piques de instalar o firmware %s no lugar do actual na súa Mi Band.</string>
<string name="fw_multi_upgrade_notice">Está a piques de instalar os firmwares %1$s e %2$s no canto dos que están actualmente na súa Mi Band.</string>
@ -53,30 +47,23 @@
\n
\nRECOMENDASE QUE NON o instale na súa Mi Band!</string>
<string name="miband_firmware_suggest_whitelist">Se aínda así quere proceder e todo continúa a funcionar normalmente, por favor avise aos programadores do Gadgetbridge para que permitan a versión %s do firmware</string>
<string name="title_activity_settings">Axustes</string>
<string name="pref_header_general">Axustes xerais</string>
<string name="pref_title_general_autoconnectonbluetooth">Conectar ao dispositivo ao activar o Bluetooth</string>
<string name="pref_title_general_autostartonboot">Iniciar automaticamente</string>
<string name="pref_title_general_autoreconnect">Reconectar automaticamente</string>
<string name="pref_title_audio_player">Reprodutor de audio preferido</string>
<string name="pref_default">Predefinido</string>
<string name="pref_header_datetime">Data e Hora</string>
<string name="pref_title_datetime_syctimeonconnect">Sincronizar hora</string>
<string name="pref_summary_datetime_syctimeonconnect">Sincronizar hora ao conectar e ao cambiar o fuso horario no android</string>
<string name="pref_title_theme">Tema</string>
<string name="pref_theme_light">Claro</string>
<string name="pref_theme_dark">Escuro</string>
<string name="pref_title_language">Idioma</string>
<string name="pref_title_minimize_priority">Ocultar a notificación de Gadgetbridge</string>
<string name="pref_summary_minimize_priority_off">Amosar icono na barra de estado e notificación na pantalla de bloqueo</string>
<string name="pref_summary_minimize_priority_on">Ocultar icono na barra de estado e notificación na pantalla de bloqueo</string>
<string name="pref_header_notifications">Notificacións</string>
<string name="pref_title_notifications_repetitions">Repeticións</string>
<string name="pref_title_notifications_call">Chamadas telefónicas</string>
@ -89,43 +76,33 @@
<string name="pref_summary_notification_filter">Parar notificacións indesexadas no modo Non Molestar</string>
<string name="pref_title_transliteration">Transliteración</string>
<string name="pref_summary_transliteration">Activar isto se o dispositivo non ten soporte para o seu idioma</string>
<string name="always">Sempre</string>
<string name="when_screen_off">Cando a pantalla está apagada</string>
<string name="never">Nunca</string>
<string name="pref_header_privacy">Privacidade</string>
<string name="pref_title_call_privacy_mode">Modo de privacidade de chamada</string>
<string name="pref_call_privacy_mode_off">Amosar nome e número</string>
<string name="pref_call_privacy_mode_name">Ocultar nome pero amosar número</string>
<string name="pref_call_privacy_mode_number">Ocultar número pero amosar nome</string>
<string name="pref_call_privacy_mode_complete">Ocultar nome e número</string>
<string name="pref_blacklist">Bloquear Apps</string>
<string name="pref_blacklist_calendars">Bloquear Calendarios</string>
<string name="pref_header_cannned_messages">Histórico de mensaxes</string>
<string name="pref_title_canned_replies">Respostas</string>
<string name="pref_title_canned_reply_suffix">Sufixo común</string>
<string name="pref_title_canned_messages_dismisscall">Rexeitar chamada</string>
<string name="pref_title_canned_messages_set">Actualizar no Pebble</string>
<string name="pref_header_development">Opcións de desenvolvedor</string>
<string name="pref_title_development_miaddr">Enderezo do MiBand</string>
<string name="pref_title_pebble_settings">Axustes do Pebble</string>
<string name="pref_header_activitytrackers">Monitores de actividade</string>
<string name="pref_title_pebble_activitytracker">Monitor de actividade preferido</string>
<string name="pref_title_pebble_sync_health">Sincronizar con Pebble Health</string>
<string name="pref_title_pebble_sync_misfit">Sincronizar con Misfit</string>
<string name="pref_title_pebble_sync_morpheuz">Sincronizar con Morpheuz</string>
<string name="pref_title_enable_outgoing_call">Soporte para chamadas saíntes</string>
<string name="pref_title_enable_pebblekit">Permitir acceso a Apps Android de terceiros</string>
<string name="pref_summary_enable_pebblekit">Habilitar soporte experimental para Apps Android que usen PebbleKit</string>
<string name="pref_title_sunrise_sunset">Mencer e solpor</string>
<string name="pref_summary_sunrise_sunset">Enviar mencer e solpor baseado na localización do Pebble</string>
<string name="pref_title_enable_calendar_sync">Sincronizar calendario</string>
@ -133,7 +110,6 @@
<string name="pref_title_pebble_privacy_mode">Modo de privacidade</string>
<string name="pref_pebble_privacy_mode_off">Notificacións normais</string>
<string name="pref_pebble_privacy_mode_complete">Só amosar o icono de notificación</string>
<string name="pref_header_location">Localización</string>
<string name="pref_title_location_aquire">Obter ubicación</string>
<string name="pref_title_location_latitude">Latitude</string>
@ -141,7 +117,6 @@
<string name="pref_title_location_keep_uptodate">Manter actualizada a ubicación</string>
<string name="toast_enable_networklocationprovider">Por favor, active a ubicación por rede</string>
<string name="toast_aqurired_networklocation">ubicación obtida</string>
<string name="pref_title_pebble_forceprotocol">Forzar o protocolo de notificación</string>
<string name="pref_summary_pebble_forceprotocol">Esta opción forza o uso do protocolo de notificación máis recente dependendo da versión do firmware. HABILITE SE SABE O QUE ESTÁ FACENDO!</string>
<string name="pref_title_pebble_forceuntested">Habilitar características non probadas</string>
@ -149,7 +124,6 @@
<string name="pref_title_pebble_enable_applogs">Activar rexistro das Apps do dispositivo</string>
<string name="pref_summary_pebble_enable_applogs">Causa que os rexistros das apps do reloxo sexan gardados polo Gadgetbridge (necesita reconectar)</string>
<string name="pref_title_pebble_reconnect_attempts">Intentos de reconexión</string>
<string name="pref_title_unit_system">Unidades</string>
<string name="pref_title_timeformat">Formato de hora</string>
<string name="pref_title_screentime">Tempo de pantalla acesa</string>
@ -176,7 +150,6 @@
<string name="initialized">inicializado</string>
<string name="appversion_by_creator">%1$s de %2$s</string>
<string name="title_activity_discovery">Descubrir dispositivos</string>
<string name="discovery_stop_scanning">Parar a busca</string>
<string name="discovery_start_scanning">Comezar a busca</string>
<string name="action_discover">Conectar novo dispositivo</string>
@ -189,21 +162,16 @@
<string name="pairing_unable_to_pair_with">Incapaz de emparellar con %1$s (%2$s)</string>
<string name="preferences_category_device_specific_settings">Axustes específicos do dispositivo</string>
<string name="pref_summary_enable_outgoing_call">Deshabilitar isto tamén impedirá o Pebble 2/LE vibrar en chamadas saíntes</string>
<string name="pref_header_pebble_timeline">Timeline do Pebble</string>
<string name="pref_summary_enable_calendar_sync">Enviar os eventos do calendario ao timeline</string>
<string name="pref_summary_autoremove_notifications">As notificacións borranse automáticamente do Pebble cando se rexeitan en Android</string>
<string name="pref_pebble_privacy_mode_content">Desplaza a notificación fora da pantalla</string>
<string name="pref_summary_location_keep_uptodate">Intentar obter a ubicación durante a execución, usar a ubicación almacenada como respaldo</string>
<string name="pref_summary_pebble_forceuntested">Activar características non probadas. ¡ACTIVAO SÓ SE SABES O QUE FAS!</string>
<string name="pref_title_pebble_mtu_limit">Pebble 2/LE límite de GATT MTU</string>
<string name="pref_summary_pebble_mtu_limit">Se o teu Pebble 2/Pebble LE non funciona correctamente, proba esta opción para limitar o MTU (rango válido 20512)</string>
<string name="pref_title_pebble_always_ack_pebblekit">Anticipar confirmacións do PebbleKit</string>
<string name="preferences_hplus_settings">Axustes de HPlus/Makibes</string>
<string name="firmware_install_warning">ESTÁS INTENTANDO INSTALAR UN FIRMWARE, CONTINÚA BAIXO A TÚA RESPONSABILIDADE
\n
\n
@ -231,7 +199,6 @@
<string name="candidate_item_device_image">Imaxe do dispositivo</string>
<string name="miband_prefs_alias">Nome/Alcume</string>
<string name="pref_header_vibration_count">Cantidade de vibracións</string>
<string name="title_activity_sleepmonitor">Monitor de sono</string>
<string name="pref_write_logfiles">Escreber arquivos de rexistro</string>
<string name="initializing">Inicializando</string>
@ -239,7 +206,6 @@
<string name="sleep_activity_date_range">De %1$s até %2$s</string>
<string name="prefs_wearside">De que lado a usa?</string>
<string name="pref_screen_vibration_profile">Perfil de vibración</string>
<string name="vibration_profile_staccato">Moi curto</string>
<string name="vibration_profile_short">Curto</string>
<string name="vibration_profile_medium">Medio</string>
@ -248,7 +214,6 @@
<string name="vibration_profile_ring">Timbre</string>
<string name="vibration_profile_alarm_clock">Alarma</string>
<string name="miband_prefs_vibration">Vibración</string>
<string name="vibration_try">Probar</string>
<string name="pref_screen_notification_profile_sms">Notificación de SMS</string>
<string name="pref_header_vibration_settings">Axustes de vibración</string>
@ -258,11 +223,9 @@
<string name="pref_screen_notification_profile_generic_chat">Conversas</string>
<string name="pref_screen_notification_profile_generic_navigation">Navegación</string>
<string name="pref_screen_notification_profile_generic_social">Rede social</string>
<string name="stats_title">Zonas de velocidade</string>
<string name="stats_x_axis_label">Minutos totais</string>
<string name="stats_y_axis_label">Pasos por minuto</string>
<string name="control_center_find_lost_device">Atopar dispositivo perdido</string>
<string name="control_center_cancel_to_stop_vibration">Cancelar para deter a vibración.</string>
<string name="title_activity_charts">A túa actividade</string>
@ -327,7 +290,6 @@
<string name="pref_summary_keep_data_on_device">Manterá os datos na Mi Band mesmo despois da sincronización. Útil se o GB é utilizado en simultáneo con outras aplicacións.</string>
<string name="pref_title_low_latency_fw_update">Usar modo de baixa latencia para anovacións de Firmware</string>
<string name="pref_summary_low_latency_fw_update">Isto pode axudar en dispositivos nos que fallen as actualizacións de firmware</string>
<string name="live_activity_steps_history">Historial de pasos</string>
<string name="live_activity_current_steps_per_minute">Pasos/min actuais</string>
<string name="live_activity_total_steps">Pasos totais</string>
@ -374,18 +336,14 @@
<string name="mi2_prefs_do_not_disturb_start">Hora de inicio</string>
<string name="mi2_prefs_do_not_disturb_end">Hora de fin</string>
<string name="FetchActivityOperation_about_to_transfer_since">A piques de transferir dados desde %1$s</string>
<string name="waiting_for_reconnect">Agardando reconexión</string>
<string name="activity_prefs_about_you">Sobre ti</string>
<string name="activity_prefs_year_birth">Ano de nacemento</string>
<string name="activity_prefs_gender">Xénero</string>
<string name="activity_prefs_height_cm">Altura en cm</string>
<string name="activity_prefs_weight_kg">Peso en kg</string>
<string name="authenticating">Autenticando</string>
<string name="authentication_required">Requerida autenticación</string>
<string name="appwidget_text">ZzZ</string>
<string name="add_widget">Engadir widget</string>
<string name="activity_prefs_sleep_duration">Duración de sono preferida en horas</string>
@ -398,7 +356,6 @@
<string name="updatefirmwareoperation_firmware_not_sent">Firmware non enviado</string>
<string name="charts_legend_heartrate">Ritmo cardíaco</string>
<string name="live_activity_heart_rate">Ritmo cardíaco</string>
<string name="pref_title_pebble_health_store_raw">Almacenar rexistro en bruto na base de datos</string>
<string name="action_db_management">Xestión da base de datos</string>
<string name="title_activity_db_management">Xestión da base de datos</string>
@ -426,16 +383,12 @@
<string name="dbmanagementactivity_overwrite">Sobreescribir</string>
<string name="Cancel">Cancelar</string>
<string name="Delete">Borrar</string>
<string name="title_activity_vibration">Vibración</string>
<string name="title_activity_pebble_pairing">Emparellando co Pebble</string>
<string name="pref_title_setup_bt_pairing">Activar o emparellamento Bluetooth</string>
<string name="pref_summary_setup_bt_pairing">Desactiva isto se tes problemas de conexión</string>
<string name="unit_metric">Métrico</string>
<string name="unit_imperial">Imperial</string>
<string name="timeformat_24h">24H</string>
<string name="timeformat_am_pm">AM/PM</string>
<string name="pref_screen_notification_profile_alarm_clock">Espertador</string>
@ -457,7 +410,6 @@
<string name="discovery_pair_title">Emparellar con %1$s?</string>
<string name="discovery_yes_pair">Emparellar</string>
<string name="discovery_dont_pair">Non emparellar</string>
<string name="_pebble_watch_open_on_phone">Abrir no teléfono</string>
<string name="_pebble_watch_mute">Silenciar</string>
<string name="_pebble_watch_reply">Responder</string>
@ -470,13 +422,11 @@
\nPROCEDE BAIXO A TÚA PROPIA RESPONSABILIDADE!</string>
<string name="pref_summary_pebble_forcele">Use soporte experimental do Pebble LE para todos os Pebble nas veces do Bluetooth clásico. Isto require vincular primeiro con Pebble non LE, e despois Pebble LE</string>
<string name="pref_summary_pebble_always_ack_pebblekit">Isto fará que as mensaxes enviadas para apps de terceiros sexan recoñecidas sempre e inmediatamente</string>
<string name="miband_prefs_device_time_offset_hours">Compensación da hora do dispositivo en horas (para detectar o sono de traballadores a turnos)</string>
<string name="mi2_prefs_button_press_broadcast_summary">Enviar mensaxe despois dun número definido de pulsacións</string>
<string name="mi2_prefs_button_press_count_match_delay_summary">Retardo despois dunha acción do botón (o número está en button_id intent extra) ou ben 0 para efecto inmediato</string>
<string name="pref_summary_pebble_health_store_raw">Se marcado, os datos son almacenados no seu formato orixinal ficando disponíbeis para posterior interpretación. Nota: A base de datos será máis grande!</string>
<string name="pebble_pairing_hint">Verá unha notificación de emparellamento no seu dispositivo Android. Se non, acceda ás notificacións e acepte a solicitude de emparellamento. posteriormente a solicitude de emparellamento no seu Pebble</string>
<string name="weather_notification_label">Asegúrate de que este tema esté activado na aplicación de notificación do clima para obter a información no teu Pebble.
\n
\nNon se require configuración.
@ -495,25 +445,19 @@
\nNON PROBADO, PODERÍA BLOQUEAR O TEU DISPOSITIVO, PROCEDE BAIXO A TÚA PROPIA RESPONSABILIDADE!</string>
<string name="pref_title_pebble_enable_bgjs">Habilitar JS de fondo</string>
<string name="pref_summary_pebble_enable_bgjs">"Permite ás watchfaces amosar o tempo, información de batería, etc."</string>
<string name="activity_web_view">Actividade Vista Web</string>
<string name="pref_title_charts_swipe">Permitir deslizar a esquerda/dereita nas gráficas de actividade</string>
<string name="automatic">Automático</string>
<string name="simplified_chinese">Chinés simplificado</string>
<string name="traditional_chinese">Chinés tradicional</string>
<string name="english">Inglés</string>
<string name="pref_title_weather_location">Localización para Méteoroloxía (CM/LOS)</string>
<string name="prefs_title_heartrate_measurement_interval">Medición de pulso todo o día</string>
<string name="interval_one_minute">cada minuto</string>
<string name="interval_five_minutes">cada 5 minutos</string>
<string name="interval_ten_minutes">cada 10 minutos</string>
<string name="interval_thirty_minutes">cada 30 minutos</string>
<string name="interval_one_hour">cada hora</string>
<string name="kind_firmware">Firmware</string>
<string name="kind_invalid">Datos inválidos</string>
<string name="kind_font">Fonte</string>
@ -535,10 +479,8 @@
<string name="pref_title_auto_export_location">Exportar localización</string>
<string name="pref_title_auto_export_interval">Exportar intervalo</string>
<string name="pref_summary_auto_export_interval">Exportar cada %d horas</string>
<string name="notif_export_failed_title">Fallou a exportación da base de datos! Por favor, comproba os teus axustes.</string>
<string name="kind_watchface">Watchface</string>
<string name="devicetype_vibratissimo">Vibratissimo</string>
<string name="devicetype_liveview">Vista en Vivo</string>
<string name="devicetype_hplus">HPlus</string>
@ -547,9 +489,7 @@
<string name="devicetype_no1_f1">No.1 F1</string>
<string name="choose_auto_export_location">Escolle lugar para exportar</string>
<string name="spanish">Castelán</string>
<string name="devicetype_xwatch">XWatch</string>
<string name="notification_channel_name">Notificacións do Gadgetbridge</string>
<string name="on">Aceso</string>
<string name="controlcenter_start_activity_tracks">Os teus rexistros de actividade</string>
@ -568,7 +508,6 @@
<string name="select_all">Seleccionar todas</string>
<string name="share">Compartir</string>
<string name="reset_index">Restablecer a data de obtención</string>
<string name="menuitem_status">Estado</string>
<string name="menuitem_activity">Actividade</string>
<string name="menuitem_weather">Meteoroloxía</string>

View File

@ -211,7 +211,7 @@
<string name="pref_screen_notification_profile_generic_social">רשת חברתית</string>
<string name="control_center_find_lost_device">איתור התקן שאבד</string>
<string name="control_center_cancel_to_stop_vibration">יש לבטל כדי לעצור את הרטט.</string>
<string name="title_activity_charts">הפעילות שלך</string>
<string name="title_activity_charts">פעילות ושינה</string>
<string name="title_activity_set_alarm">הגדרת שעון מעורר</string>
<string name="controlcenter_start_configure_alarms">הגדרת שעון מעורר</string>
<string name="title_activity_alarm_details">פרטי השעון המעורר</string>
@ -239,11 +239,11 @@
<string name="notif_battery_low_percent">נותר בסוללה של %1$s: %2$s%%</string>
<string name="notif_battery_low_bigtext_last_charge_time">טעינה אחרונה: %s \n</string>
<string name="notif_battery_low_bigtext_number_of_charges">מספר טעינות: %s</string>
<string name="sleepchart_your_sleep">השינה שלך</string>
<string name="sleepchart_your_sleep">שינה</string>
<string name="weeksleepchart_sleep_a_week">שינה בשבוע</string>
<string name="weeksleepchart_today_sleep_description">שינה היום, יעד: %1$s</string>
<string name="weekstepschart_steps_a_week">צעדים בשבוע</string>
<string name="activity_sleepchart_activity_and_sleep">הפעילות והשינה שלך</string>
<string name="activity_sleepchart_activity_and_sleep">פעילות</string>
<string name="updating_firmware">הקושחה מתעדכנת…</string>
<string name="fwapp_install_device_not_ready">לא ניתן להתקין את הקובץ, ההתקן לא מוכן.</string>
<string name="installhandler_firmware_name">%3$s %2$s :%1$s</string>
@ -385,7 +385,7 @@
<string name="mi2_prefs_inactivity_warnings_dnd_summary">השבתת אזהרות חוסר פעילות לפרק זמן מסוים</string>
<string name="mi2_prefs_do_not_disturb_start">מועד ההתחלה</string>
<string name="mi2_prefs_do_not_disturb_end">מועד הסיום</string>
<string name="fw_upgrade_notice_amazfitbip">פעולה זו תתקין את הקושחה %s במקום זו שכרגע מותקנת ב־Amazfit Bip שלך.
<string name="fw_upgrade_notice_amazfitbip">פעולה זו תתקין את הקושחה %s ב־Amazfit Bip שלך.
\n
\nנא לוודא את התקנת קושחת ה־‎.fw בהתחלה, לאחר מכן את קובץ ה־‎.res ולבסוף קובץ ה־‎.gps השעון שלך יופעל מחדש לאחר התקנת קובץ ה־fw.
\n
@ -755,8 +755,38 @@
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="prefs_find_phone">איתור הטלפון</string>
<string name="prefs_enable_find_phone">הפעלת איתור הטלפון</string>
<string name="prefs_enable_find_phone">הפעלת איתור הטלפון</string>
<string name="prefs_find_phone_summary">ניתן להשתמש בצמיד כדי שהטלפון שלך ישמיע צלצול.</string>
<string name="prefs_find_phone_duration">משך זמן הצלצול בשניות</string>
<string name="maximum_duration">משך</string>
<string name="discovery_need_to_enter_authkey">למכשיר זה נדרש מפתח אימות סודי, יש לגעת נגיעה ארוכה על המכשיר כדי להזין אותו. פרטים נוספים בוויקי.</string>
<string name="fw_upgrade_notice_amazfitbip_lite">פעולה זו תתקין את הקושחה %s על ה־Amazfit Bip Lite שלך.
\n
\nנא לוודא את התקנת קושחת ה־‎.fw בהתחלה, לאחר מכן את קובץ ה־‎.res השעון שלך יופעל מחדש לאחר התקנת קובץ ה־fw.
\n
\nלתשומת לבך: אין צורך בהתקנת קובץ ה־‎.res אם הוא כבר זהה לזה שהתקנת בעבר.
\n
\nהמשך התהליך הוא על אחריותך!</string>
<string name="devicetype_amazfit_gtr">Amazfit GTR</string>
<string name="fw_upgrade_notice_amazfitgtr">פעולה זו תתקין את הקושחה %s במקום זו שכרגע מותקנת ב־Amazfit GTR שלך.
\n
\nנא לוודא את התקנת קושחת ה־‎.fw בהתחלה, לאחר מכן את קובץ ה־‎.res ולבסוף קובץ ה־‎.gps השעון שלך יופעל מחדש לאחר התקנת קובץ ה־fw.
\n
\nלתשומת לבך: אין צורך בהתקנת קובצי ה־‎.res וה־‎.gps אם הם כבר זהים לאלו שהתקנת בעבר.
\n
\nהמשך התהליך הוא על אחריותך!</string>
<string name="pref_chart_heartrate_color_red">אדום</string>
<string name="pref_chart_heartrate_color_orange">כתום</string>
<string name="pref_title_chart_heartrate_color">צבע דופק</string>
<string name="pref_title_chart_sleep_rolling_24_hour">טווח שינה</string>
<string name="pref_chart_sleep_rolling_24_on">24 השעות האחרונות</string>
<string name="pref_chart_sleep_rolling_24_off">צהריים עד צהריים</string>
<string name="devicetype_amazfit_gts">Amazfit GTS</string>
<string name="fw_upgrade_notice_amazfitgts">פעולה זו תתקין את הקושחה %s ב־Amazfit GTS שלך.
\n
\nנא לוודא את התקנת קושחת ה־‎.fw בהתחלה, לאחר מכן את קובץ ה־‎.res ולבסוף קובץ ה־‎.gps השעון שלך יופעל מחדש לאחר התקנת קובץ ה־fw.
\n
\nלתשומת לבך: אין צורך בהתקנת קובצי ה־‎.res וה־‎.gps אם הם כבר זהים לאלו שהתקנת בעבר.
\n
\nהמשך התהליך הוא על אחריותך!</string>
</resources>

View File

@ -7,7 +7,7 @@
<string name="controlcenter_fetch_activity_data">Synkroniser</string>
<string name="controlcenter_find_device">Finn mistet enhet</string>
<string name="controlcenter_take_screenshot">Utfør skjermavbildning</string>
<string name="controlcenter_connect">Koble til</string>
<string name="controlcenter_connect">Koble til</string>
<string name="controlcenter_disconnect">Koble fra</string>
<string name="controlcenter_delete_device">Slett enhet</string>
<string name="controlcenter_delete_device_name">Slett %1$s</string>
@ -44,7 +44,7 @@
<string name="controlcenter_delete_device_dialogmessage">Dette vil slette enheten og all tilknyttet data!</string>
<string name="fw_upgrade_notice_amazfitbip">Du er i ferd med å installere %s-fastvaren på din Amazfit Bip.
\n
\nForsikre deg om at du installerer ..fw-fila, så .res-fila, og til sist gps-fila. Armbåndsuret ditt vil starte på nytt etter at .fw-fila er installert.
\nForsikre deg om at du installerer .fw-fila, så .res-fila, og til sist gps-fila. Armbåndsuret ditt vil starte på nytt etter at .fw-fila er installert.
\n
\nMerk: Du må ikke installere .res og .gps hvis disse er akkurat de samme som dem som allerede er installert.
\n
@ -243,7 +243,7 @@
<string name="stats_y_axis_label">Steg per minutt</string>
<string name="control_center_find_lost_device">Finn tapt enhet</string>
<string name="control_center_cancel_to_stop_vibration">Avbryt for å stoppe vibrasjon.</string>
<string name="title_activity_charts">Din aktivitet</string>
<string name="title_activity_charts">Aktivitet og søvn</string>
<string name="title_activity_set_alarm">Sett opp alarmer</string>
<string name="controlcenter_start_configure_alarms">Sett opp alarmer</string>
<string name="title_activity_alarm_details">Alarmdetaljer</string>
@ -272,11 +272,11 @@
<string name="notif_battery_low_bigtext_last_charge_time">Siste oppladning: %s
\n</string>
<string name="notif_battery_low_bigtext_number_of_charges">Antall ladinger: %s</string>
<string name="sleepchart_your_sleep">Din søvn</string>
<string name="sleepchart_your_sleep">Søvn</string>
<string name="weeksleepchart_sleep_a_week">Søvn per uke</string>
<string name="weeksleepchart_today_sleep_description">Søvn i dag, mål: %1$s</string>
<string name="weekstepschart_steps_a_week">Steg per uke</string>
<string name="activity_sleepchart_activity_and_sleep">Din aktivitet og søvn</string>
<string name="activity_sleepchart_activity_and_sleep">Aktivitet</string>
<string name="updating_firmware">Oppgraderer fastvare…</string>
<string name="fwapp_install_device_not_ready">Kan ikke installere fil, enheten er ikke klar.</string>
<string name="installhandler_firmware_name">%1$s: %2$s %3$s</string>
@ -353,8 +353,8 @@
<string name="activity_prefs_gender">Kjønn</string>
<string name="activity_prefs_height_cm">Høyde i cm</string>
<string name="activity_prefs_weight_kg">Vekt i kg</string>
<string name="authenticating">Autentiserer</string>
<string name="authentication_required">Autentisering kreves</string>
<string name="authenticating">Identitetsbekrefter</string>
<string name="authentication_required">Identitetsbekreftelse kreves</string>
<string name="appwidget_text">Zzz</string>
<string name="add_widget">Legg til miniprogram</string>
<string name="activity_prefs_sleep_duration">Foretrukket søvn i timer</string>
@ -520,7 +520,7 @@
<string name="menuitem_shortcut_weather">Vær (snarvei)</string>
<string name="fw_upgrade_notice_miband3">Du er i ferd med å installere %s-fastvaren på din Mi Band 3.
\n
\nInstaler først .fw-fila, og dernest .res-fila. Båndet ditt vil starte på nytt etter at du installerer .fw-fila.
\nInstaller først .fw-fila, og dernest .res-fila. Båndet ditt vil starte på nytt etter at du installerer .fw-fila.
\n
\nMerk: Du trenger ikke å installere .res hvis du har akkurat den samme installert.
\n
@ -755,4 +755,40 @@
<string name="activity_error_no_app_for_gpx">For å vise aktivitetsspor, installer et program som kan håndtere GPX-filer.</string>
<string name="preferences_makibes_hr3_settings">Makibes HR3-innstillinger</string>
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="prefs_find_phone">Finn telefon</string>
<string name="prefs_enable_find_phone">Skru på \"Finn telefon\"</string>
<string name="prefs_find_phone_summary">Bruk båndet ditt til å spille av telefonens ringetone.</string>
<string name="prefs_find_phone_duration">Anropsvarighet i sekunder</string>
<string name="maximum_duration">Varighet</string>
<string name="discovery_need_to_enter_authkey">Denne enheten trenger en hemmelig identitetsbekreftelsesnøkkel. Trykk lenge på enheten for å skrive den inn. Les wiki-en.</string>
<string name="fw_upgrade_notice_amazfitbip_lite">Du er i ferd med å installere %s-fastvaren på din Amazfit Bip Lite.
\n
\nForsikre deg om at du installerer .fw-fila, så .res-fila, og til sist gps-fila. Armbåndsuret ditt vil starte på nytt etter at .fw-fila er installert.
\n
\nMerk: Du trenger ikke å installere .res-filen hvis den er akkurat den samme som den som allerede er installert.
\n
\nFORTSETT PÅ EGEN RISIKO!</string>
<string name="devicetype_amazfit_gtr">Amazfit GTR</string>
<string name="pref_chart_heartrate_color_red">Rød</string>
<string name="pref_chart_heartrate_color_orange">Oransje</string>
<string name="pref_title_chart_heartrate_color">Pulsfarge</string>
<string name="fw_upgrade_notice_amazfitgtr">Du er i ferd med å installere %s-fastvaren på din Amazfit GTR.
\n
\nForsikre deg om at du installerer .fw-fila, så .res-fila, og til sist gps-fila. Armbåndsuret ditt vil starte på nytt etter at .fw-fila er installert.
\n
\nMerk: Du trenger ikke å installere .res-filen hvis den er akkurat den samme som den som allerede er installert.
\n
\nFORTSETT PÅ EGEN RISIKO!</string>
<string name="pref_title_chart_sleep_rolling_24_hour">Søvnperiode</string>
<string name="pref_chart_sleep_rolling_24_on">Siste 24 timer</string>
<string name="pref_chart_sleep_rolling_24_off">12:00 til 12:00</string>
<string name="devicetype_amazfit_gts">Amazfit GTS</string>
<string name="fw_upgrade_notice_amazfitgts">Du er i ferd med å installere %s-fastvaren på din Amazfit GTS.
\n
\nForsikre deg om at du installerer .fw-fila, så .res-fila, og til sist gps-fila. Armbåndsuret ditt vil starte på nytt etter at .fw-fila er installert.
\n
\nMerk: Du må ikke installere .res og .gps hvis disse er akkurat de samme som dem som allerede er installert.
\n
\nFORTSETT PÅ EGEN RISIKO!</string>
</resources>

View File

@ -265,7 +265,7 @@
<string name="stats_y_axis_label">Stappen per minuut</string>
<string name="control_center_find_lost_device">Zoek verloren toestel</string>
<string name="control_center_cancel_to_stop_vibration">Annuleer om vibratie te stoppen.</string>
<string name="title_activity_charts">Uw activiteit</string>
<string name="title_activity_charts">Activiteit en Slaap</string>
<string name="title_activity_set_alarm">Alarmen configureren</string>
<string name="controlcenter_start_configure_alarms">Alarmen configureren</string>
<string name="title_activity_alarm_details">Alarm details</string>
@ -294,11 +294,11 @@
<string name="notif_battery_low_bigtext_last_charge_time">Laatste lading: %s
\n</string>
<string name="notif_battery_low_bigtext_number_of_charges">Aantal ladingen: %s</string>
<string name="sleepchart_your_sleep">Uw slaap</string>
<string name="sleepchart_your_sleep">Slaap</string>
<string name="weeksleepchart_sleep_a_week">Slaap per week</string>
<string name="weeksleepchart_today_sleep_description">Slaap vandaag, doel: %1$s</string>
<string name="weekstepschart_steps_a_week">Stappen per week</string>
<string name="activity_sleepchart_activity_and_sleep">Uw activiteit en slaap</string>
<string name="activity_sleepchart_activity_and_sleep">Activiteit</string>
<string name="updating_firmware">Firmware flashen…</string>
<string name="fwapp_install_device_not_ready">Bestand kan niet geïnstalleerd worden, toestel is niet gereed.</string>
<string name="miband_fwinstaller_compatible_version">Compatibele versie</string>
@ -347,7 +347,7 @@
<string name="dateformat_time">Tijd</string>
<string name="dateformat_date_time">Tijd &amp; datum</string>
<string name="mi2_prefs_button_actions">Knoppen acties</string>
<string name="mi2_prefs_button_actions_summary">Specificeer actie voor de Mi Band knopdruk</string>
<string name="mi2_prefs_button_actions_summary">Specificeer actie voor de Mi Band 2 knopdruk</string>
<string name="mi2_prefs_button_press_count">Aantal knopdrukken</string>
<string name="mi2_prefs_button_press_count_summary">Aantal knopdrukken nodig om een bericht te sturen</string>
<string name="mi2_prefs_button_press_broadcast">Uit te sturen bericht</string>
@ -692,7 +692,7 @@
\n
\nGA VERDER OP EIGEN RISICO!
\n
\nVOLLEDIG ONGETEST, MISSCHIEN MET JE EEN BEATS_W_FIRMWARE INSTALLEREN ALS JE DEVICE NAAM \"Amazfit Band 2\" IS</string>
\nVOLLEDIG ONGETEST, MISSCHIEN MOET JE EEN BEATS_W_FIRMWARE INSTALLEREN ALS JE DEVICE NAAM \"Amazfit Band 2\" IS</string>
<string name="dutch">Nederlands</string>
<string name="turkish">Turks</string>
<string name="ukrainian">Oekraïens</string>
@ -752,10 +752,45 @@
<item quantity="other">%d uren</item>
</plurals>
<string name="pref_display_add_device_fab">Verbind nieuw apparaat knop</string>
<string name="pref_display_add_device_fab_on">Altijkd zichtbaar</string>
<string name="pref_display_add_device_fab_on">Altijd zichtbaar</string>
<string name="pref_display_add_device_fab_off">Alleen zichtbaar als er geen apparaat toegevoegd is</string>
<string name="activity_error_no_app_for_gpx">Om de route van de activiteit te zien: installeer een app die GPX bestanden kan tonen.</string>
<string name="preferences_makibes_hr3_settings">Makibes HR3 instellingen</string>
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="prefs_find_phone">Vind telefoon</string>
<string name="prefs_enable_find_phone">Zet \\\'Vind telefoon\\\' aan</string>
<string name="prefs_find_phone_summary">Gebruik je band om de beltoon van je telefoon af te spelen.</string>
<string name="prefs_find_phone_duration">Belduur in seconden</string>
<string name="maximum_duration">Duur</string>
<string name="discovery_need_to_enter_authkey">Dit apparaat heeft een geheime verificatiesleutel nodig, druk lang op het apparaat om deze in te voeren. Lees de wiki.</string>
<string name="fw_upgrade_notice_amazfitbip_lite">U staat op het punt om de firmware %s te installeren op uw Amazfit Bip Lite.
\n
\nZorg ervoor dat u het .fw-bestand installeert, daarna het .res-bestand en als laatste het .gps-bestand. Uw horloge wordt opnieuw gestart na het installeren van het .fw-bestand.
\n
\nOpmerking: U hoeft de .res niet te installeren als deze exact dezelfde is als degene die ervoor al was geïnstalleerd.
\n
\nGA VERDER OP EIGEN RISICO!</string>
<string name="devicetype_amazfit_gtr">Amazfit GTR</string>
<string name="fw_upgrade_notice_amazfitgtr">U staat op het punt om de firmware %s te installeren op uw Amazfit GTR.
\n
\nZorg ervoor dat u het .fw-bestand installeert, daarna het .res-bestand en als laatste het .gps-bestand. Uw horloge wordt opnieuw gestart na het installeren van het .fw-bestand.
\n
\nOpmerking: U hoeft de .res niet te installeren als deze exact dezelfde is als degene die ervoor al was geïnstalleerd.
\n
\nGA VERDER OP EIGEN RISICO!</string>
<string name="pref_chart_heartrate_color_red">Rood</string>
<string name="pref_chart_heartrate_color_orange">Oranje</string>
<string name="pref_title_chart_heartrate_color">Kleur hartslag</string>
<string name="pref_title_chart_sleep_rolling_24_hour">Slaapbereik</string>
<string name="pref_chart_sleep_rolling_24_on">Afgelopen 24 uur</string>
<string name="pref_chart_sleep_rolling_24_off">Van middag tot middag</string>
<string name="devicetype_amazfit_gts">Amazfit GTS</string>
<string name="fw_upgrade_notice_amazfitgts">U staat op het punt om de firmware %s te installeren op uw Amazfit GTS.
\n
\nZorg ervoor dat u het .fw-bestand installeert, daarna het .res-bestand en als laatste het .gps-bestand. Uw horloge wordt opnieuw gestart na het installeren van het .fw-bestand.
\n
\nOpmerking: U hoeft de .res niet te installeren als deze exact dezelfde is als degene die ervoor al was geïnstalleerd.
\n
\nGA VERDER OP EIGEN RISICO!</string>
</resources>

View File

@ -368,7 +368,7 @@
\nROBISZ TO NA WŁASNE RYZYKO!</string>
<string name="fw_upgrade_notice_miband3">Zamierzasz zainstalować oprogramowanie %s na Twoim Mi Band 3.
\n
\nPamiętaj, aby najpierw zainstalować plik .fw, a następnie .res. Twój zegarek zresetuje się po instalacji pliku .fw
\nPamiętaj, aby najpierw zainstalować plik .fw, a następnie .res. Twój zegarek zresetuje się po instalacji pliku .fw.
\n
\nUwaga: Nie instaluj plików .res jeśli jest taki sam jak poprzednio zainstalowany.
\n
@ -550,4 +550,5 @@
<string name="error_creating_directory_for_logfiles">Błąd tworzenia folderu na pliki log: %1$s</string>
<string name="DEVINFO_HR_VER">"Puls: "</string>
<string name="filter_mode_whitelist">Pokazuj gdy zawiera słowa</string>
<string name="pref_chart_heartrate_color_red">Czerwony</string>
</resources>

View File

@ -218,7 +218,7 @@
<string name="pref_screen_notification_profile_generic_social">Rede social</string>
<string name="control_center_find_lost_device">Encontrar dispositivo perdido</string>
<string name="control_center_cancel_to_stop_vibration">Cancele para parar a vibração.</string>
<string name="title_activity_charts">Sua atividade</string>
<string name="title_activity_charts">Atividade e sono</string>
<string name="title_activity_set_alarm">Configurar alarmes</string>
<string name="controlcenter_start_configure_alarms">Configurar alarmes</string>
<string name="title_activity_alarm_details">Detalhes do alarme</string>
@ -246,9 +246,9 @@
<string name="notif_battery_low_percent">%1$s bateria a: %2$s%%</string>
<string name="notif_battery_low_bigtext_last_charge_time">Última carga: %s \n</string>
<string name="notif_battery_low_bigtext_number_of_charges">Número de cargas: %s</string>
<string name="sleepchart_your_sleep">Seu sono</string>
<string name="sleepchart_your_sleep">Sono</string>
<string name="weekstepschart_steps_a_week">Passos por semana</string>
<string name="activity_sleepchart_activity_and_sleep">Sua atividade e sono</string>
<string name="activity_sleepchart_activity_and_sleep">Atividade</string>
<string name="updating_firmware">Instalando firmware…</string>
<string name="fwapp_install_device_not_ready">Arquivo não pode ser instalado, o dispositivo não está pronto.</string>
<string name="installhandler_firmware_name">%1$s: %2$s %3$s</string>
@ -367,16 +367,16 @@
<string name="controlcenter_snackbar_connecting">Conectando…</string>
<string name="controlcenter_snackbar_requested_screenshot">Tirar captura de tela do dispositivo</string>
<string name="title_activity_calblacklist">Blacklist do Calendário</string>
<string name="fw_upgrade_notice_amazfitbip">Você está prestes a instalar o firmware %s no seu Amazip Bip.
<string name="fw_upgrade_notice_amazfitbip">Você está prestes a instalar o firmware %s no seu Amazfit Bip.
\n
\nCertifique-se de instalar o firmware .gps, depois o arquivo .res e, finalmente, o arquivo .fw. Seu relógio será reiniciado após a instalação do arquivo .fw.
\nCertifique-se de instalar o firmware .fw, depois o arquivo .res e finalmente o arquivo .gps. Seu relógio será reiniciado após a instalação do arquivo .fw.
\n
\nNota: você não precisa instalar .res e .gps se esses arquivos forem exatamente os mesmos que os instalados anteriormente.
\n
\nPROSSIGA POR SUA CONTA E RISCO!</string>
<string name="fw_upgrade_notice_amazfitcor">Você está prestes a instalar o firmware %s no seu Amazfit Cor.
\n
\nCertifique-se de instalar o arquivo .fw, e depois disso o arquivo .res. Sua pulseira será reiniciado após a instalação do arquivo .fw.
\nCertifique-se de instalar o arquivo .fw, e depois disso o arquivo .res. Sua pulseira será reiniciada após a instalação do arquivo .fw.
\n
\nNota: você não precisa instalar .res se for exatamente o mesmo que o instalado anteriormente.
\n
@ -692,7 +692,7 @@
<string name="devicetype_bfh16">BFH-16</string>
<string name="fw_upgrade_notice_amazfitcor2">Você está prestes a instalar o firmware %s no seu Amazfit Cor 2.
\n
\nCertifique-se de instalar o arquivo .fw, e depois disso o arquivo .res. Sua pulseira será reiniciado após a instalação do arquivo .fw.
\nCertifique-se de instalar o arquivo .fw, e depois disso o arquivo .res. Sua pulseira será reiniciada após a instalação do arquivo .fw.
\n
\nNota: você não precisa instalar .res se for exatamente o mesmo que o instalado anteriormente.
\n
@ -765,8 +765,38 @@
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="prefs_find_phone">Encontrar telefone</string>
<string name="prefs_enable_find_phone">Ativar encontrar telefone</string>
<string name="prefs_enable_find_phone">Ativar \"Encontrar telefone\"</string>
<string name="prefs_find_phone_summary">Use sua pulseira para reproduzir o toque sonoro do seu celular.</string>
<string name="prefs_find_phone_duration">Duração do toque sonoro em segundos</string>
<string name="maximum_duration">Duração</string>
<string name="discovery_need_to_enter_authkey">Esse dispositivo precisa de sua chave de autenticação secreta, realize pressionamento longo no dispositivo para inseri-lo. Leia o wiki.</string>
<string name="fw_upgrade_notice_amazfitbip_lite">Você está prestes a instalar o firmware %s no seu Amazit Bip Lite.
\n
\nCertifique-se de instalar o arquivo .fw, e depois o arquivo .res. Seu relógio será reiniciado após a instalação do arquivo .fw.
\n
\nNota: você não precisa instalar .res se esse arquivo for exatamente o mesmo que os instalados anteriormente.
\n
\nPROSSIGA POR SUA CONTA E RISCO!</string>
<string name="devicetype_amazfit_gtr">Amazfit GTR</string>
<string name="fw_upgrade_notice_amazfitgtr">Você está prestes a instalar o firmware %s no seu Amazfit GTR.
\n
\nCertifique-se de instalar o arquivo .fw, depois disso o arquivo .res e finalmente o arquivo .gps. Seu relógio será reiniciado após a instalação do arquivo .fw.
\n
\nNota: você não precisa instalar .res e .gps se esses arquivos forem exatamente os mesmos que os instalados anteriormente.
\n
\nPROSSIGA AO SEU PRÓPRIO RISCO!</string>
<string name="pref_chart_heartrate_color_red">Vermelho</string>
<string name="pref_chart_heartrate_color_orange">Laranja</string>
<string name="pref_title_chart_heartrate_color">Cor da frequência cardíaca</string>
<string name="pref_title_chart_sleep_rolling_24_hour">Intervalo de sono</string>
<string name="pref_chart_sleep_rolling_24_on">Últimas 24 horas</string>
<string name="pref_chart_sleep_rolling_24_off">Meio-dia ao meio-dia</string>
<string name="devicetype_amazfit_gts">Amazfit GTS</string>
<string name="fw_upgrade_notice_amazfitgts">Você está prestes a instalar o firmware %s no seu Amazfit GTS.
\n
\nCertifique-se de instalar o arquivo .fw, depois disso o arquivo .res e finalmente o arquivo .gps. Seu relógio será reiniciado após a instalação do arquivo .fw.
\n
\nNota: você não precisa instalar .res e .gps se esses arquivos forem exatamente os mesmos que os instalados anteriormente.
\n
\nPROSSIGA AO SEU PRÓPRIO RISCO!</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">Gadgetbridge</string>
<resources>
<string name="app_name">Gadgetbridge</string>
<string name="title_activity_controlcenter">Gadgetbridge</string>
<string name="action_settings">Setari</string>
<string name="action_debug">Depaneaza</string>
@ -28,15 +28,11 @@
<string name="title_activity_appblacklist">Notificari blocate</string>
<string name="blacklist_all_for_notifications">Blocheaza toate notificarile</string>
<string name="whitelist_all_for_notifications">Permite toate notificarile</string>
<string name="title_activity_calblacklist">Calendare blocate</string>
<string name="title_activity_fw_app_insaller">Instalare firmware</string>
<string name="fw_multi_upgrade_notice">Esti pe punctul de a instala firmware-ul %1$s si %2$s, in locul celor deja instalate pe Mi Band.</string>
<string name="miband_firmware_known">Firmware-ul a fost testat si este compatibil cu Gadgetbridge.</string>
<string name="title_activity_settings">Setari</string>
<string name="pref_header_general">Setari generale</string>
<string name="pref_title_general_autoconnectonbluetooth">Conectare la bratara cand Bluetooth este pornit</string>
<string name="pref_title_general_autostartonboot">Porneste automat</string>
@ -47,9 +43,7 @@
<string name="pref_title_theme">Tema</string>
<string name="pref_theme_light">Deschis</string>
<string name="pref_theme_dark">Intunecat</string>
<string name="pref_title_language">Limba</string>
<string name="pref_header_notifications">Notificari</string>
<string name="pref_title_notifications_call">Apeluri telefonice</string>
<string name="pref_title_notifications_sms">SMS</string>
@ -58,28 +52,22 @@
<string name="always">Intotdeauna</string>
<string name="when_screen_off">Cand ecranul este oprit</string>
<string name="never">Niciodata</string>
<string name="pref_call_privacy_mode_off">Afiseaza numele si numarul</string>
<string name="pref_call_privacy_mode_name">Ascunde numele, afiseaza numarul</string>
<string name="pref_call_privacy_mode_number">Afiseaza numele, ascunde numarul</string>
<string name="pref_call_privacy_mode_complete">Ascunde numele si numarul</string>
<string name="pref_title_weather">Meteo</string>
<string name="controlcenter_take_screenshot">Captura ecran</string>
<string name="controlcenter_snackbar_disconnecting">Se deconecteaza</string>
<string name="controlcenter_snackbar_connecting">Conectare…</string>
<string name="controlcenter_snackbar_requested_screenshot">Capturez ecranul dispozitivului</string>
<string name="title_activity_debug">Depanare</string>
<string name="appmanager_installed_watchapps">Aplicatii instalate</string>
<string name="appmanager_installed_watchfaces">Fete de ceas instalate</string>
<string name="appmananger_app_delete">Sterge</string>
<string name="appmanager_app_openinstore">Cauta in magazinul Pebble</string>
<string name="appmanager_weather_install_provider">Instalare aplicație Notificări Meteo</string>
<string name="app_move_to_top">Muta la inceput</string>
<string name="fw_upgrade_notice">Ești pe punctul de a instala firmware-ul %s în locul celui deja instalat pe Mi Band.</string>
<string name="fw_upgrade_notice_amazfitbip">Esti pe punctul de a instala firmware-ul %s pe Amazfit Bip.
\n
@ -107,12 +95,9 @@
\nTe DESCURAJAM sa-l instalezi pe Mi Band!</string>
<string name="pref_header_development">Optiuni dezvoltator</string>
<string name="pref_title_development_miaddr">Adresa Mi Band</string>
<string name="pref_title_pebble_settings">Setari Pebble</string>
<string name="pref_title_pebble_sync_misfit">Sincronizeaza Misfit</string>
<string name="pref_summary_enable_outgoing_call">Dezactivand aceasta optiune va opri Pebble 2/LE sa vibreze la apeluri</string>
<string name="pref_pebble_privacy_mode_off">Notificari normale</string>
<string name="pref_title_location_latitude">Latitudine</string>
<string name="pref_title_location_longitude">Longitudine</string>

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="app_name">Gadgetbridge</string>
<?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>
@ -19,10 +19,7 @@
<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>
@ -40,11 +37,8 @@
<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.
@ -67,9 +61,7 @@
\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>
@ -77,21 +69,16 @@
<string name="pref_title_audio_player">Preferovaný prehrávač zvukov</string>
<string name="pref_default">Predvolené</string>
<string name="pref_title_charts_swipe">Zap. potiahnutie vľavo/vpravo v grafoch aktivít</string>
<string name="pref_header_datetime">Dátum a čas</string>
<string name="pref_title_datetime_syctimeonconnect">Synchronizovať čas pri pripojení</string>
<string name="pref_summary_datetime_syctimeonconnect">Synchronizovať čas pri pripojení k zariadeniu a aj pri zmene času alebo časového pásma 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">Zobraziť ikonu v stavovom riadku a upozornenia na uzamknutej obrazovke</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>
@ -104,71 +91,55 @@
<string name="pref_summary_notification_filter">Zakázať odosielanie nechcených upozornení 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, zobraziť číslo</string>
<string name="pref_call_privacy_mode_number">Skryť číslo, 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ázať upozornenia z aplikácií</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>
@ -183,21 +154,17 @@
<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 hodiny</string>
<string name="not_connected">Nepripojené</string>
<string name="connecting">Pripájanie</string>
<string name="connected">Pripojené</string>
@ -230,7 +197,6 @@
<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>
@ -259,7 +225,6 @@
<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ísovať logy</string>
<string name="initializing">Spúšťanie</string>
@ -267,7 +232,6 @@
<string name="sleep_activity_date_range">Od %1$s do %2$s</string>
<string name="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>
@ -276,7 +240,6 @@
<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>
@ -286,18 +249,15 @@
<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>
@ -363,7 +323,6 @@
<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>
@ -412,26 +371,20 @@
<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 osobné ú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>
@ -444,7 +397,6 @@
<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>
@ -473,12 +425,9 @@
<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ť.
@ -488,17 +437,12 @@
\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>
@ -518,11 +462,9 @@
<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>
@ -531,7 +473,6 @@
<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>
@ -547,7 +488,6 @@
<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>

View File

@ -13,7 +13,7 @@
<string name="controlcenter_connect">Anslut…</string>
<string name="controlcenter_disconnect">Koppla ifrån</string>
<string name="controlcenter_delete_device">Ta bort enhet</string>
<string name="controlcenter_delete_device_name">Tar bort %1$s</string>
<string name="controlcenter_delete_device_name">Ta bort %1$s</string>
<string name="controlcenter_delete_device_dialogmessage">Detta kommer att ta bort enheten och radera all tillhörande information!</string>
<string name="controlcenter_navigation_drawer_open">Öppna navigationspanel</string>
<string name="controlcenter_navigation_drawer_close">Stäng navigationspanel</string>
@ -43,4 +43,5 @@
<string name="blacklist_all_for_notifications">Svartlista alla notifieringar</string>
<string name="title_activity_calblacklist">Svartlistade kalendrar</string>
<string name="title_activity_fw_app_insaller">FW/App-installerare</string>
<string name="pref_chart_heartrate_color_red">Röd</string>
</resources>

View File

@ -242,7 +242,7 @@
<string name="stats_y_axis_label">每分钟步数</string>
<string name="control_center_find_lost_device">查找丢失的设备</string>
<string name="control_center_cancel_to_stop_vibration">取消以停止振动。</string>
<string name="title_activity_charts">活动记录</string>
<string name="title_activity_charts">活动与睡眠</string>
<string name="title_activity_set_alarm">设置闹钟</string>
<string name="controlcenter_start_configure_alarms">设置闹钟</string>
<string name="title_activity_alarm_details">闹钟列表</string>
@ -275,7 +275,7 @@
<string name="weeksleepchart_sleep_a_week">一周睡眠</string>
<string name="weeksleepchart_today_sleep_description">今天睡眠,目标:%1$s</string>
<string name="weekstepschart_steps_a_week">一周步数</string>
<string name="activity_sleepchart_activity_and_sleep">活动和睡眠记录</string>
<string name="activity_sleepchart_activity_and_sleep">活动</string>
<string name="updating_firmware">固件更新中…</string>
<string name="fwapp_install_device_not_ready">无法安装文件, 设备未就绪。</string>
<string name="installhandler_firmware_name">%1$s: %2$s %3$s</string>
@ -686,16 +686,12 @@
<string name="devicetype_bfh16">BFH-16</string>
<string name="fw_upgrade_notice_amazfitcor2">您即将在米动手环2(Amazfit Cor 2)上安装 %s 版本的固件
\n
\n
\n请确保先安装 .fw 文件,再安装 .res 文件。您的手环将会在安装了 .fw 文件后重启
\n
\n
\n备注如果您安装的 .res 文件和之前相同,则无需安装 .res 文件
\n
\n
\n风险自担
\n
\n
\n此功能未经测试如果您的设备名为“Amazfit Band 2”您可能需要刷入 BEATS_W 固件</string>
<string name="dutch">荷兰语</string>
<string name="turkish">土耳其语</string>
@ -766,4 +762,34 @@
<string name="prefs_find_phone_summary">使用您的手环以在手机上播放铃声。</string>
<string name="prefs_find_phone_duration">铃声将持续数秒</string>
<string name="maximum_duration">持续</string>
<string name="discovery_need_to_enter_authkey">此设备需要认证密钥,请在设备上长按以输入密钥。具体请阅读 Wiki 。</string>
<string name="fw_upgrade_notice_amazfitbip_lite">您即将在米动手表青春版 Lite(Amazfit Bip Lite)上安装 %s 版本的固件
\n
\n请确保先安装 .fw 文件,再安装 .res 文件。您的手环将会在安装了 .fw 文件后重启
\n
\n备注如果您安装的 .res 文件和之前相同,则无需安装 .res 文件
\n
\n风险自担</string>
<string name="devicetype_amazfit_gtr">华米 GTR</string>
<string name="fw_upgrade_notice_amazfitgtr">即将在您的 华米 GTR (Amazfit GTR) 上安装固件 %s 。
\n
\n请确保先安装 .fw 文件,然后再安装 .res 文件,最后再安装 .gps 文件。您的手表将会安装了 .fw 文件后重启。
\n
\n注意如果 .res 和 .gps 文件和上一个版本相同,您则无需安装。
\n
\n风险自担</string>
<string name="pref_chart_heartrate_color_red"></string>
<string name="pref_chart_heartrate_color_orange"></string>
<string name="pref_title_chart_heartrate_color">心率颜色</string>
<string name="pref_title_chart_sleep_rolling_24_hour">睡眠范围</string>
<string name="pref_chart_sleep_rolling_24_on">过去 24 小时</string>
<string name="pref_chart_sleep_rolling_24_off">中午到中午</string>
<string name="devicetype_amazfit_gts">米动 GTS</string>
<string name="fw_upgrade_notice_amazfitgts">您即将在 米动手表GTS(Amazfit GTS)上安装 %s 版本的固件
\n
\n请确保先安装 .fw 文件,再安装 .res 文件。您的手环将会在安装了 .fw 文件后重启。
\n
\n备注如果您安装的 .res 文件和之前相同,则无需安装 .res 文件。
\n
\n风险自担</string>
</resources>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="action_settings">設定</string>
<string name="action_debug">偵錯</string>
<string name="action_quit">離開</string>
<string name="action_donate">贊助</string>
<string name="controlcenter_fetch_activity_data">同步</string>
<string name="controlcenter_find_device">尋找遺失的裝置</string>
<string name="controlcenter_take_screenshot">擷取畫面</string>
<string name="controlcenter_change_led_color">更改LED顏色</string>
<string name="controlcenter_change_fm_frequency">更改 FM 頻率</string>
<string name="controlcenter_connect">連線…</string>
<string name="controlcenter_disconnect">離線</string>
<string name="controlcenter_delete_device">刪除裝置</string>
<string name="controlcenter_delete_device_name">刪除 %1$s</string>
<string name="controlcenter_delete_device_dialogmessage">這將刪除設備和所有相關資料!</string>
<string name="controlcenter_navigation_drawer_open">打開導航列</string>
<string name="controlcenter_navigation_drawer_close">關閉導航列</string>
<string name="controlcenter_snackbar_need_longpress">長按此卡片以斷開連結接</string>
<string name="controlcenter_snackbar_disconnecting">斷開連接</string>
<string name="title_activity_debug">偵錯</string>
<string name="debugactivity_really_factoryreset_title">真的要重置?</string>
<string name="debugactivity_really_factoryreset">執行重置將刪除連接的設備中所有資料(如果受支持)。小米/華米設備也會更改藍牙 MAC 位址,因此它們顯示為 Gadgetbrige 的新設備。</string>
<string name="appmanager_installed_watchapps">已安裝的程式</string>
<string name="appmananger_app_delete">刪除</string>
<string name="appmananger_app_delete_cache">刪除並清除緩存</string>
<string name="appmananger_app_reinstall">重新安裝</string>
</resources>

View File

@ -424,6 +424,7 @@
<item name="de_DE">@string/german</item>
<item name="it_IT">@string/italian</item>
<item name="fr_FR">@string/french</item>
<item name="pt_BR">@string/portuguese</item>
<item name="tr_TR">@string/turkish</item>
<item name="ru_RU">@string/russian</item>
</string-array>
@ -437,6 +438,7 @@
<item>de_DE</item>
<item>it_IT</item>
<item>fr_FR</item>
<item>pt_BR</item>
<item>tr_TR</item>
<item>ru_RU</item>
</string-array>

View File

@ -18,6 +18,7 @@
<color name="divider" type="color">#1f000000</color>
<color name="chart_heartrate" type="color">#ffab40</color>
<color name="chart_heartrate_alternative" type="color">#8B0000</color>
<color name="chart_heartrate_fill" type="color">#fadab1</color>
<color name="chart_deep_sleep_light" type="color">#0071b7</color>
<color name="chart_deep_sleep_dark" type="color">#4c5aff</color>

View File

@ -55,6 +55,7 @@
<string name="title_activity_fw_app_insaller">FW/App installer</string>
<string name="fw_upgrade_notice">You are about to install the %s.</string>
<string name="fw_upgrade_notice_amazfitbip">You are about to install the %s firmware on your Amazfit Bip.\n\nPlease make sure to install the .fw file, then the .res file, and finally the .gps file. Your watch will reboot after installing the .fw file.\n\nNote: You do not have to install .res and .gps if these files are exactly the same as the ones previously installed.\n\nPROCEED AT YOUR OWN RISK!</string>
<string name="fw_upgrade_notice_amazfitbip_lite">You are about to install the %s firmware on your Amazfit Bip Lite.\n\nPlease make sure to install the .fw file, and after that the .res file. Your watch will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK!</string>
<string name="fw_upgrade_notice_amazfitcor">You are about to install the %s firmware on your Amazfit Cor.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK!</string>
<string name="fw_upgrade_notice_amazfitcor2">You are about to install the %s firmware on your Amazfit Cor 2.
\n
@ -65,6 +66,8 @@
\nPROCEED AT YOUR OWN RISK!
\n
\nCOMPLETELY UNTESTED, PROBABLY YOU NEED TO FLASH A BEATS_W FIRMWARE IF YOUR DEVICE NAME IS \"Amazfit Band 2\"</string>
<string name="fw_upgrade_notice_amazfitgtr">You are about to install the %s firmware on your Amazfit GTR.\n\nPlease make sure to install the .fw file, then the .res file, and finally the .gps file. Your watch will reboot after installing the .fw file.\n\nNote: You do not have to install .res and .gps if these files are exactly the same as the ones previously installed.\n\nPROCEED AT YOUR OWN RISK!</string>
<string name="fw_upgrade_notice_amazfitgts">You are about to install the %s firmware on your Amazfit GTS.\n\nPlease make sure to install the .fw file, then the .res file, and finally the .gps file. Your watch will reboot after installing the .fw file.\n\nNote: You do not have to install .res and .gps if these files are exactly the same as the ones previously installed.\n\nPROCEED AT YOUR OWN RISK!</string>
<string name="fw_upgrade_notice_miband3">You are about to install the %s firmware on your Mi Band 3.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK!</string>
<string name="fw_upgrade_notice_miband4">You are about to install the %s firmware on your Mi Band 4.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK!</string>
<string name="fw_multi_upgrade_notice">You are about to install the %1$s and %2$s firmware, instead of the ones currently on your Mi Band.</string>
@ -382,7 +385,7 @@
<string name="stats_y_axis_label">Steps per minute</string>
<string name="control_center_find_lost_device">Find lost device</string>
<string name="control_center_cancel_to_stop_vibration">Cancel to stop vibration.</string>
<string name="title_activity_charts">Your activity</string>
<string name="title_activity_charts">Activity and Sleep</string>
<string name="title_activity_set_alarm">Configure alarms</string>
<string name="controlcenter_start_configure_alarms">Configure alarms</string>
<string name="title_activity_alarm_details">Alarm details</string>
@ -413,11 +416,11 @@
<string name="notif_battery_low">%1$s battery low</string>
<string name="notif_battery_low_extended">%1$s battery low: %2$s</string>
<string name="notif_export_failed_title">Export database failed! Please check your settings.</string>
<string name="sleepchart_your_sleep">Your sleep</string>
<string name="sleepchart_your_sleep">Sleep</string>
<string name="weeksleepchart_sleep_a_week">Sleep per week</string>
<string name="weeksleepchart_today_sleep_description">Sleep today, target: %1$s</string>
<string name="weekstepschart_steps_a_week">Steps per week</string>
<string name="activity_sleepchart_activity_and_sleep">Your activity and sleep</string>
<string name="activity_sleepchart_activity_and_sleep">Activity</string>
<string name="lack_of_sleep">Lack of sleep: %1$s</string>
<string name="overslept">Overslept: %1$s</string>
<string name="updating_firmware">Flashing firmware…</string>
@ -481,7 +484,7 @@
<string name="miband_prefs_hr_sleep_detection">Use heart rate sensor to improve sleep detection</string>
<string name="miband_prefs_device_time_offset_hours">Device time offset in hours (for detecting sleep of shift workers)</string>
<string name="prefs_find_phone">Find phone</string>
<string name="prefs_enable_find_phone">Enable find phone</string>
<string name="prefs_enable_find_phone">Turn on \\\'Find phone\\\'</string>
<string name="prefs_find_phone_summary">Use your band to play your phone\'s ringtone.</string>
<string name="prefs_find_phone_duration">Ring duration in seconds</string>
<string name="miband2_prefs_dateformat">Date format</string>
@ -559,8 +562,14 @@
<string name="pref_title_charts_range">Charts Range</string>
<string name="pref_charts_range_on">Charts range is set to a Month</string>
<string name="pref_charts_range_off">Charts range is set to a Week</string>
<string name="pref_chart_heartrate_color_red">Red</string>
<string name="pref_chart_heartrate_color_orange">Orange</string>
<string name="pref_title_chart_heartrate_color">Heart rate color</string>
<string name="weekstepschart_steps_a_month">Steps per month</string>
<string name="weeksleepchart_sleep_a_month">Sleep per month</string>
<string name="pref_title_chart_sleep_rolling_24_hour">Sleep range</string>
<string name="pref_chart_sleep_rolling_24_on">Past 24 hours</string>
<string name="pref_chart_sleep_rolling_24_off">Noon to noon</string>
<string name="authenticating">Authenticating</string>
<string name="authentication_required">Authentication required</string>
<string name="activity_prefs_sleep_duration">Preferred sleep duration in hours</string>
@ -690,6 +699,7 @@
<string name="devicetype_amazfit_bip_lite">Amazfit Bip Lite</string>
<string name="devicetype_amazfit_cor">Amazfit Cor</string>
<string name="devicetype_amazfit_cor2">Amazfit Cor 2</string>
<string name="devicetype_amazfit_gtr">Amazfit GTR</string>
<string name="devicetype_vibratissimo">Vibratissimo</string>
<string name="devicetype_liveview">LiveView</string>
<string name="devicetype_hplus">HPlus</string>
@ -713,6 +723,7 @@
<string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="choose_auto_export_location">Choose export location</string>
<string name="notification_channel_name">Gadgetbridge notifications</string>
<string name="devicetype_amazfit_gts">Amazfit GTS</string>
<!-- Menus on the smart device -->
<string name="menuitem_shortcut_alipay">Alipay (Shortcut)</string>
<string name="menuitem_shortcut_weather">Weather (Shortcut)</string>

View File

@ -1,8 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog>
<release version="0.39.0" versioncode="161">
<change>Amazfit GTS: Initial and incomplete support, mostly untested</change>
<change>Add forward/backward buttons to charts for faster navigation</change>
<change>Debug: allow to reset last fetch date for Huami devices</change>
</release>
<release version="0.38.0" versioncode="160">
<change>Amazfit GTR: Initial and incomplete support, mostly untested</change>
<change>Amazfit Bip: add Portuguese to the list of selectable languages</change>
<change>Mi Band 4: Enable emoji font setting</change>
<change>Makibes HR3: Support the english version</change>
<change>Makibes HR3: Enable bluetooth pairing for working reconnection</change>
<change>Work around crash when trying to display changelog</change>
<change>Sleep detection settings: Rolling 24 hours (existing style) or Noon to noon</change>
<change>Add alternative color to heartrate in chart settings</change>
</release>
<release version="0.37.1" versioncode="159">
<change>Amazfit Bip Lite: Support flashing firmware and watchfaces</change>
</release>
<release version="0.37.0" versioncode="158">
<change>Initial Makibes HR3 support</change>
<change>Amazfit Bip Lite: Inittal working support, firmware update is disabled for now (we do not have any firmware for testing)</change>
<change>Amazfit Bip Lite: Initial working support, firmware update is disabled for now (we do not have any firmware for testing)</change>
<change>Amazfit Cor 2: Enable Emoji Font setting and 3rd party HR access</change>
<change>Find Phone now also vibration in addition to playing the ring tone</change>
<change>ID115: All settings are now per-device</change>

View File

@ -17,11 +17,29 @@
android:maxLength="3"
android:defaultValue="10"
android:title="@string/activity_prefs_chart_min_heart_rate" />
<CheckBoxPreference
android:layout="@layout/preference_checkbox"
android:defaultValue="false"
android:key="chart_heartrate_color"
android:summaryOff="@string/pref_chart_heartrate_color_orange"
android:summaryOn="@string/pref_chart_heartrate_color_red"
android:title="@string/pref_title_chart_heartrate_color" />
<CheckBoxPreference
android:layout="@layout/preference_checkbox"
android:defaultValue="true"
android:key="charts_allow_swipe"
android:title="@string/pref_title_charts_swipe" />
<CheckBoxPreference
android:layout="@layout/preference_checkbox"
android:defaultValue="false"
android:key="chart_sleep_range_24h"
android:summaryOff="@string/pref_chart_sleep_rolling_24_off"
android:summaryOn="@string/pref_chart_sleep_rolling_24_on"
android:title="@string/pref_title_chart_sleep_rolling_24_hour" />
<CheckBoxPreference
android:layout="@layout/preference_checkbox"
android:defaultValue="true"
@ -35,5 +53,7 @@
android:summaryOff="@string/pref_charts_range_off"
android:summaryOn="@string/pref_charts_range_on"
android:title="@string/pref_title_charts_range" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:icon="@drawable/ic_language"
android:defaultValue="auto"
android:entries="@array/pref_amazfitbip_language"
android:entryValues="@array/pref_amazfitbip_language_values"
android:key="language"
android:summary="%s"
android:title="@string/pref_title_language" />
</androidx.preference.PreferenceScreen>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:key="screen_button_actions"
android:persistent="false"
android:summary="@string/mi2_prefs_button_actions_summary"
android:title="@string/mi2_prefs_button_actions">
<!-- workaround for missing toolbar -->
<PreferenceCategory android:title="@string/mi2_prefs_button_action" />
public static final String PREF_BUTTON_ACTION_PRESS_DELAY = "button_action_press_count_delay";
<CheckBoxPreference
android:defaultValue="false"
android:key="button_action_enable"
android:summary="@string/mi2_prefs_button_action_summary"
android:title="@string/mi2_prefs_button_action" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="button_action_enable"
android:key="button_action_vibrate"
android:summary="@string/mi2_prefs_button_action_vibrate_summary"
android:title="@string/mi2_prefs_button_action_vibrate" />
<EditTextPreference
android:defaultValue="6"
android:dependency="button_action_enable"
android:inputType="number"
android:key="button_action_press_count"
android:summary="@string/mi2_prefs_button_press_count_summary"
android:title="@string/mi2_prefs_button_press_count" />
<EditTextPreference
android:defaultValue="@string/mi2_prefs_button_press_broadcast_default_value"
android:dependency="button_action_enable"
android:key="button_action_broadcast"
android:summary="@string/mi2_prefs_button_press_broadcast_summary"
android:title="@string/mi2_prefs_button_press_broadcast" />
<EditTextPreference
android:defaultValue="2000"
android:dependency="button_action_enable"
android:inputType="number"
android:key="button_action_press_max_interval"
android:summary="@string/mi2_prefs_button_press_count_max_delay_summary"
android:title="@string/mi2_prefs_button_press_count_max_delay" />
<EditTextPreference
android:defaultValue="0"
android:dependency="button_action_enable"
android:inputType="number"
android:key="button_action_broadcast_delay"
android:summary="@string/mi2_prefs_button_press_count_match_delay_summary"
android:title="@string/mi2_prefs_button_press_count_match_delay" />
</PreferenceScreen>
</androidx.preference.PreferenceScreen>

View File

@ -22,62 +22,6 @@
android:summary="@string/mi2_prefs_goal_notification_summary"
android:title="@string/mi2_prefs_goal_notification" />
<PreferenceScreen
android:key="mi2_button_actions_key"
android:summary="@string/mi2_prefs_button_actions_summary"
android:title="@string/mi2_prefs_button_actions"
android:persistent="false">
<!-- workaround for missing toolbar -->
<PreferenceCategory
android:title="@string/mi2_prefs_button_action"
/>
<CheckBoxPreference
android:defaultValue="false"
android:key="mi2_enable_button_action"
android:summary="@string/mi2_prefs_button_action_summary"
android:title="@string/mi2_prefs_button_action" />
<CheckBoxPreference
android:defaultValue="false"
android:dependency="mi2_enable_button_action"
android:key="mi2_button_action_vibrate"
android:summary="@string/mi2_prefs_button_action_vibrate_summary"
android:title="@string/mi2_prefs_button_action_vibrate" />
<EditTextPreference
android:defaultValue="6"
android:dependency="mi2_enable_button_action"
android:inputType="number"
android:key="mi_button_press_count"
android:summary="@string/mi2_prefs_button_press_count_summary"
android:title="@string/mi2_prefs_button_press_count" />
<EditTextPreference
android:defaultValue="@string/mi2_prefs_button_press_broadcast_default_value"
android:dependency="mi2_enable_button_action"
android:key="mi_button_press_broadcast"
android:summary="@string/mi2_prefs_button_press_broadcast_summary"
android:title="@string/mi2_prefs_button_press_broadcast" />
<EditTextPreference
android:defaultValue="2000"
android:dependency="mi2_enable_button_action"
android:inputType="number"
android:key="mi_button_press_count_max_delay"
android:summary="@string/mi2_prefs_button_press_count_max_delay_summary"
android:title="@string/mi2_prefs_button_press_count_max_delay" />
<EditTextPreference
android:defaultValue="0"
android:dependency="mi2_enable_button_action"
android:inputType="number"
android:key="mi_button_press_count_match_delay"
android:summary="@string/mi2_prefs_button_press_count_match_delay_summary"
android:title="@string/mi2_prefs_button_press_count_match_delay" />
</PreferenceScreen>
<EditTextPreference
android:defaultValue="0"
android:inputType="number"

View File

@ -9,7 +9,7 @@ buildscript {
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.android.tools.build:gradle:3.5.2'
classpath "gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:2.0.0"
// NOTE: Do not place your application dependencies here; they belong

View File

@ -1,5 +1,5 @@
* Initial Makibes HR3 support
* Amazfit Bip Lite: Inittal working support, firmware update is disabled for now (we do not have any firmware for testing)
* Amazfit Bip Lite: Initial working support, firmware update is disabled for now (we do not have any firmware for testing)
* Amazfit Cor 2: Enable Emoji Font setting and 3rd party HR access
* Find Phone now also vibration in addition to playing the ring tone
* ID115: All settings are now per-device

View File

@ -0,0 +1 @@
* Amazfit Bip Lite: Support flashing firmware and watchfaces

View File

@ -0,0 +1,8 @@
* Amazfit GTR: Initial and incomplete support, mostly untested
* Amazfit Bip: add Portuguese to the list of selectable languages
* Mi Band 4: Enable emoji font setting
* Makibes HR3: Support the english version
* Makibes HR3: Enable bluetooth pairing for working reconnection
* Work around crash when trying to display changelog
* Sleep detection settings: Rolling 24 hours (existing style) or Noon to noon
* Add alternative color to heartrate in chart settings

View File

@ -0,0 +1,3 @@
* Amazfit GTS: Initial and incomplete support, mostly untested
* Add forward/backward buttons to charts for faster navigation
* Debug: allow to reset last fetch date for Huami devices