复制代码代码如下 :
importer java.util.ArrayList ;
importer java.util.List ;
importer org.apache.log4j.Logger ;
importer org.smslib.ICallNotification ;
importer org.smslib.IInboundMessageNotification ;
importer org.smslib.IOutboundMessageNotification ;
importer org.smslib.InboundMessage ;
importer org.smslib.InboundMessage.MessageClasses ;
importer org.smslib.Library ;
importer org.smslib.Message.MessageEncodings ;
importer org.smslib.Message.MessageTypes ;
importer org.smslib.OutboundMessage ;
importer org.smslib.Service ;
importer org.smslib.modem.SerialModemGateway ;
/**
* @auteur Terry
*
*/
classe publique SmsModem {
// 短信网关
passerelle privée SerialModemGateway = null ;
java.util.ResourceBundle rb = null;//ResourceBundle.getBundle("SMS");
SmsModem statique smsModem = null ;
OutboundNotification outboundNotification = new OutboundNotification();
Logger final statique privé LOG = Logger.getLogger (SmsModem.class);
Serveur de service ;
InboundNotification inboundNotification = new InboundNotification();
// Créez la méthode de rappel de notification pour les appels vocaux entrants.
CallNotification callNotification = new CallNotification();
public SmsModem() {
essayer {
//ReadMessagesrm = new ReadMessages();
//rm.doIt();
rb = ResourceBundle.getBundle("sms");
Chaîne portName= "COM10" ;
port int = 9600 ;
LOG.info("Nom du port par défaut :" + Nom du port);
LOG.info("port par défaut :" + port);
si(rb != nul)
{
LOG.info("RB n'est pas nul");
if(rb.getString("smsport") != null && !"".equals(rb.getString("smsport")))
{
portName = rb.getString("smsport");
LOG.info("NomPort:" + NomPort);
}
if(rb.getString("smsbolv") != null && !"".equals(rb.getString("smsbolv")))
{
port = Integer.valueOf(rb.getString("smsbolv"));
LOG.info("port :" + port);
}
}
// 初始化短信网关
gateway = new SerialModemGateway("modem." + nom du port, nom du port, port,
"wavecom", "17254");
} attraper (Exception e) {
LOG.error("关初始化失败:" + e.getMessage());
e.printStackTrace();
}
}
public statique SmsModem getInstant() {
si (smsModem == null) {
smsModem = nouveau SmsModem();
}
renvoyer smsModem ;
}
public SerialModemGateway getGateway() {
passerelle de retour ;
}
public void sendMessage (String phone, String content) lève une exception {
doIt (téléphone, contenu);
}
/**
* 发送短信
* @param téléphone
* Contenu @param
* @jette une exception
*/
public void doIt (String phone, String content) lève une exception {
Message de message sortant ;
LOG.info("Exemple envoyé : envoyer un message depuis un modem GSM série.");
LOG.info(Bibliothèque.getLibraryDescription());
LOG.info("Version envoyée : " + Library.getLibraryVersion());
si (srv == nul) {
srv = nouveau service ();
srv.S.SERIAL_POLLING = vrai ;
passerelle.setInbound(true);
passerelle.setOutbound(true);
passerelle.setSimPin("0000");
gateway.setOutboundNotification(outboundNotification);
gateway.setInboundNotification(inboundNotification);
passerelle.setCallNotification(callNotification);
srv.addGateway(passerelle);
srv.startService();
}
if (passerelle != null) {
LOG.info("Informations envoyées sur le modem :");
LOG.info("Envoyé par le fabricant : " + gateway.getManufacturer());
LOG.info("Modèle envoyé : " + gateway.getModel());
LOG.info("Numéro de série envoyé : " + gateway.getSerialNo());
LOG.info("IMSI SIM envoyé : " + gateway.getImsi());
LOG.info("Niveau du signal envoyé : " + gateway.getSignalLevel() + "%");
LOG.info("Niveau de batterie envoyé : " + gateway.getBatteryLevel() + "%");
}
// Envoie un message de manière synchrone.
msg = new OutboundMessage (téléphone, contenu) ;
msg.setEncoding(MessageEncodings.ENCUCS2);//
srv.sendMessage(msg);
}
/**
* 发送消息类
* @auteur Terry
*
*/
la classe publique OutboundNotification implémente IOutboundMessageNotification {
processus public void (String gatewayId, OutboundMessage msg) {
LOG.info("Gestionnaire sortant envoyé appelé depuis la passerelle : " + gatewayId);
LOG.info(msg);
}
}
//接收消息类
chaîne publique readMessage()
{
StringBuffer sb = new StringBuffer("");
List<InboundMessage> msgList ;
// Créez la méthode de rappel de notification pour le rapport entrant et d'état
//messages.
essayer
{
System.out.println("Exemple de lecture : Lire les messages d'un modem GSM série.");
System.out.println(Library.getLibraryDescription());
System.out.println("Version lue : " + Library.getLibraryVersion());
// Crée un nouvel objet Service - le parent de tous et l'interface principale
// pour vous.
si (srv == nul) {
srv = nouveau service ();
srv.S.SERIAL_POLLING = vrai ;
passerelle.setInbound(true);
passerelle.setOutbound(true);
passerelle.setSimPin("0000");
gateway.setOutboundNotification(outboundNotification);
gateway.setInboundNotification(inboundNotification);
passerelle.setCallNotification(callNotification);
srv.addGateway(passerelle);
srv.startService();
}
// De même, vous pouvez définir autant d'objets Gateway, représentant
// divers modems GSM, ajoutez-les dans l'objet Service et contrôlez-les tous.
//
// Commencer! (c'est-à-dire se connecter à toutes les passerelles définies)
LOG.info("Lire les informations sur le modem :");
LOG.info("Lire Fabricant : " + gateway.getManufacturer());
LOG.info("Lire le modèle : " + gateway.getModel());
LOG.info("Lire le numéro de série : " + gateway.getSerialNo());
LOG.info("Lire SIM IMSI : " + gateway.getImsi());
LOG.info("Lire le niveau du signal : " + gateway.getSignalLevel() + "%");
LOG.info("Lire le niveau de batterie : " + gateway.getBatteryLevel() + "%");
// Lire les messages. La lecture se fait via l'objet Service et
// affecte tous les objets Gateway définis. Cela peut également être davantage dirigé vers un domaine spécifique.
// Gateway - recherchez dans les JavaDocs des informations sur les appels de méthode Service.
msgList = new ArrayList<InboundMessage>();
this.srv.readMessages(msgList, MessageClasses.ALL);
numéro int = 1 ;
pour (InboundMessage msg : msgList)
{
sb.append("第" + num + "条;发件人:"+msg.getOriginator() + ";内容:" + msg.getText() + "/n");
//sb.append(msg.toString() + "/n");
LOG.info("第" + num + "条;发件人:"+msg.getOriginator() + ";内容:" + msg.getText() + "/n");
num++;
LOG.info(msg);
}
// Dors maintenant. Émulez la situation du monde réel et donnez une chance aux notifications
// méthodes à appeler en cas de réception de message ou d'appel vocal.
//System.out.println("Now Sleeping - Appuyez sur <enter> pour terminer.");
//System.in.read();
}
attraper (exception e)
{
sb.append(e.getMessage());
e.printStackTrace();
}
enfin
{
//this.srv.stopService();
}
return sb.toString();
}
classe publique InboundNotification implémente IInboundMessageNotification
{
processus public void (String gatewayId, MessageTypes msgType, InboundMessage msg)
{
if (msgType == MessageTypes.INBOUND) System.out.println(">>> Nouveau message entrant détecté depuis la passerelle : " + gatewayId);
else if (msgType == MessageTypes.STATUSREPORT) System.out.println(">>> Nouveau message de rapport d'état entrant détecté depuis la passerelle : " + gatewayId);
System.out.println(msg);
essayer
{
// Décommentez la ligne suivante si vous souhaitez supprimer le message à son arrivée.
// srv.deleteMessage(msg);
}
attraper (exception e)
{
System.out.println("Oups !!! Quelque chose a mal tourné...");
e.printStackTrace();
}
}
}
classe publique CallNotification implémente ICallNotification
{
processus public void (String gatewayId, String callerId)
{
System.out.println(">>> Nouvel appel détecté depuis Gateway : " + gatewayId + " : " + callerId);
}
}
}