短信猫二次开发(java版)
短信猫
- 短信猫用于批量收/发短信或其它SIM卡服务。
- 短信猫与PC通过GSM无线网络交互。
- 交互过程可以分为三个层次:
1.物理层,即无线网络通信。
2.指令层,短信猫支持M35AT指令。
3.应用层,APP需要与短信猫交互的内容。
在做二次开发过程中,真正需要关心的只是应用层的内容。为了避免重复开始,关于物理层和指令层,可以直接使用现有的开源项目。而二次开发的代码只需要调用指令层的API即可。
环境
- windows10 64bit
- jdk1.8
准备
物理层开源项目Rxtx
-
官网让我们去这里下载64位的:http://fizzed.com/oss/rxtx-for-java
-
在这里选择相应的版本下载即可
-
将下载下来的rxtxSerial.dll复制到JAVA_HOME\bin目录下
-
将下载下来的RXTXcomm.jar导入项目
指令层开源项目Smslib
-
将下载下来的smslib-3.5.0.jar导入项目即可
-
同时由于项目依赖了log4j,需要下载或加入依赖,以下提供gradle的依赖(自己去网上找jar包然后导入项目也是可以的)
compile('log4j:log4j:1.2.17')
- 以下是从网络找的一段测试代码,亲测通过,实际肯定还要进行封装下
public class T {
public static boolean sendSMS(String phone, String content) throws Exception {
//获取短信配置的信息
// ---------------创建串口设备,如果有多个,就创建多个--------------
// 1、连接网关的id(随意指定,不冲突即可)
// 2、com口名称,如COM1或/dev/ttyS1(根据实际情况修改)
// 3、串口波特率,如9600(根据实际情况修改,一般为115200)
// 4、开发商,一般为huawei和wavecom,可通过工具检测出来
// 5、型号,可选,不清楚直接为空就好了
SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM1", 115200, "wavecom", "");
gateway.setInbound(true); // 设置true,表示该网关可以接收短信
gateway.setOutbound(true); // 设置true,表示该网关可以发送短信
// -----------------创建发送短信的服务(它是单例的)----------------
Service service = Service.getInstance();
Service.getInstance().S.SERIAL_POLLING = true;
try {
// ---------------------- 将设备加到服务中----------------------
service.addGateway(gateway);
// ------------------------- 启动服务 -------------------------
service.startService();
// ------------------------- 发送短信 -------------------------
OutboundMessage msg = new OutboundMessage(phone, content);
msg.setEncoding(Message.MessageEncodings.ENCUCS2);
service.sendMessage(msg);
// ------------------------- 关闭服务 -------------------------
service.stopService();
service.removeGateway(gateway);
} catch (Exception e) {
e.printStackTrace();
service.stopService();
service.removeGateway(gateway);
return false;
}
return true;
}
public static void main(String[] args) {
try {
sendSMS("15622770000", "dgshdgl第几个\nddd");
} catch (Exception e) {
e.printStackTrace();
}
}
}