Merge change I44d4cbec into eclair

* changes:
  Fix some SMS encode issues.
This commit is contained in:
Android (Google) Code Review
2009-11-06 03:07:01 -05:00
3 changed files with 21 additions and 2 deletions

View File

@@ -658,7 +658,7 @@ public class GsmAlphabet {
charToGsm.put('Z', i++); charToGsm.put('Z', i++);
charToGsm.put('\u00c4', i++); charToGsm.put('\u00c4', i++);
charToGsm.put('\u00d6', i++); charToGsm.put('\u00d6', i++);
charToGsm.put('\u0147', i++); charToGsm.put('\u00d1', i++);
charToGsm.put('\u00dc', i++); charToGsm.put('\u00dc', i++);
charToGsm.put('\u00a7', i++); charToGsm.put('\u00a7', i++);

View File

@@ -16,6 +16,10 @@
package com.android.internal.telephony.cdma.sms; package com.android.internal.telephony.cdma.sms;
import static android.telephony.SmsMessage.ENCODING_16BIT;
import static android.telephony.SmsMessage.MAX_USER_DATA_BYTES;
import static android.telephony.SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER;
import android.util.Log; import android.util.Log;
import android.util.SparseIntArray; import android.util.SparseIntArray;
@@ -417,6 +421,21 @@ public final class BearerData {
} else { } else {
ted = com.android.internal.telephony.gsm.SmsMessage.calculateLength( ted = com.android.internal.telephony.gsm.SmsMessage.calculateLength(
msg, force7BitEncoding); msg, force7BitEncoding);
if (ted.msgCount == 1 && ted.codeUnitSize == SmsMessage.ENCODING_7BIT) {
// We don't support single-segment EMS, so calculate for 16-bit
// TODO: Consider supporting single-segment EMS
ted.codeUnitCount = msg.length();
int octets = ted.codeUnitCount * 2;
if (octets > MAX_USER_DATA_BYTES) {
ted.msgCount = (octets / MAX_USER_DATA_BYTES_WITH_HEADER) + 1;
ted.codeUnitsRemaining = (MAX_USER_DATA_BYTES_WITH_HEADER
- (octets % MAX_USER_DATA_BYTES_WITH_HEADER))/2;
} else {
ted.msgCount = 1;
ted.codeUnitsRemaining = (MAX_USER_DATA_BYTES - octets)/2;
}
ted.codeUnitSize = ENCODING_16BIT;
}
} }
return ted; return ted;
} }

View File

@@ -135,7 +135,7 @@ public class CdmaSmsAddress extends SmsAddress {
}; };
private static final char[] numericCharsSugar = { private static final char[] numericCharsSugar = {
'(', ')', ' ', '-', '+', '.' '(', ')', ' ', '-', '+', '.', '/', '\\'
}; };
private static final SparseBooleanArray numericCharDialableMap = new SparseBooleanArray ( private static final SparseBooleanArray numericCharDialableMap = new SparseBooleanArray (