Десятичные объявления TalkBack

У меня проблема с Talkback. В моей строке у меня есть следующий номер.

1,827

это голландское число, поэтому оно означает: 1 евро и 82,7 цента.

Но Talkback говорит: 18 сотен и 27 евро.

Так что эта проблема возникает только тогда, когда у меня есть число с более чем двумя десятичными знаками. Как решить эту проблему?

---РЕДАКТИРОВАТЬ---

Когда я читаю эту страницу: https://english.stackexchange.com/questions/62397/reading-out-decimal-numbers-in-english

кажется, я должен произнести число 1827 следующим образом:

одна целых восемь две семь вместо действия, если это число. Как это сделать?

---РЕДАКТИРОВАТЬ---

Я включил следующее:

 StringTokenizer stringTokenizer = new StringTokenizer(value, ".");
    String currencyBeforeComma = null;
    String currencyAfterComma = null;

    while (stringTokenizer.hasMoreTokens()) {
        currencyBeforeComma = stringTokenizer.nextToken();
        currencyAfterComma = stringTokenizer.nextToken();
    }

    result = currencyBeforeComma + " point " + currencyAfterComma;

Итак, теперь его произношение: одна восьмая десятая двадцать семь. Так что это все еще то, что я хочу.

---РЕДАКТИРОВАТЬ---

String value = 1,827;        
String result = "";
        for (Character chars : value.toCharArray()) {
            result = result + chars + " ";
        }
        String replace = result.replace(getResources().getString(R.string.accessibility_decimal_separator), getResources().getString(R.string.accessibility_decimal_separator_text));
        return replace;

Это то, что я сделал. Я создал пробел для каждого символа в строке значения и для , или . Я заменил его запятой или точечным текстом.

Это работает на данный момент, но это не чистое решение. Если у кого-то есть лучшее решение, поделитесь


person Dennis Anderson    schedule 01.09.2015    source источник
comment
Правильно ли, что я вижу только запятую, а не десятичную точку, и ваше требование заключается только в этом.   -  person Mohammad Tauqir    schedule 01.09.2015
comment
en.wikipedia.org/wiki/Decimal_mark В Нидерландах используются арабские цифры. Итак, запятая - это десятичная точка.   -  person Dennis Anderson    schedule 01.09.2015


Ответы (1)


Попробуйте это и измените свой согласно вашему требованию

TextView currencylbl = (TextView) findViewById(R.id.currencylbl);
        boolean countryCurrency = true;
        String currency = "1,827";
    if(countryCurrency==true && currency.contains(",")){

            StringTokenizer stringTokenizer = new StringTokenizer(currency, ",");
            String currencyBeforeComma = null;
            String currencyAfterComma = null;

            while (stringTokenizer.hasMoreTokens()) {
                currencyBeforeComma = stringTokenizer.nextToken();
                currencyAfterComma = stringTokenizer.nextToken();
                currencylbl.setText(currency);
            } 

            Double double1 = Double.parseDouble(currencyAfterComma);
            double1 = Double.parseDouble(currencyBeforeComma)+double1/1000;
            currencylbl.setContentDescription(double1+"");
        }

countryCurrency относится к конкретной логической валюте страны. Также измените согласно вашему требованию.

            Double double1 = Double.parseDouble(currencyAfterComma);
            double1 = Double.parseDouble(currencyBeforeComma)+double1/1000;
            currencylbl.setContentDescription(double1+"");

xml это

<TextView 
    android:id="@+id/currencylbl"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="24sp"
    />
person Mohammad Tauqir    schedule 01.09.2015
comment
Попробую это завтра :) - person Dennis Anderson; 01.09.2015
comment
могу я узнать в чем дело? - person Mohammad Tauqir; 02.09.2015
comment
его произношение того же поведения по умолчанию. Смотрите мое второе редактирование, чтобы узнать, что я сделал дополнительно, чтобы попытаться это исправить. - person Dennis Anderson; 02.09.2015
comment
@Dennis Это разные поставщики специальных возможностей. Встроенный Google и Samsung. Я проверил свой ответ. - person Mohammad Tauqir; 02.09.2015
comment
Попробуйте: Double double1 = Double.parseDouble(currencyAfterComma); ------- double1 = Double.parseDouble(currencyBeforeComma)+double1/1000; ------- валютаlbl.setContentDescription(double1+); - person Mohammad Tauqir; 02.09.2015
comment
Давайте продолжим обсуждение в чате. - person Mohammad Tauqir; 02.09.2015
comment
Строка textSpeech= currency.replace(,, point ); валютаlbl.setContentDescription (textSpeech); - person Mohammad Tauqir; 02.09.2015