/*
* Copyright (C) 2008 Esmertec AG. Copyright (C) 2008 The Android Open Source
* Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.awesomeapp.messenger.model;
/** An abstract interface to access system SMS service. */
public interface SmsService {
/** The listener which will be notified when an incoming SMS is received. */
public interface SmsListener {
/**
* Called on new SMS received.
*
* @param data
*/
public void onIncomingSms(byte[] data);
}
/** Callback on send SMS failure. */
public interface SmsSendFailureCallback {
/** Generic failure case. */
int ERROR_GENERIC_FAILURE = 1;
/** Failed because radio was explicitly turned off. */
int ERROR_RADIO_OFF = 2;
/**
* Called when send an SMS failed.
*
* @param errorCode the error code; will be one of
* {@link #ERROR_GENERIC_FAILURE}, {@link #ERROR_RADIO_OFF}
*/
public void onFailure(int errorCode);
}
/**
* The max number of bytes an SMS can take.
*
* @return the max number of bytes an SMS can take.
*/
public int getMaxSmsLength();
/**
* Sends a data SMS to the destination.
*
* @param dest The address to send the message to.
* @param port The port to deliver the message to.
* @param data The body of the message to send.
*/
public void sendSms(String dest, int port, byte[] data);
/**
* Sends a data SMS to the destination.
*
* @param dest The address to send the message to.
* @param port The port to deliver the message to.
* @param data The body of the message to send.
* @param callback If not null, it will be notified if the message could not
* be sent.
*/
public void sendSms(String dest, int port, byte[] data, SmsSendFailureCallback callback);
/**
* Add a SmsListener so that it can be notified when new SMS from specific
* address and application port has been received.
*
* @param from The address of the sender.
* @param port The application port.
* @param listener The listener which will be notified when SMS received.
*/
public void addSmsListener(String from, int port, SmsListener listener);
/**
* Remove a SmsListener from the service so that it won't be notified
* anymore.
*
* @param listener The listener to be removed.
*/
public void removeSmsListener(SmsListener listener);
}