package org.iilab.pb.alert; import android.content.Context; import android.location.Location; import org.iilab.pb.R; import org.iilab.pb.common.ApplicationSettings; import org.iilab.pb.location.LocationFormatter; import org.iilab.pb.model.SMSSettings; import java.util.List; import static android.telephony.SmsMessage.MAX_USER_DATA_SEPTETS; public class PanicMessage { // public static final int TWITTER_MAX_LENGTH = 140; private Context context; private Location location; public PanicMessage(Context context) { this.context = context; } public void sendAlertMessage(Location location) { this.location = location; SMSSettings smsSettings = SMSSettings.retrieve(context); String message = getSMSText(smsSettings.trimmedMessage()); List<String> phoneNumbers = getPhoneNumbers(); sendMessage(message, phoneNumbers); } public void sendStopAlertMessage() { String message = context.getResources().getString(R.string.stop_alert_message); sendMessage(message, getPhoneNumbers()); } private List<String> getPhoneNumbers(){ SMSSettings smsSettings = SMSSettings.retrieve(context); return smsSettings.validPhoneNumbers(); } private void sendMessage(String message, List<String> phoneNumbers){ SMSAdapter smsAdapter = getSMSAdapter(); for (String phoneNumber : phoneNumbers) { smsAdapter.sendSMS(context, phoneNumber, message); } } private String getSMSText(String message) { return trimMessage(message, MAX_USER_DATA_SEPTETS); } // private String getTwitterText(String message) { // return trimMessage(message, TWITTER_MAX_LENGTH); // } private String trimMessage(String message, int maxLength) { String locationString = new LocationFormatter(location).format(context); boolean isFirstMsgSent = ApplicationSettings.isFirstMsgSent(context); String smsText = ""; smsText = message; if(locationString.equals("")){ locationString = context.getResources().getString(R.string.location_not_found); } smsText = smsText + " - " + locationString; if(smsText.length() > maxLength) { smsText = message.substring(0, (maxLength - locationString.length()) ) + locationString; } return smsText; } SMSAdapter getSMSAdapter() { return new SMSAdapter(); } }