diff --git a/app/build.gradle b/app/build.gradle index 65c329204..a1b545e45 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ android { defaultConfig { applicationId "nodomain.freeyourgadget.gadgetbridge" minSdkVersion 19 - targetSdkVersion 27 + targetSdkVersion 28 // Note: always bump BOTH versionCode and versionName! versionName "0.42.0" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6494fcba3..8c89312be 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,7 @@ + diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java index a8b2446ab..451a7c435 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java @@ -344,6 +344,10 @@ public class GBApplication extends Application { return VERSION.SDK_INT >= Build.VERSION_CODES.O; } + public static boolean isRunningPieOrLater() { + return VERSION.SDK_INT >= Build.VERSION_CODES.P; + } + private static boolean isPrioritySender(int prioritySenders, String number) { if (prioritySenders == Policy.PRIORITY_SENDERS_ANY) { return true; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java index e976c2e28..f278cad5d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java @@ -349,6 +349,8 @@ public class ControlCenterv2 extends AppCompatActivity wantedPermissions.add(Manifest.permission.READ_CONTACTS); if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_DENIED) wantedPermissions.add(Manifest.permission.CALL_PHONE); + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ANSWER_PHONE_CALLS) == PackageManager.PERMISSION_DENIED) + wantedPermissions.add(Manifest.permission.ANSWER_PHONE_CALLS); if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CALL_LOG) == PackageManager.PERMISSION_DENIED) wantedPermissions.add(Manifest.permission.READ_CALL_LOG); if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_DENIED) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java index cee8549e9..8c6a6e745 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java @@ -737,7 +737,14 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { TransactionBuilder builder = performInitialized("Set date and time"); setCurrentTimeWithService(builder); //TODO: once we have a common strategy for sending events (e.g. EventHandler), remove this call from here. Meanwhile it does no harm. - sendCalendarEvents(builder); + // = we should genaralize the pebble calender code + if (characteristicChunked == null) { + sendCalendarEvents(builder); + } + else { + // TODO: make this configurable + sendCalendarEventsAsReminder(builder); + } builder.queue(getQueue()); } catch (IOException ex) { LOG.error("Unable to set time on Huami device", ex); @@ -818,7 +825,6 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { } - private void sendMusicStateToDevice() { if (characteristicChunked == null) { return; @@ -1323,8 +1329,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { if ((currentButtonPressTime == 0) || (timeSinceLastPress < buttonPressMaxDelay)) { currentButtonPressCount++; - } - else { + } else { currentButtonPressCount = 1; currentButtonActionId = 0; } @@ -1352,8 +1357,6 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { } - - @Override public boolean onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { @@ -1703,6 +1706,44 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { return this; } + private HuamiSupport sendCalendarEventsAsReminder(TransactionBuilder builder) { + CalendarEvents upcomingEvents = new CalendarEvents(); + List calendarEvents = upcomingEvents.getCalendarEventList(getContext()); + Calendar calendar = Calendar.getInstance(); + + int iteration = 0; + + for (CalendarEvents.CalendarEvent calendarEvent : calendarEvents) { + if (iteration > 8) { // limit ? + break; + } + calendar.setTimeInMillis(calendarEvent.getBegin()); + byte[] title = calendarEvent.getTitle().getBytes(); + byte[] body = calendarEvent.getDescription().getBytes(); + + int length = 18 + title.length + 1 + body.length + 1; + ByteBuffer buf = ByteBuffer.allocate(length); + + buf.order(ByteOrder.LITTLE_ENDIAN); + buf.put((byte) 0x0b); // always 0x0b? + buf.put((byte) iteration); // îd + buf.putInt(0x08 | 0x04 | 0x01); // flags 0x01 = enable, 0x04 = end date present, 0x08 = has text + calendar.setTimeInMillis(calendarEvent.getBegin()); + buf.put(BLETypeConversions.shortCalendarToRawBytes(calendar)); + calendar.setTimeInMillis(calendarEvent.getEnd()); + buf.put(BLETypeConversions.shortCalendarToRawBytes(calendar)); + buf.put(title); + buf.put((byte) 0); // 0 Terminated + buf.put(body); + buf.put((byte) 0); // 0 Terminated + writeToChunked(builder, 2, buf.array()); + + iteration++; + } + + return this; + } + @Override public void onSendConfiguration(String config) { TransactionBuilder builder; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java index 569b6c95e..e2bd99d4b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBCallControlReceiver.java @@ -19,8 +19,12 @@ package nodomain.freeyourgadget.gadgetbridge.service.receivers; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.os.Build; +import android.telecom.TelecomManager; import android.telephony.TelephonyManager; +import androidx.annotation.RequiresApi; + import com.android.internal.telephony.ITelephony; import org.slf4j.Logger; @@ -28,35 +32,60 @@ import org.slf4j.LoggerFactory; import java.lang.reflect.Method; +import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl; public class GBCallControlReceiver extends BroadcastReceiver { public static final String ACTION_CALLCONTROL = "nodomain.freeyourgadget.gadgetbridge.callcontrol"; private static final Logger LOG = LoggerFactory.getLogger(GBCallControlReceiver.class); + private Context mContext = GBApplication.getContext(); @Override public void onReceive(Context context, Intent intent) { GBDeviceEventCallControl.Event callCmd = GBDeviceEventCallControl.Event.values()[intent.getIntExtra("event", 0)]; - switch (callCmd) { - case END: - case REJECT: - case START: - try { - TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - Class clazz = Class.forName(telephonyManager.getClass().getName()); - Method method = clazz.getDeclaredMethod("getITelephony"); - method.setAccessible(true); - ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager); - if (callCmd == GBDeviceEventCallControl.Event.END || callCmd == GBDeviceEventCallControl.Event.REJECT) { - telephonyService.endCall(); - } else { - telephonyService.answerRingingCall(); + + if (GBApplication.isRunningPieOrLater()) { + handleCallCmdTelecomManager(callCmd); + } else { + switch (callCmd) { + case END: + case REJECT: + case START: + try { + TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + Class clazz = Class.forName(telephonyManager.getClass().getName()); + Method method = clazz.getDeclaredMethod("getITelephony"); + method.setAccessible(true); + ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager); + if (callCmd == GBDeviceEventCallControl.Event.END || callCmd == GBDeviceEventCallControl.Event.REJECT) { + telephonyService.endCall(); + } else { + telephonyService.answerRingingCall(); + } + } catch (Exception e) { + LOG.warn("could not start or hangup call"); } - } catch (Exception e) { - LOG.warn("could not start or hangup call", e); - } - break; - default: + break; + default: + } + } + } + + @RequiresApi(api = Build.VERSION_CODES.P) + public void handleCallCmdTelecomManager(GBDeviceEventCallControl.Event callCmd) { + try { + TelecomManager tm = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE); + + if (callCmd == GBDeviceEventCallControl.Event.END || callCmd == GBDeviceEventCallControl.Event.REJECT) { + tm.endCall(); + } else if (callCmd == GBDeviceEventCallControl.Event.START || callCmd == GBDeviceEventCallControl.Event.ACCEPT) { + tm.acceptRingingCall(); + } + + } catch (SecurityException e) { + LOG.warn("no permission to start or hangup call"); + } catch (Exception e) { + LOG.warn("could not start or hangup call"); } } } diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 7f9e230a5..144d7a464 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -792,4 +792,5 @@ Per a veure la traça d\'activitat, instal·leu una app que pugui manejar fitxers GPX. Fes servir la teva banda per a reproduir el to del telèfon. Aquest aparell requereix una clau d\'autenticació secreta, mantingueu premut sobre l\'aparell per a introduir-la. Consulteu la wiki. + Augmenta la velocitat de transferència, però pot ser que no funcioni en alguns aparells Android. \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e9b0ebc42..2c2603a9e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -415,9 +415,9 @@ Temps de sommeil préféré en heures Actions du bouton Spécifier les actions par pression du bouton Nombre de pressions du bouton - Nombre de pressions pour envoyer message + Nombre d\'appuis sur le boutton pour envoyer l’Évènement 1. Appuyer de nouveau autant de fois créera l\'Évènement 2, etc. Message à envoyer - Envoyer message après nombre défini de pressions du bouton + Message de diffusion envoyé avec l\'évènement. Le paramètre `button_id` est automatiquement ajouté à chaque message. Activer action du bouton Activer action après nombre spécifié de pressions Activer la vibration du bracelet @@ -601,8 +601,8 @@ Temps de sommeil préféré en heures Roidmi 3 Arabe contextuel A cocher pour activer le support \"Arabe contextuel\" - Confirmer la réinitialisation usine \? - Une réinitialisation d\'usine effacera toutes les données de l\'appareil connecté (si supporté). Les appareils Xiaomi/Huami modifient également l\'adresse MAC Bluetooth, de sorte qu\'ils apparaissent comme de nouveaux appareils dans Gadgetbrige. + Confirmer la réinitialisation \? + Une réinitialisation effacera toutes les données de l\'appareil connecté (si supporté). Les appareils Xiaomi/Huami modifient également l\'adresse MAC Bluetooth, de sorte qu\'ils apparaissent comme de nouveaux appareils dans Gadgetbridge. Déverrouillage de l\'écran du Band Activité physique Casio GB-6900 @@ -788,15 +788,32 @@ Temps de sommeil préféré en heures \n \nÀ VOS RISQUES ET PÉRILS ! Fossil Q Hybrid - Paramètres du Q Hybrid + Paramètres hybrides Q Montre non connectée Puissance de vibration : Objectif de pas décalage horaire décalage du deuxième fuseau horaire par rapport à UTC Veuillez régler le compteur de pas à un million pour l\'activer. - les changements peuvent prendre quelques secondes… - Désactiver le nouveau scan BLE + le changement peut prendre quelques secondes… + Désactiver la nouvelle détection BLE Cochez cette option si votre appareil ne peut être découvert Bangle.js + modifier les boutons + utilise l\'activité de la main comme compteur de notification + Boutons modifiés + Une erreur est survenue lors de la modification des boutons + décale le fuseau horaire de + décale l\'heure de + Y5 + Action de l\'évènement 1 + Action de l\'évènement 2 + Action de l\'évènement 3 + Paramètres détaillés des appuis de bouton + Action d\'appui long de bouton + Reporter + L\'accès à la localisation doit être autorisé et activé pour permettre à la détection de fonctionner correctement + iTag + Autoriser une grande MTU + Augmente la vitesse de transfert, mais peut ne pas fonctionner avec quelques appareils Android. \ No newline at end of file diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml new file mode 100644 index 000000000..6d833162d --- /dev/null +++ b/app/src/main/res/values-ka/strings.xml @@ -0,0 +1,33 @@ + + + გაჯეტბრიჯი + გაჯეტბრიდჯი + პარამეტრები + შეწყვეტა + დონაცია + სინქრონიზაცია + დაკარგული მოწყობილობის პოვნა + LED ფერის შეცვლა + FM სიხშირის შეცვლა + დაკავშირება… + გათიშვა + მოწყობილობის წაშლა + წაშლა %1$s + ეს წაშლის ხელსაწყოს და მასთან დაკავშირებულ ყველა მონაცემს! + დააჭირეთ ბარათს გათიშვისთვის + გათიშავს + აკავშირებს… + მოწყობილობის დაკალიბრება + გსურთ რეალურად მოწყობილობის გადატვირთვა\? + აპლიკაციას მენეჭერი + აპლიკაციები ქეშიში + დაინსტალირებული აპლიკაციები + დაინსტალირებული ციფერბლატები + წაშლა + წაშლა და ქეშიდან ამოღება + ისევ ინსტალაცია + ფებლის მაღაზიაში ძებნა + გააქტიურება + გამორტვა + კონფიგურაცია + \ No newline at end of file diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 2145cee33..1ba57eb79 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -9,7 +9,7 @@ Sinchronizuoti Surasti pamestą įrenginį Padaryti ekrano nuotrauką - Prijungti + Prijungti… Atjungti Ištrinti įrenginį Ištrinti %1$s @@ -26,7 +26,7 @@ Užverti programos meniu Norėdami atjungti ilgai spauskite kortelę Atjungiama - Jungiama + Jungiama… Derinti Programų tvarkyklė Programos talpykloje diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 303a33a25..23cd8e658 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -6,19 +6,19 @@ Debug Sluit af Doneer - Synchroniseren - Zoek verloren Toestel + Synchroniseer + Zoek verloren toestel Screenshot maken - Loskoppelen - Apparaat Verwijderen + Ontkoppel + Verwijder apparaat Verwijder %1$s Dit zal het apparaat en alle bijbehorende gegevens verwijderen! - Druk lang op de kaart om los te koppelen - Loskoppelen + Druk lang op de kaart om te ontkoppelen + Ontkoppelen Verbinden… Een screenshot maken van het apparaat Debug - App Beheerder + App-beheerder Apps in de cache Geïnstalleerde apps Geïnstalleerde wijzerplaten @@ -26,13 +26,13 @@ Verwijder en verwijder uit cache Herinstalleer Zoek in Pebble appstore - Activeren - Deactiveren + Activeer + Deactiveer Activeer HRM Deactiveer HRM Activeer de systeem weer app Installeer de app voor weer meldingen - Configureren + Configureer Verplaats naar de top Melding zwarte lijst U staat op het punt om firmware %s te installeren. @@ -54,7 +54,7 @@ Verbind met Gadgetbridge apparaat wanneer Bluetooth is ingeschakeld Start automatisch Verbind automatisch opnieuw - Gewenste Audiospeler + Gewenste audiospeler Standaard Datum en tijd Sync tijd @@ -166,7 +166,7 @@ Wanneer ingeschakeld, kunnen horloges het weer, batterij-informatie enz. weergeven. Pogingen tot opnieuw verbinden Eenheden - Tijd weergave + Tijdsformaat Tijd dat scherm aan is "De hele dag hartslag meten" HPlus/Makibes instellingen @@ -343,7 +343,7 @@ Alarmen gereserveerd voor toekomstige gebeurtenissen Gebruik hartslag sensor om slaap detectie te verbeteren Toestel tijdsverschuiving in uren (voor het detecteren van slaap van ploegarbeiders) - Datum formaat + Datumformaat Tijd Tijd & datum Knoppen acties @@ -426,7 +426,7 @@ Oude activiteitsdatabase verwijderen mislukt. Overschrijven Annuleren - Verwijderen + Verwijder Vibratie Pebble koppelen Er zal een koppelingsdialoogvenster verschijnen op uw Android-apparaat. Als dat niet gebeurt, kijk dan tussen uw meldingen en accepteer het koppelingsverzoek. Accepteer het daarna ook op uw Pebble. @@ -519,7 +519,7 @@ Activiteiten Fietsen Loopband - Alles selecteren + Selecteer alles Delen Mi Band 3 Q8 @@ -554,10 +554,10 @@ Herstel ophaal datum MyKronoz ZeTime Meldingen - Wijzig LED kleur + Wijzig ledkleur Wijzig FM frequentie Weet U zeker dat u de fabrieksinstellingen wilt terugzetten\? - Het terugzetten van de fabrieksinstellingen zal alle data van het verbonden toestel verwijderen (indien ondersteund). Xiaomi/Huami toestellen veranderen ook van Bluetooth MAC address, zodat deze zullen verschijnen als nieuwe toestellen in Gadgetbridge. + Het terugzetten van de fabrieksinstellingen zal alle data van het verbonden toestel verwijderen (indien ondersteund). Xiaomi/Huami toestellen veranderen ook van Bluetooth MAC-adres, zodat deze zullen verschijnen als nieuwe toestellen in Gadgetbridge. Minimum tijd tussen meldingen Van rechts naar links Schakel dit in als uw toestel geen talen van rechts naar links kan weergeven @@ -606,8 +606,8 @@ Hou er alsjeblieft rekening mee dat Gadgetbridge bestanden logt die veel persoonlijke informatie kunnen bevatten, inclusief maar niet gelimiteerd tot gezondheidsgegevens, unieke identificatiegegevens (zoals het MAC adres van een toestel), muziek voorkeuren, enz. Overweeg deze handmatig verwijderen van deze gegevens uit dit bestand alvorens deze te verzenden naar een publiek foutrapport. Waarschuwing! Geen data - LED Kleur - FM frequentie + Ledkleur + FM-frequentie Ongeldige frequentie Voer een frequentie in tussen 87,5 en 108,0 Taal en regio instellingen @@ -646,7 +646,7 @@ Soort calorieën Alleen calorieën verbrand gedurende activiteiten Verbrande calorieën actief en inactief - Datum formaat + Datumformaat YY/MM/DD DD/MM/YY MM/DD/YY @@ -723,8 +723,8 @@ Slaap per maand Mijia Smart Clock NFC - Sta toe dat andere apps HR data in realtime benaderen terwijl Gadgetbridge verbonden is - Derde partij realtime HR toegang + Sta andere apps toe HR-data te benaderen in realtime terwijl Gadgetbridge verbonden is + realtime HR-toegang door derden Gebruik aangepast lettertype Selecteer dit als je device aangepaste font software bevat met emoji ondersteuning Database autoexport locatie is ingesteld op: @@ -738,10 +738,10 @@ Leeg Database Exporteer en importeer Waarschuwing! Als je op deze knop drukt wis je je database en start je met een schone lei. - Slaap Alarm + Slaapalarm Stappen: %1$02d Slaap: %1$s - Status en Alarmen + Status en alarmen Zet alarm na: 5 minuten 10 minuten @@ -795,7 +795,7 @@ \nGA VERDER OP EIGEN RISICO! nodomain.freeyourgadget.gadgetbridge.ButtonPressed Fossil Q Hybrid - Q Hybrid Instellingen + Q Hybrid instellingen Horloge niet verbonden trillingssterkte: Doel in stappen diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 8b18744e8..4f14cd194 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -825,4 +825,5 @@ iTag Dostęp do lokalizacji musi zostać przyznany i włączony, aby skanowanie działało poprawnie Zwiększa szybkość transferu, ale może nie działać na niektórych urządzeniach z Androidem. + Zezwól na wysoki MTU \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 608bdb9ad..de90c736f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -4,7 +4,7 @@ Gadgetbridge Настройки Отладка - Выход + Выйти Синхронизировать Найти устройство Сделать снимок экрана @@ -14,26 +14,26 @@ Устройство и вся связанная с ним информация будут удалены! Открыть панель навигации Закрыть панель навигации - Чтобы разъединиться, нажмите на карточку устройства и удержите - Разъединение - Соединение… - Сделать снимок устройства + Долгое нажатие отключит устройство + Отключается + Подключается… + Делается снимок устройства Отладка Управление приложением - Приложения в памяти + Приложения в кеше Установленные приложения - Установленный циферблаты + Установленные циферблаты Удалить Удалить и очистить кеш - Переустановка + Переустановить Искать в магазине Pebble Активировать Деактивировать - Включить монитор сердечного ритма - Выключить монитор сердечного ритма - Включить системное приложение прогноза погоды - Выключить системное приложение прогноза погоды + Включить пульсометр + Выключить пульсометр + Включить системный прогноз погоды + Выключить системный прогноз погоды Установить уведомления для прогноза погоды Настроить Переместить наверх @@ -41,58 +41,58 @@ Заблокированные уведомления - Установщик прошивки/приложений + Установка прошивки и приложений Вы собираетесь установить прошивку %s. Вы собираетесь установить прошивки %1$s и %2$s вместо текущей на вашем Mi Band. - Эта прошивка была проверена и совместима с Gadgetbridge. + Эта прошивка была проверена: она совместима с Gadgetbridge. Эта прошивка не протестирована и может быть несовместима с Gadgetbridge. \n \nНЕ РЕКОМЕНДУЕТСЯ устанавливать её! Если вы установите эту прошивку и убедитесь, что всё работает без сбоев, пожалуйста, сообщите об этом разработчикам Gadgetbridge. Они пометят эту версию прошивки (%s) как совместимую. Настройки - Общие настройки - Подключение к зарегистрированному устройству при активации Bluetooth + Общие + Подключаться к добавленному устройству при включении Bluetooth Запускать автоматически Переподключаться автоматически Предпочтительный музыкальный плеер По умолчанию Дата и время - Синхронизировать время при подключении - Синхронизировать время при подключении к зарегистрированному устройству, а также при изменении времени или временной зоны в системных настройках + Синхронизировать время + Синхронизировать время на добавленном устройстве при подключении, установке времени или часового пояса Тема Светлая - Темная + Тёмная Язык - Прятать уведомление Gadgetbridge - Показывать значок в строке состояния и уведомление на экране блокировки - Не показывать значок в строке состояния и уведомление на экране блокировки + Скрывать уведомление Gadgetbridge + Показывает значок в строке состояния и уведомление на экране блокировки + Не показывает значок в строке состояния и уведомление на экране блокировки Уведомления Повторы - Вызовы - СМС-сообщения + Телефонные звонки + SMS-сообщения Сообщения Pebble - Поддержка приложений, которые отправляют уведомления на Pebble с помощью PebbleKit. - Поддержка обычных уведомлений - … даже когда экран включён + Для приложений, которые отправляют уведомления на Pebble с помощью PebbleKit. + Доступ к уведомлениям + Уведомления при включённом экране Не беспокоить - Предотвращать отправку нежелательных уведомлений в режиме \"Не беспокоить\" + Не показывать нежелательные уведомления в этом режиме Транслитерация Всегда - Включите эту функцию, если ваше устройство не имеет поддержки шрифта на вашем языке + Включите, если на устройстве нет шрифта для вашего языка Когда экран выключен Никогда Конфиденциальность Конфиденциальность вызовов - Отображать имя и номер - Скрывать имя, но отображать номер - Скрывать номер, но отображать имя + Показывать имя и номер + Скрывать имя, но показывать номер + Скрывать номер, но показывать имя Скрывать имя и номер Заблокированные приложения Сохранённые сообщения Ответы Общий суффикс - Пропущенные вызовы + Отклонённые звонки Обновить на Pebble Настройки для разработчиков Адрес Mi Band @@ -122,7 +122,7 @@ Долгота Обновлять местоположение Попробуйте получить текущее местоположение во время выполнения, используйте сохраненное местоположение в качестве резервного - Пожалуйста, включите сетевое расположение + Включите местоположение по сети Месторасположение определено Принудительный протокол уведомлений Эта настройка принудительно использует самый новый протокол уведомлений (зависит от версии прошивки). ВКЛЮЧАЙТЕ, ЕСЛИ ТОЧНО ЗНАЕТЕ, ЗАЧЕМ ВЫ ЭТО ДЕЛАЕТЕ! @@ -198,7 +198,7 @@ Анализ фаз сна Сохранять файлы журнала Запускается - Получение данных активности + Передаёт данные активности От %1$s до %2$s Носите на левой или правой руке? Профиль настроек вибрации @@ -306,7 +306,7 @@ Формат даты Время Время и дата - Активировать экран при подъёме + Активировать экран поднятием руки Готов к передаче данных с %1$s Ожидание переподключения Ваши данные @@ -332,11 +332,9 @@ Если флажок установлен, данные сохраняются как есть. В дальнейшем их можно будет обрабатывать. Обратите внимание: в этом случае база данных будет занимать больше места. Управление базой данных Управление базой данных - "Операции с базой данных используют этот путь на устройстве. -\n -\nОн доступен для других приложений Android и. компьютера. -\n -\nВы можете найти экспортированную базу данных (или разместить базу данных, которую вы хотите импортировать) здесь:" + Операции с базой данных используют этот путь на устройстве. +\nОн доступен для других приложений Android и компьютера. +\nВы можете найти экспортированную базу данных (или разместить базу данных, которую вы хотите импортировать) здесь: Удаление устаревшей базы данных Нет доступа к пути экспорта. Обратитесь, пожалуйста, к разработчикам. Экспортировано в: %1$s @@ -396,22 +394,22 @@ Пожертвовать Подключить… Заблокированные календари - Вы собираетесь установить прошивку %s на ваш Amazfit Bip. -\n -\nСоблюдайте последовательность: вначале установите файл .fw, затем .res, и затем .gps. После установки файла .fw часы перезагрузятся. -\n -\nОбратите внимание: если файлы .gps и .res такие же, как в текущей версии, их не нужно переустанавливать. -\n -\nВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК! - Вы собираетесь установить прошивку %s на ваш Amazfit Cor. -\n -\nСоблюдайте последовательность: вначале установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. -\n -\nОбратите внимание: если версия файла .res совпадает с установленной, его не нужно переустанавливать. -\n -\nВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК! + Вы собираетесь установить прошивку %s на ваш Amazfit Bip. +\n +\nБудьте внимательны: сначала установите файл .fw, затем .res, и затем .gps. После установки файла .fw часы перезагрузятся. +\n +\nЕсли файлы .gps и .res такие же, как в текущей версии, их не нужно переустанавливать. +\n +\nВы действуете на свой страх и риск! + Вы собираетесь установить прошивку %s на ваш Amazfit Cor. +\n +\nБудьте внимательны: сначала установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. +\n +\nЕсли файл и .res такой же, как в текущей версии, его не нужно переустанавливать. +\n +\nВы действуете на свой страх и риск! Включить жесты \"провести направо и налево\" в графиках активности - Заблокировать Календари + Заблокированные календари Временной график Pebble Включить JS в фоновом режиме Включают, чтобы видеть погоду, заряд батарейки и т.д. на циферблате. @@ -430,14 +428,14 @@ Заряд батарейки Действия кнопки Настройте действия при нажатии на кнопку - Нажатий на кнопку + Кол-во нажатий на кнопку Количество нажатий, необходимое для генерации События 1. Ещё столько же нажатий потребуется для генерации События 2 и т.д. Сообщение для трансляции - Сообщение транслируемое при наступлении события. Параметр `button_id` добавляется к каждому сообщению автоматически. - Включить действия при нажатии на кнопку - Включить действия для заданного количества нажатий на кнопку - Включить вибрацию - Включить вибрацию браслета в ответ на исполняющееся при нажатии действие + Отправлять сообщение при наступлении события. Параметр `button_id` добавляется к каждому сообщению автоматически. + Включить действия для кнопки + Включить действия на заданное кол-во нажатий кнопки + Включить вибро-отклик браслета + Включить вибро-отклик браслета в ответ на исполнение действия при нажатии Максимальная задержка между нажатиями Максимальная задержка между нажатиями в миллисекундах Задержка после действия при нажатии @@ -446,7 +444,7 @@ Браслет завибрирует, когда будет выполнена дневная норма шагов Что показывать на экране Выберите, что показывать на экране браслета - Поверните запястье, чтобы переключиться на другую информацию + Переключать информацию поворотом запястья Не беспокоить Браслет не будет получать уведомления, даже если включён Напоминания о низкой активности @@ -479,23 +477,23 @@ Погода Компас Настройки - Заблокировать все уведомления - Разблокировать все уведомления + Заблокировать все + Разблокировать все Вы собираетесь установить прошивку %s на ваш Mi Band 3. \n -\nСоблюдайте последовательность: вначале установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. -\n -\nОбратите внимание: если версия файла .res совпадает с установленной, его не нужно переустанавливать. -\n +\nСоблюдайте последовательность: вначале установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. +\n +\nОбратите внимание: если версия файла .res совпадает с установленной, его не нужно переустанавливать. +\n \nНЕ ПРОВЕРЯЛОСЬ, ЕСТЬ ВЕРОЯТНОСТЬ СЛОМАТЬ ВАШЕ УСТРОЙСТВО. ВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК! Местоположение для погоды (CM/LOS) Подключаться только в режиме GATT-клиента Экспериментальные настройки только для Pebble 2. Попробуйте, если связь не очень Автоматический экспорт данных - Включить автоматический экспорт - Путь экспорта + Автоматический экспорт включён + Путь для экспорта данных Интервал экспорта - Экспортировать каждые %d часов + Экспортировать раз в %d ч. Испанский Русский Не измерялось @@ -532,15 +530,15 @@ XWatch MyKronoz ZeTime Ориентация экрана - Автозагрузка данных об активности - Загрузка данных при каждой разблокировке экрана. Это работает только при включенной блокировке экрана! - Минимальный интервал между загрузками - Загружать каждые %d минут(ы) + Автоматически получать данные + Получать данные активности при разблокировке. Работает только при настроенной блокировке экрана! + Минимальный интервал + Получать раз в %d мин. Горизонтально Вертикально Отслеживание активности Статистика активности - Сбросить дату загрузки + Сбросить дату получения Недопустимый формат данных Данные GPS Поправка ошибки GPS @@ -552,7 +550,7 @@ Уведомления Ещё Музыка - Калибровать устройство + Откалибровать устройство Когда устройство завибрирует, встряхните его или нажмите на кнопку. Watch 9 Минут: @@ -589,8 +587,8 @@ Автоматически снижать яркость экрана устройства по ночам На закате Принято - Изменить цвет излучения светодиода - Изменить частоту УКВ + Изменить цвет светодиода + Изменить FM-частоту Roidmi Roidmi 3 Цвет излучения светодиода @@ -604,11 +602,11 @@ Максимальный пульс Минимальный пульс Справа налево - Включите, если ваше устройство поддерживает ввод справа налево - Максимальная длина строки при вводе справа налево - Изменяет длину строк, на которые разбит текст при вводе справа налево + Включите, если устройство не отображает письмо справа налево + Длина строки при вводе справа налево + Изменить длину строк в тексте с письмом справа налево Контекстные формы для арабского языка - Включает поддержку контекстных форм арабского языка + Включить поддержку контекстных форм арабского языка Поддержка ввода справа налево Уведомление об отключении Упражнения @@ -617,12 +615,12 @@ Минимум одно из слов Все слова Введите хотя бы одно слово - Точно сбросить до заводских настроек\? + Сбросить до заводских настроек\? Режим фильтрации Сохранить конфигурацию Не подключено, будильник не установлено. nodomain.freeyourgadget.gadgetbridge.ButtonPressed - Сброс настроек приведёт к удалению всех данных с подключённого устройства (если поддерживается). Устройства Xiaomi / Huami также меняют MAC-адрес Bluetooth, поэтому для Gadgetbridge они отображаются как новые устройства. + Сброс настроек удалит все данные с этого устройства (если поддерживается). Устройства Xiaomi и Huami поменяют MAC-адрес Bluetooth, поэтому в Gadgetbridge они отображаются как новые устройства. ГГ/ММ/ДД ДД/ММ/ГГ ММ/ДД/ГГ @@ -640,7 +638,7 @@ В среднем: %1$s Разрешает другим приложениям доступ к датчику сердцебиения при активном соединении через Gadgetbridge Доступ к пульсометру - Кнопка подключения новых устройств + Кнопка подключения нового устройства Всегда отображать Когда нет добавленных устройств Реакция на Событие 1 @@ -648,4 +646,181 @@ Реакция на Событие 3 Детальная настройка реакции на нажатие кнопки Реакция на долгое нажатие + Чтобы настроить приложение, разблокируйте его + Введите нужные слова по одному в строке + Фильтр уведомлений сохранён + Не фильтровать + Показывать, когда слова находятся в списке + Блокировать, когда из списка списке + Режим конфигурации + Настройки ZeTime + Настройки пульса + Продолжительность отображения в секундах + Пульсовой сигнал + Часы предупредят вас, когда частота пульса превысит допустимые значения. + Включить пульсовой сигнал + Максимальный пульс + Минимальный пульс + Аналоговый режим + Только руки + Руки и шаги + Отслеживание активности + Включение отслеживания активности, будет считать ваши шаги и так далее. + Движение руки + Поверните запястье, чтобы активировать или деактивировать дисплей. + Тип калорий + Только активные сжигаемые калории + Активные и неактивные сжигаемые калории + Формат даты + Повторения + Установить тип сигнализации для будильника + Тишина + Непрерывная вибрация + Непрерывный звуковой сигнал + Непрерывная вибрация и звуковой сигнал + Вибрировать единожды + Вибрировать дважды + Сигнализировать единожды + Сигнализировать дважды + Вибрировать и сигнализировать единожды + Предупреждение о потерях + каждые 15 минут + каждые 45 минут + Ежедневная цель: сожженные калории + Ежедневная цель: дистанция в метрах + Ежедневная цель: время активности в минутах + Mi Scale 2 + Включить VoIP-звонки + Специфичные настройки устройства + Ключ авторизации + Измените ключ авторизации на общий ключ на всех ваших Android-устройствах, с которых вы хотели бы подключиться. Предыдущий ключ по умолчанию для всех устройств 0123456789@ABCDE + BFH-16 + Вы собираетесь установить прошивку %s на ваш Amazfit Cor 2. +\n +\nСоблюдайте последовательность: вначале установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. +\n +\nОбратите внимание: если версия файла .res совпадает с установленной, его не нужно переустанавливать. +\n +\nВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК! +\n +\nПОЛНОСТЬЮ НЕ ПРОТЕСТИРОВАНО, ВОЗМОЖНО НУЖНО ПРОШИТЬ ПРОШИВКУ BEATS_W, ЕСЛИ ИМЯ ВАШЕГО УСТРОЙСТВА \"Amazfit Band 2\" + Голландский язык + Турецкий язык + Украинский язык + Арабский язык + Индонезийский язык + Тайский язык + Вьетнамский язык + Португальский язык + Amazfit Cor 2 + Mi Band 4 + Вы собираетесь установить прошивку %s на ваш Mi Band 4. +\n +\nСоблюдайте последовательность: вначале установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. +\n +\nОбратите внимание: если версия файла .res совпадает с установленной, его не нужно переустанавливать. +\n +\nВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК! + Сигнал пульсометра в течение занятия спортом + Нижний предел + Верхний предел + Настройки Графиков + Показывать средние значения на графиках + Диапазон графиков + Диапазон графиков в рамках месяца + Диапазон графиков в рамках недели + Шаги за месяц + Сон за месяц + Mijia Smart Clock + NFC + Использовать пользовательский шрифт + Активируйте это для поддержки emoji, если ваше устройство имеет установленный пользовательский шрифт + Местоположение авто-экспорта базы данных установлено: + Авто-экспорт + Экспорт базы данных + Импорт базы данных + Запустить Авто-экспорт сейчас + Экспортирование базы данных… + Удалить старую базу данных + Пустая база данных + Пустая база данных + Экспорт и Импорт + Внимание! Нажав эту кнопку, вы сотрете вашу базу данных и начнете с нуля. + Сигнализация сна + Шаги: %1$02d + Сон: %1$s + Статус и будильники + Установить сигнал после: + 5 минут + 10 минут + 20 минут + 1 час + + час + часа + часов + + Для просмотра трассировки активности установите приложение, которое может работать с GPX файлами. + Настройки Makibes HR3 + Makibes HR3 + Amazfit Bip Lite + Найти телефон + Включить \\\'Найти телефон\\\' + Использовать ваш браслет для проигрывания рингтонов. + Продолжительность звонка в секундах + Продолжительность + Это устройство нуждается в ключе авторизации, используйте длительное нажатие на устройство, чтобы войти в него. Читайте Wiki. + Вы собираетесь установить прошивку %s на ваш Amazfit Bip Lite. +\n +\nБудьте внимательны: сначала установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. +\n +\nЕсли файл и .res такой же, как в текущей версии, его не нужно переустанавливать. +\n +\nВы действуете на свой страх и риск! + Amazfit GTR + Вы собираетесь установить прошивку %s на ваш Amazfit GTR. +\n +\nСоблюдайте последовательность: вначале установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. +\n +\nОбратите внимание: если версия файла .res совпадает с установленной, его не нужно переустанавливать. +\n +\nВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК! + Красный + Оранжевый + Цвет пульса + Диапазон сна + Последние 24 часа + С полудня до полудня + Amazfit GTS + Вы собираетесь установить прошивку %s на ваш Amazfit GTS. +\n +\nСоблюдайте последовательность: вначале установите файл .fw, затем .res. После установки файла .fw часы перезагрузятся. +\n +\nОбратите внимание: если версия файла .res совпадает с установленной, его не нужно переустанавливать. +\n +\nВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК! + Fossil Q Hybrid + Настройки Q Hybrid + Часы не подсоединены + сила вибрации: + Цель в шагах + сдвиг по времени + смещение второго часового пояса относительно UTC + кнопки перезаписи + использовать активную руку в качестве счетчика уведомлений + Пожалуйста, установите счетчик шагов на миллион, чтобы активировать это. + Кнопки перезаписаны + Ошибка перезаписи кнопок + смещение часового пояса на + изменения могут занять несколько секунд… + смещение часового пояса на + Отключить новое BLE сканирование + Включите, если устройство не видно как доступное + Bangle.js + Y5 + Короткий сон + Доступ к местоположению должен быть разрешен и включен для корректной работы поиска + iTag + Разрешить высокий MTU + Увеличивает скорость передачи данных, но может не работать на некоторых Android-устройствах. \ No newline at end of file