TTS считывает полученные смс, если смс превышает нормальные 160 символов - остановится - PullRequest
0 голосов
/ 23 февраля 2011

как в заголовке. Имейте TTS, считывающий полученные сообщения. Но если сообщение превышает 160 символов, оно не будет читать остальное (что, я полагаю, технически является вторым текстом, связанным с одним «большим» сообщением провайдером сети). Как я могу изменить свой код так, чтобы, если SMS больше, чем стандартное сообщение, я могу все это прочитать? Вот фрагмент моего кода

public void onReceive(Context context, Intent intent) 
{
            int n; 
            Bundle bundle = intent.getExtras();
            Object messages[] = (Object[]) bundle.get("pdus");
            SmsMessage smsMessage[] = new SmsMessage[messages.length];
            for (n = 0; n<messages.length; n++){
                    smsMessage[n] =             SmsMessage.createFromPdu((byte[])messages[n]); 
            }

            String sms1 = smsMessage[0].getMessageBody();       
            /**Send variable to the class handling TTS, to be read out-loud by the corresponding method */

            SpeakerActivity.speakSMS(sms1);

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Каждый элемент массива в вашем примере содержит 160-символьную часть сообщения. Если длина сообщения превышает 160 символов, хотя Android сшивает их вместе в приложении SMS по умолчанию, они будут представлены частями в вашем массиве. Вам нужно будет перебрать этот массив, чтобы найти дополнительные фрагменты каждого длинного сообщения.

0 голосов
/ 23 февраля 2011

SMSMessage [1] .getMessageBody (); SMSMessage [2] .getMessageBody (); и т.д. содержат "остальные" смс. Решаемые.

...