67,513
社区成员
发帖
与我相关
我的任务
分享
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import org.smslib.Message.MessageEncodings;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway;
/**
* 描述:SMS Cat服务类
*/
public class SMSServiceByOwn {
/**
* 私有静态实例
*/
private static SMSServiceByOwn instance = null;
/**
* 是否开启服务
*/
private boolean isStartService = false;
/**
* 私有构造方法
*/
private SMSServiceByOwn() {
}
/**
* 获取实例(单例模式)
*
* @return
*/
public static SMSServiceByOwn getInstance() {
if (instance == null) {
instance = new SMSServiceByOwn();
}
return instance;
}
/**
* 开启短信服务
*
* @param path
* 配置文件路径
*/
public void startService() {
SerialModemGateway [] gateways = null;
System.out.println("开始初始化SMS服务!");
// 加载文件属性
// 初始化网关,参数信息依次为:COMID,COM号,比特率,制造商,Modem模式
gateways = new SerialModemGateway [1];
gateways[0] = new SerialModemGateway("modem.com57", "COM57", 115200, "wavecom", "11258");
gateways[0].setOutbound(true);
gateways[0].setInbound(false);
gateways[0].setSimPin("0000");
OutboundNotification outboundNotification = new OutboundNotification();
Service service = Service.getInstance();
if (service == null) {
System.out.println("初始化SMS服务失败!");
return;
}
service.setOutboundMessageNotification(outboundNotification);
try {
service.addGateway(gateways[0]);
// 开启服务
service.startService();
System.out.println("初始化SMS服务成功!");
isStartService = true;
} catch (Exception e) {
System.out.println("开启SMS服务异常:" + e.getMessage());
}
}
/**
* 停止SMS服务
*/
public void stopService() {
try {
Service.getInstance().stopService();
System.out.println("SMS服务关闭!");
} catch (Exception e) {
System.out.println("关闭SMS服务异常:" + e.getMessage());
}
isStartService = false;
}
/**
* 发送短信
*
* @param toNumber
* 手机号码
* @param message
* 短信内容
*/
public String sendMessage(String toNumber, String message) {
if (!isStartService) {
System.out.println("尚未开启SMS服务!");
return "fail";
}
// 封装信息
OutboundMessage msg = new OutboundMessage(toNumber, message);
msg.setEncoding(MessageEncodings.ENCUCS2);
try {
// 发送信息
Service.getInstance().sendMessage(msg);
} catch (Exception e) {
System.out.println("SMS服务发送信息发生异常:" + e.getMessage());
isStartService = false;
}
return "success" ;
}
public String sendMessage(List<String> Numbers, String message) {
if (!isStartService) {
System.out.println("尚未开启SMS服务!");
return "fail";
}
if (Numbers==null) {
System.out.println("目标手机号码为空!");
return "fail";
}
List<String> activityList = new ArrayList<String>();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String tempStrSta = df.format(new Date());// new Date()为获取当前系统时间
System.out.println("短信发送开始时间"+tempStrSta);
for(int i=0;i<Numbers.size();i++){
activityList.add(Numbers.get(i));
OutboundMessage msg = new OutboundMessage(Numbers.get(i), message);
msg.setEncoding(MessageEncodings.ENCUCS2);
try {
// 发送信息
Service.getInstance().sendMessage(msg);
} catch (Exception e) {
System.out.println("SMS服务发送信息发生异常:" + e.getMessage());
isStartService = false;
return "fail";
}
activityList.clear();
System.out.println("发送短信"+Numbers.get(i)+""+message+"");
}
String tempStrEnd = df.format(new Date());// new Date()为获取当前系统时间
System.out.println("短信发送结束时间"+tempStrEnd+"发送"+Numbers.size()+"条");
return "success" ;
// 封装信息
}
public static void main(String[] args) {
SMSServiceByOwn.getInstance().startService();
List<String> phoneList = new ArrayList<String> ();
phoneList.add("15561351200");
for(int i = 0;i<1;i++)
SMSServiceByOwn.getInstance().sendMessage(phoneList, "SMS Boom Message!!!");
//没必要的时候没停止服务,因为端口占用着
SMSServiceByOwn.getInstance().stopService();
}
}