java smslib rxtx_短信猫java二次开发包源代码smslib-3.5.4.jar

// ReadMessages.java - Sample application.

// 短信读取程序

// This application shows you the basic procedure needed for reading

// SMS messages from your GSM modem, in synchronous mode.

//

// Operation description:

// The application setup the necessary objects and connects to the phone.

// As a first step, it reads all messages found in the phone.

// Then, it goes to sleep, allowing the asynchronous callback handlers to

// be called. Furthermore, for callback demonstration purposes, it responds

// to each received message with a "Got It!" reply.

//

// Tasks:

// 1) Setup Service object.

// 2) Setup one or more Gateway objects.

// 3) Attach Gateway objects to Service object.

// 4) Setup callback notifications.

// 5) Run

package examples.modem;

import java.util.ArrayList;

import java.util.List;

import javax.crypto.spec.SecretKeySpec;

import org.smslib.AGateway;

import org.smslib.AGateway.GatewayStatuses;

import org.smslib.AGateway.Protocols;

import org.smslib.ICallNotification;

import org.smslib.IGatewayStatusNotification;

import org.smslib.IInboundMessageNotification;

import org.smslib.IOrphanedMessageNotification;

import org.smslib.InboundMessage;

import org.smslib.InboundMessage.MessageClasses;

import org.smslib.Library;

import org.smslib.Message.MessageTypes;

import org.smslib.Service;

import org.smslib.crypto.AESKey;

import org.smslib.modem.SerialModemGateway;

public class ReadMessages

{

public void doIt() throws Exception

{

// Define a list which will hold the read messages.

List msgList;

// Create the notification callback method for inbound & status report

// messages.

InboundNotification inboundNotification = new InboundNotification();

// Create the notification callback method for inbound voice calls.

CallNotification callNotification = new CallNotification();

//Create the notification callback method for gateway statuses.

GatewayStatusNotification statusNotification = new GatewayStatusNotification();

OrphanedMessageNotification orphanedMessageNotification = new OrphanedMessageNotification();

try

{

System.out.println("Example: Read messages from a serial gsm modem.");

System.out.println(Library.getLibraryDescription());

System.out.println("Version: " + Library.getLibraryVersion());

// Create the Gateway representing the serial GSM modem.

SerialModemGateway gateway = new SerialModemGateway("modem.com4", "COM4", 115200, "Huawei", "E160");

// Set the modem protocol to PDU (alternative is TEXT). PDU is the default, anyway...

gateway.setProtocol(Protocols.PDU);

// Do we want the Gateway to be used for Inbound messages?

gateway.setInbound(true);

// Do we want the Gateway to be used for Outbound messages?

gateway.setOutbound(true);

// Let SMSLib know which is the SIM PIN.

gateway.setSimPin("0000");

// Set up the notification methods.

Service.getInstance().setInboundMessageNotification(inboundNotification);

Service.getInstance().setCallNotification(callNotification);

Service.getInstance().setGatewayStatusNotification(statusNotification);

Service.getInstance().setOrphanedMessageNotification(orphanedMessageNotification);

// Add the Gateway to the Service object.

Service.getInstance().addGateway(gateway);

// Similarly, you may define as many Gateway objects, representing

// various GSM modems, add them in the Service object and control all of them.

// Start! (i.e. connect to all defined Gateways)

Service.getInstance().startService();

// Printout some general information about the modem.

System.out.println();

System.out.println("Modem Information:");

System.out.println("  Manufacturer: " + gateway.getManufacturer());

System.out.println("  Model: " + gateway.getModel());

System.out.println("  Serial No: " + gateway.getSerialNo());

System.out.println("  SIM IMSI: " + gateway.getImsi());

System.out.println("  Signal Level: " + gateway.getSignalLevel() + " dBm");

System.out.println("  Battery Level: " + gateway.getBatteryLevel() + "%");

System.out.println();

// In case you work with encrypted messages, its a good time to declare your keys.

// Create a new AES Key with a known key value.

// Register it in KeyManager in order to keep it active. SMSLib will then automatically

// encrypt / decrypt all messages send to / received from this number.

Service.getInstance().getKeyManager().registerKey("+306948494037",

new AESKey(new SecretKeySpec("0011223344556677".getBytes(), "AES")));

// Read Messages. The reading is done via the Service object and

// affects all Gateway objects defined. This can also be more directed to a specific

// Gateway - look the JavaDocs for information on the Service method calls.

msgList = new ArrayList();

Service.getInstance().readMessages(msgList, MessageClasses.ALL);

for (InboundMessage msg : msgList)

System.out.println(msg);

// Sleep now. Emulate real world situation and give a chance to the notifications

// methods to be called in the event of message or voice call reception.

System.out.println("Now Sleeping - Hit to stop service.");

System.in.read();

System.in.read();

}

catch (Exception e)

{

e.printStackTrace();

}

finally

{

Service.getInstance().stopService();

}

}

public class InboundNotification implements IInboundMessageNotification

{

public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg)

{

if (msgType == MessageTypes.INBOUND) System.out.println(">>> New Inbound message detected from Gateway: "

+ gateway.getGatewayId());

else if (msgType == MessageTypes.STATUSREPORT) System.out.println(">>> New Inbound Status " +

"Report message detected from Gateway: " + gateway.getGatewayId());

System.out.println(msg);

}

}

