From 8ad33475aaa7a454449b4a28de95732e69a22df9 Mon Sep 17 00:00:00 2001 From: mamutcho Date: Mon, 23 Mar 2020 11:27:41 +0200 Subject: [PATCH] Sync Gadgetbridge version to 0.43.0 Lenovo Watch X (Plus) - add cyrillic support /please disable transliteration in settings/ --- .../watchxplus/WatchXPlusDeviceSupport.java | 116 +++++++++++++++++- .../main/res/xml/watchxplus_preferences.xml | 2 +- 2 files changed, 115 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lenovo/watchxplus/WatchXPlusDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lenovo/watchxplus/WatchXPlusDeviceSupport.java index 615d836a7..89aaadac9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lenovo/watchxplus/WatchXPlusDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lenovo/watchxplus/WatchXPlusDeviceSupport.java @@ -213,6 +213,116 @@ public class WatchXPlusDeviceSupport extends AbstractBTLEDeviceSupport { } } + + private String transliterate(String inputText) { + String outText = ""; + String returnText = ""; + for (int messageIndex = 0; messageIndex < inputText.length(); messageIndex++) { + String checkLetter = inputText.substring(messageIndex, messageIndex + 1); + returnText = checkLetter; + switch (checkLetter) { + case "а": + returnText = "А"; + break; + case "б": + returnText = "Б"; + break; + case "в": + returnText = "В"; + break; + case "г": + returnText = "Г"; + break; + case "д": + returnText = "Д"; + break; + case "е": + returnText = "Е"; + break; + case "ж": + returnText = "Ж"; + break; + case "з": + returnText = "З"; + break; + case "и": + returnText = "И"; + break; + case "й": + returnText = "Й"; + break; + case "к": + returnText = "К"; + break; + case "л": + returnText = "Л"; + break; + case "м": + returnText = "М"; + break; + case "н": + returnText = "Н"; + break; + case "о": + returnText = "О"; + break; + case "п": + returnText = "П"; + break; + case "Р": + returnText = "р"; + break; + case "С": + returnText = "с"; + break; + case "Т": + returnText = "т"; + break; + case "У": + returnText = "у"; + break; + case "Ф": + returnText = "ф"; + break; + case "Х": + returnText = "х"; + break; + case "Ц": + returnText = "ц"; + break; + case "Ч": + returnText = "ч"; + break; + case "Ш": + returnText = "ш"; + break; + case "Щ": + returnText = "щ"; + break; + case "Ъ": + returnText = "ъ"; + break; + case "Ь": + returnText = "ь"; + break; + case "Ю": + returnText = "ю"; + break; + case "Я": + returnText = "я"; + break; + case "Ы": + returnText = "ы"; + break; + case "Э": + returnText = "э"; + break; + } + outText = outText + returnText; + } + return outText; + } + /** Format text and send it to watch * @param notificationChannel - text or call * @param notificationText - text to show @@ -221,13 +331,15 @@ public class WatchXPlusDeviceSupport extends AbstractBTLEDeviceSupport { try { TransactionBuilder builder = performInitialized("showNotification"); byte[] command = WatchXPlusConstants.CMD_NOTIFICATION_TEXT_TASK; - byte[] text = notificationText.getBytes(StandardCharsets.UTF_8); + + //byte[] text = notificationText.getBytes(StandardCharsets.UTF_8); + byte[] text = transliterate(notificationText).getBytes(StandardCharsets.UTF_8); + byte[] messagePart; int messageLength = text.length; int parts = messageLength / 9; int remainder = messageLength % 9; - // Increment parts quantity if message length is not multiple of 9 if (remainder != 0) { parts++; diff --git a/app/src/main/res/xml/watchxplus_preferences.xml b/app/src/main/res/xml/watchxplus_preferences.xml index e9dcb88b9..aeb925d68 100644 --- a/app/src/main/res/xml/watchxplus_preferences.xml +++ b/app/src/main/res/xml/watchxplus_preferences.xml @@ -33,7 +33,7 @@ android:layout="@layout/preference_checkbox" android:defaultValue="false" android:key="watchxplus_missed" - android:title="@string/pref_screen_notification_profile_incoming_call" /> + android:title="@string/pref_wxp_title_repeat_on_misscall" />