复制代码代码如下:
impor java.util.ArrayList;
impor java.util.List;
import org.apache.log4j.Logger;
impor org.smslib.ICallNotification;
import org.smslib.IInboundMessageNotification;
import org.smslib.IOutboundMessageNotification;
import org.smslib.InboundMessage;
import org.smslib.InboundMessage.MessageClasses;
import org.smslib.Perpustakaan;
import org.smslib.Message.MessageEncodings;
import org.smslib.Message.MessageTypes;
import org.smslib.OutboundMessage;
import org.smslib.Layanan;
import org.smslib.modem.SerialModemGateway;
/**
* @penulis terry
*
*/
SmsModem kelas publik {
// 短信网关
gerbang SerialModemGateway pribadi = null;
java.util.ResourceBundle rb = null;//ResourceBundle.getBundle("SMS");
smsModem statis smsModem = null;
OutboundNotification outboundNotification = baru OutboundNotification();
LOG Logger final statis pribadi = Logger.getLogger(SmsModem.class);
Layanan layanan;
InboundNotification inboundNotification = new InboundNotification();
// Membuat metode panggilan balik notifikasi untuk panggilan suara masuk.
CallNotification callNotification = CallNotification baru();
SmsModem publik() {
mencoba {
//ReadMessages rm = ReadMessages baru();
//rm.melakukannya();
rb = ResourceBundle.getBundle("sms");
String portNama= "COM10";
int pelabuhan = 9600;
LOG.info("Nama port default:" + Nama port);
LOG.info("pelabuhan bawaan:"+pelabuhan);
jika(rb != nol)
{
LOG.info("RB bukan nol");
if(rb.getString("smsport") != null && !"".sama dengan(rb.getString("smsport")))
{
portName = rb.getString("smsport");
LOG.info("NamaPort:"+NamaPort);
}
if(rb.getString("smsbolv") != null && !"".sama dengan(rb.getString("smsbolv")))
{
port = Integer.valueOf(rb.getString("smsbolv"));
LOG.info("pelabuhan:"+pelabuhan);
}
}
// 初始化短信网关
gateway = new SerialModemGateway("modem." + Nama port, Nama port, port,
"wavecom", "17254");
} tangkapan (Pengecualian e) {
LOG.error("网关初始化失败:" + e.getMessage());
e.printStackTrace();
}
}
SmsModem statis publik getInstant() {
jika (smsModem == null) {
smsModem = SmsModem baru();
}
kembalikan smsModem;
}
publik SerialModemGateway getGateway() {
gerbang kembali;
}
public void sendMessage(String telepon, konten String) memunculkan Pengecualian {
lakukan(telepon, konten);
}
/**
* 发送短信
* @param telepon
* @param konten
* @melempar Pengecualian
*/
public void doIt(String telepon, konten String) memunculkan Pengecualian {
Pesan Pesan Keluar;
LOG.info("Contoh Terkirim: Mengirim pesan dari modem serial gsm.");
LOG.info(Library.getLibraryDescription());
LOG.info("Versi Terkirim: " + Library.getLibraryVersion());
jika (srv == nol) {
srv = Layanan baru();
srv.S.SERIAL_POLLING = benar;
gateway.setInbound(benar);
gateway.setOutbound(benar);
gateway.setSimPin("0000");
gateway.setOutboundNotification(outboundNotification);
gateway.setInboundNotification(inboundNotification);
gateway.setCallNotification(callNotification);
srv.addGateway(gerbang);
srv.startService();
}
jika (gerbang != nol) {
LOG.info("Informasi Modem Terkirim:");
LOG.info("Produsen Terkirim: " + gateway.getManufacturer());
LOG.info("Model Terkirim: " + gateway.getModel());
LOG.info("Nomor Seri Terkirim: " + gateway.getSerialNo());
LOG.info("SIM IMSI Terkirim: " + gateway.getImsi());
LOG.info("Tingkat Sinyal Terkirim: " + gateway.getSignalLevel() + "%");
LOG.info("Level Baterai Terkirim: " + gateway.getBatteryLevel() + "%");
}
// Mengirim pesan secara serempak.
pesan = Pesan Keluar baru (telepon, konten);
msg.setEncoding(MessageEncodings.ENCUCS2);// 这句话是发中文短信必须的
srv.sendMessage(pesan);
}
/**
* 发送消息类
* @penulis terry
*
*/
kelas publik OutboundNotification mengimplementasikan IOutboundMessageNotification {
proses kekosongan publik (String gatewayId, Pesan Keluar) {
LOG.info("Pengendali Keluar Terkirim dipanggil dari Gateway: " + gatewayId);
LOG.info(pesan);
}
}
//接收消息类
String publik bacaPesan()
{
StringBuffer sb = StringBuffer baru("");
Daftar<Pesan Masuk> msgList;
// Buat metode panggilan balik notifikasi untuk Laporan Masuk & Status
// pesan.
mencoba
{
System.out.println("Baca Contoh: Membaca pesan dari modem serial gsm.");
Sistem.keluar.println(Library.getLibraryDescription());
System.out.println("Baca Versi: " + Library.getLibraryVersion());
// Buat objek Layanan baru - induk dari semua dan antarmuka utama
// untukmu.
jika (srv == nol) {
srv = Layanan baru();
srv.S.SERIAL_POLLING = benar;
gateway.setInbound(benar);
gateway.setOutbound(benar);
gateway.setSimPin("0000");
gateway.setOutboundNotification(outboundNotification);
gateway.setInboundNotification(inboundNotification);
gateway.setCallNotification(callNotification);
srv.addGateway(gerbang);
srv.startService();
}
// Demikian pula, Anda dapat mendefinisikan sebanyak mungkin objek Gateway, yang mewakili
// berbagai modem GSM, tambahkan di objek Layanan dan kendalikan semuanya.
//
// Awal! (yaitu terhubung ke semua Gateway yang ditentukan)
LOG.info("Baca Informasi Modem:");
LOG.info("Baca Produsen: " + gateway.getManufacturer());
LOG.info("Baca Model: " + gateway.getModel());
LOG.info("Baca Nomor Seri: " + gateway.getSerialNo());
LOG.info("Baca SIM IMSI: " + gateway.getImsi());
LOG.info("Baca Tingkat Sinyal: " + gateway.getSignalLevel() + "%");
LOG.info("Baca Level Baterai: " + gateway.getBatteryLevel() + "%");
// Baca Pesan. Pembacaan dilakukan melalui objek Layanan dan
// mempengaruhi semua objek Gateway yang ditentukan. Ini juga bisa lebih diarahkan pada hal tertentu
// Gateway - lihat JavaDocs untuk informasi tentang panggilan metode Layanan.
msgList = Daftar Array baru<Pesan Masuk>();
this.srv.readMessages(msgList, MessageClasses.ALL);
int angka = 1;
untuk (Pesan Pesan Masuk : Daftar Pesan)
{
sb.append("第" + num + "条;发件人:"+msg.getOriginator() + ";内容:" + msg.getText() + "/n");
//sb.append(msg.toString() + "/n");
LOG.info("第" + angka + "条;发件人:"+msg.getOriginator() + ";内容:" + msg.getText() + "/n");
nomor++;
LOG.info(pesan);
}
// Tidurlah sekarang. Tiru situasi dunia nyata dan berikan kesempatan pada notifikasi
// metode yang akan dipanggil jika ada penerimaan pesan atau panggilan suara.
//System.out.println("Sekarang Sedang Tidur - Tekan <enter> untuk mengakhiri.");
//Sistem.dalam.baca();
}
tangkapan (Pengecualian e)
{
sb.append(e.getMessage());
e.printStackTrace();
}
Akhirnya
{
//ini.srv.stopService();
}
kembali sb.toString();
}
kelas publik InboundNotification mengimplementasikan IInboundMessageNotification
{
proses kekosongan publik (String gatewayId, MessageTypes msgType, InboundMessage msg)
{
if (msgType == MessageTypes.INBOUND) System.out.println(">>> Pesan masuk baru terdeteksi dari Gateway: " + gatewayId);
else if (msgType == MessageTypes.STATUSREPORT) System.out.println(">>> Pesan Laporan Status Masuk Baru terdeteksi dari Gateway: " + gatewayId);
System.out.println(pesan);
mencoba
{
// Batalkan komentar pada baris berikut jika Anda ingin menghapus pesan pada saat kedatangan.
// srv.deleteMessage(pesan);
}
tangkapan (Pengecualian e)
{
System.out.println("Ups!!! Ada yang tidak beres...");
e.printStackTrace();
}
}
}
CallNotification kelas publik mengimplementasikan ICallNotification
{
proses kekosongan publik (String gatewayId, String callerId)
{
System.out.println(">>> Panggilan baru terdeteksi dari Gateway: " + gatewayId + " : " + callerId);
}
}
}