public class CallNotification implements ICallNotification

{

public void process(AGateway gateway, String callerId)

{

System.out.println(">>> New call detected from Gateway: " + gateway.getGatewayId() + " : " + callerId);

}

}

public class GatewayStatusNotification implements IGatewayStatusNotification

{

public void process(AGateway gateway, GatewayStatuses oldStatus, GatewayStatuses newStatus)

{

System.out.println(">>> Gateway Status change for " + gateway.getGatewayId() + ", OLD: " + oldStatus + " -> NEW: " + newStatus);

}

}

public class OrphanedMessageNotification implements IOrphanedMessageNotification

{

public boolean process(AGateway gateway, InboundMessage msg)

{

System.out.println(">>> Orphaned message part detected from " + gateway.getGatewayId());

System.out.println(msg);

// Since we are just testing, return FALSE and keep the orphaned message part.

return false;

}

}

public static void main(String args[])

{

ReadMessages app = new ReadMessages();

try

{

app.doIt();

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MyEclipse里 1. slf4j-api-1.5.2.jar slf4j-api-1.5.2-sources.jar slf4j-nop-1.5.2.jar comm.jar smsserver-3.4.1.jar smslib-3.4.1.jar 将上述6个jar拷贝到lib下 2. 在Windows环境下使用SMSLib编程的时候,我们需要做一下comm的配置: 1. 将win32com.dll放置在%JAVA_HOME%/jre/bin下 2. 将comm.jar放置在%JAVA_HOME%/jre/lib/ext下 3. 将javax.comm.properties放置在%JAVA_HOME%/jar/lib下 再试试SMSLib自带的examples,看看效果。 3. pci接口安装drive 程序测试用例: package examples.modem; import org.smslib.IOutboundMessageNotification; import org.smslib.Library; import org.smslib.OutboundMessage; import org.smslib.Service; import org.smslib.modem.SerialModemGateway; public class SendMessage { public void doIt() throws Exception { Service srv; OutboundMessage msg; OutboundNotification outboundNotification = new OutboundNotification(); System.out.println("Example: Send message from a serial gsm modem."); System.out.println(Library.getLibraryDescription()); System.out.println("Version: " + Library.getLibraryVersion()); srv = new Service(); SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM1", 57600, "Nokia", "6310i"); gateway.setInbound(true); gateway.setOutbound(true); gateway.setSimPin("0000"); srv.setOutboundNotification(outboundNotification); srv.addGateway(gateway); srv.startService(); System.out.println(); System.out.println("Modem Information:"); System.out.println(" Manufacturer: " + gateway.getManufacturer()); System.out.println(" Model: " + gateway.getModel()); System.out.println(" Serial No: " + gateway.getSerialNo()); System.out.println(" SIM IMSI: " + gateway.getImsi()); System.out.println(" Signal Level: " + gateway.getSignalLevel() + "%"); System.out.println(" Battery Level: " + gateway.getBatteryLevel() + "%"); System.out.println(); // Send a message synchronously. msg = new OutboundMessage("+306948494037", "Hello from SMSLib!"); srv.sendMessage(msg); System.out.println(msg); // Or, send out a WAP SI message. //OutboundWapSIMessage wapMsg = new OutboundWapSIMessage("+306948494037", new URL("https://mail.google.com/"), "Visit GMail now!"); //srv.sendMessage(wapMsg); //System.out.println(wapMsg); // You can also queue some asynchronous messages to see how the callbacks // are called... //msg = new OutboundMessage("+309999999999", "Wrong number!"); //msg.setPriority(OutboundMessage.Priorities.LOW); //srv.queueMessage(msg, gateway.getGatewayId()); //msg = new OutboundMessage("+308888888888", "Wrong number!"); //msg.setPriority(OutboundMessage.Priorities.HIGH); //srv.queueMessage(msg, gateway.getGatewayId()); System.out.println("Now Sleeping - Hit to terminate."); System.in.read(); srv.stopService(); } public class OutboundNotification implements IOutboundMessageNotification { public void process(String gatewayId, OutboundMessage msg) { System.out.println("Outbound handler called from Gateway: " + gatewayId); System.out.println(msg); } } public static void main(String args[]) { SendMessage app = new SendMessage(); try { app.doIt(); } catch (Exception e) { e.printStackTrace(); } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值