|
|
|
@ -16,27 +16,18 @@
|
|
|
|
|
*/
|
|
|
|
|
package org.thoughtcrime.securesms.util;
|
|
|
|
|
|
|
|
|
|
public class SmsCharacterCalculator extends CharacterCalculator {
|
|
|
|
|
import android.telephony.SmsMessage;
|
|
|
|
|
|
|
|
|
|
public static final int SMS_SIZE = 160;
|
|
|
|
|
public static final int MULTIPART_SMS_SIZE = 153;
|
|
|
|
|
public class SmsCharacterCalculator extends CharacterCalculator {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public CharacterState calculateCharacters(int charactersSpent) {
|
|
|
|
|
int maxMessageSize;
|
|
|
|
|
|
|
|
|
|
if (charactersSpent <= SMS_SIZE) {
|
|
|
|
|
maxMessageSize = SMS_SIZE;
|
|
|
|
|
} else {
|
|
|
|
|
maxMessageSize = MULTIPART_SMS_SIZE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int messagesSpent = charactersSpent / maxMessageSize;
|
|
|
|
|
|
|
|
|
|
if (((charactersSpent % maxMessageSize) > 0) || (messagesSpent == 0))
|
|
|
|
|
messagesSpent++;
|
|
|
|
|
public CharacterState calculateCharacters(String messageBody) {
|
|
|
|
|
|
|
|
|
|
int charactersRemaining = (maxMessageSize * messagesSpent) - charactersSpent;
|
|
|
|
|
int[] length = SmsMessage.calculateLength(messageBody, false);
|
|
|
|
|
int messagesSpent = length[0];
|
|
|
|
|
int charactersSpent = length[1];
|
|
|
|
|
int charactersRemaining = length[2];
|
|
|
|
|
int maxMessageSize = (charactersSpent + charactersRemaining) / messagesSpent;
|
|
|
|
|
|
|
|
|
|
return new CharacterState(messagesSpent, charactersRemaining, maxMessageSize);
|
|
|
|
|
}
|
|
|
|
|