From c8733128311ab65ae0be05ed484656693a7c68e0 Mon Sep 17 00:00:00 2001 From: ivanovlev Date: Sat, 14 Jan 2017 02:39:36 +0300 Subject: [PATCH] Transliterate unsupported Russian characters into English --- app/build.gradle | 1 + .../service/devices/hplus/HPlusSupport.java | 49 +++++++++++++++++++ app/src/main/res/xml/changelog_master.xml | 1 + 3 files changed, 51 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index b6b68af6..7a317525 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,6 +77,7 @@ dependencies { compile 'org.apache.commons:commons-lang3:3.4' // compile project(":DaoCore") + compile 'com.google.guava:guava:19.0' } preBuild.dependsOn(":GBDaoGenerator:genSources") diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java index 4689155d..a674d6b7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java @@ -14,6 +14,8 @@ import android.net.Uri; import android.support.v4.content.LocalBroadcastManager; import android.widget.Toast; +import com.google.common.collect.ImmutableMap; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,6 +23,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; +import java.util.Map; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.devices.hplus.HPlusConstants; @@ -646,6 +649,7 @@ public class HPlusSupport extends AbstractBTLEDeviceSupport { private void showIncomingCall(String name, String number) { try { TransactionBuilder builder = performInitialized("incomingCallIcon"); + name = transliterate(name); //Enable call notifications builder.write(ctrlCharacteristic, new byte[]{HPlusConstants.CMD_ACTION_INCOMING_CALL, 1}); @@ -703,6 +707,8 @@ public class HPlusSupport extends AbstractBTLEDeviceSupport { LOG.debug("Show Notification: "+title+" --> "+body); try { TransactionBuilder builder = performInitialized("notification"); + title = transliterate(title); + body = transliterate(body); byte[] msg = new byte[20]; for (int i = 0; i < msg.length; i++) @@ -777,6 +783,49 @@ public class HPlusSupport extends AbstractBTLEDeviceSupport { } } + //replace unsupported symbols to english analog + private String transliterate(String txt){ + StringBuilder message = new StringBuilder(); + char[] chars = txt.toCharArray(); + + for (char c : chars) + { + message.append(transliterate(c)); + } + + return message.toString(); + } + + //replace unsupported symbol to english analog text + private String transliterate(char c){ + Map map = ImmutableMap.builder() + .put('а', "a").put('б', "b").put('в', "v").put('г', "g") + .put('д', "d").put('е', "e").put('ё', "jo").put('ж', "zh") + .put('з', "z").put('и', "i").put('й', "jj").put('к', "k") + .put('л', "l").put('м', "m").put('н', "n").put('о', "o") + .put('п', "p").put('р', "r").put('с', "s").put('т', "t") + .put('у', "u").put('ф', "f").put('х', "kh").put('ц', "c") + .put('ч', "ch").put('ш', "sh").put('щ', "shh").put('ъ', "\"") + .put('ы', "y").put('ь', "'").put('э', "eh").put('ю', "ju") + .put('я', "ja") + .build(); + + char lowerChar = Character.toLowerCase(c); + + if (map.containsKey(lowerChar)) { + String replace = map.get(lowerChar); + + if (lowerChar != c) + { + return replace.toUpperCase(); + } + + return replace; + } + + return String.valueOf(c); + } + @Override public boolean onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { diff --git a/app/src/main/res/xml/changelog_master.xml b/app/src/main/res/xml/changelog_master.xml index c54077e4..34e61a41 100644 --- a/app/src/main/res/xml/changelog_master.xml +++ b/app/src/main/res/xml/changelog_master.xml @@ -16,6 +16,7 @@ HPlus: Near real time Heart rate measurement HPlus: Experimental synchronization of activity data (only sleep, steps and intensity) HPlus: Fix some disconnection issues + HPlus: Transliterate unsupported Russian characters into English New devices: HPlus (e.g. Zeblaze ZeBand), contributed by João Paulo Barraca