复制番号代番号次のように:
java.util.ArrayListをインポートします。
java.util.Listをインポートします。
org.apache.log4j.Logger をインポートします。
org.smslib.ICallNotification をインポートします。
org.smslib.IInboundMessageNotification をインポートします。
org.smslib.IOutboundMessageNotification をインポートします。
org.smslib.InboundMessage をインポートします。
org.smslib.InboundMessage.MessageClasses をインポートします。
org.smslib.Library をインポートします。
org.smslib.Message.MessageEncodings をインポートします。
org.smslib.Message.MessageTypes をインポートします。
org.smslib.OutboundMessage をインポートします。
org.smslib.Service をインポートします。
org.smslib.modem.SerialModemGateway をインポートします。
/**
* @著者テリー
*
*/
パブリック クラス SmsModem {
// 短信网关
プライベート SerialModemGateway ゲートウェイ = null;
java.util.ResourceBundle rb = null;//ResourceBundle.getBundle("SMS");
静的 SmsModem smsModem = null;
OutboundNotification outboundNotification = new OutboundNotification();
プライベート静的最終ロガーLOG = Logger.getLogger(SmsModem.class);
サービスサービス;
InboundNotificationboundNotification = new InboundNotification();
// 着信音声通話用の通知コールバック メソッドを作成します。
CallNotification callNotification = new CallNotification();
public SmsModem() {
試す {
//ReadMessages rm = new ReadMessages();
//rm.doIt();
rb = ResourceBundle.getBundle("sms");
文字列ポート名 = "COM10";
int ポート = 9600;
LOG.info("デフォルトのポート名:" + ポート名);
LOG.info("デフォルトのポート:" + ポート);
if(rb != null)
{
LOG.info("RB は null ではありません");
if(rb.getString("smsport") != null && !"".equals(rb.getString("smsport")))
{
portName = rb.getString("smsport");
LOG.info("ポート名:" + ポート名);
}
if(rb.getString("smsbolv") != null && !"".equals(rb.getString("smsbolv")))
{
port = Integer.valueOf(rb.getString("smsbolv"));
LOG.info("ポート:" + ポート);
}
}
// 初始化短信网关
ゲートウェイ = new SerialModemGateway("モデム." + ポート名, ポート名, ポート,
"ウェーブコム"、"17254");
} catch (例外 e) {
LOG.error("网关初化失败:" + e.getMessage());
e.printStackTrace();
}
}
public static SmsModem getInstant() {
if (smsModem == null) {
smsModem = 新しい SmsModem();
}
SMSモデムを返します。
}
public SerialModemGateway getGateway() {
リターンゲートウェイ。
}
public void sendMessage(String Phone, String content) throws Exception {
doIt(電話, コンテンツ);
}
/**
* 送信短信
*@param電話
* @param コンテンツ
* @throws 例外
*/
public void doIt(String Phone, String content) throws Exception {
OutboundMessage メッセージ;
LOG.info("送信例: シリアル GSM モデムからメッセージを送信します。");
LOG.info(Library.getLibraryDescription());
LOG.info("送信されたバージョン: " + Library.getLibraryVersion());
if (srv == null) {
srv = 新しいサービス();
srv.S.SERIAL_POLLING = true;
ゲートウェイ.setInbound(true);
ゲートウェイ.setOutbound(true);
ゲートウェイ.setSimPin("0000");
ゲートウェイ.setOutboundNotification(outboundNotification);
ゲートウェイ.setInboundNotification(inboundNotification);
ゲートウェイ.setCallNotification(callNotification);
srv.addGateway(ゲートウェイ);
srv.startService();
}
if (ゲートウェイ != null) {
LOG.info("送信されたモデム情報:");
LOG.info("送信されたメーカー: " + Gateway.getManufacturing());
LOG.info("送信されたモデル: " +gateway.getModel());
LOG.info("送信されたシリアル番号: " +gateway.getSerialNo());
LOG.info("送信された SIM IMSI: " +gateway.getImsi());
LOG.info("送信信号レベル: " +gateway.getSignalLevel() + "%");
LOG.info("送信されたバッテリー レベル: " +gateway.getBatteryLevel() + "%");
}
// メッセージを同期的に送信します。
msg = 新しい OutboundMessage(電話、コンテンツ);
msg.setEncoding(MessageEncodings.ENCUCS2);// これは公開中文短信必須です
srv.sendMessage(msg);
}
/**
* 送信メッセージ类
* @著者テリー
*
*/
パブリック クラス OutboundNotification は IOutboundMessageNotification を実装します {
public void process(StringgatewayId, OutboundMessage msg) {
LOG.info("ゲートウェイから呼び出された送信ハンドラーを送信しました: " + GatewayId);
LOG.info(msg);
}
}
//受信メッセージ类
public String readMessage()
{
StringBuffer sb = new StringBuffer("");
List<InboundMessage> msgList;
// インバウンドおよびステータス レポートの通知コールバック メソッドを作成します
// メッセージ。
試す
{
System.out.println("読み取り例: シリアル GSM モデムからメッセージを読み取ります。");
System.out.println(Library.getLibraryDescription());
System.out.println("読み取りバージョン: " + Library.getLibraryVersion());
// 新しい Service オブジェクトを作成します - すべての親およびメイン インターフェイス
// あなたへ。
if (srv == null) {
srv = 新しいサービス();
srv.S.SERIAL_POLLING = true;
ゲートウェイ.setInbound(true);
ゲートウェイ.setOutbound(true);
ゲートウェイ.setSimPin("0000");
ゲートウェイ.setOutboundNotification(outboundNotification);
ゲートウェイ.setInboundNotification(inboundNotification);
ゲートウェイ.setCallNotification(callNotification);
srv.addGateway(ゲートウェイ);
srv.startService();
}
// 同様に、表すゲートウェイ オブジェクトをいくつでも定義できます。
// さまざまな GSM モデムを Service オブジェクトに追加し、すべてを制御します。
//
// 始める! (つまり、定義されたすべてのゲートウェイに接続します)
LOG.info("モデム情報の読み取り:");
LOG.info("製造元の読み取り: " + Gateway.getManufacturing());
LOG.info("モデルの読み取り: " + Gateway.getModel());
LOG.info("シリアル番号の読み取り: " +gateway.getSerialNo());
LOG.info("SIM IMSI の読み取り: " +gateway.getImsi());
LOG.info("読み取り信号レベル: " + Gateway.getSignalLevel() + "%");
LOG.info("バッテリーレベルの読み取り: " +gateway.getBatteryLevel() + "%");
// メッセージを読み取ります。読み取りは Service オブジェクトを介して行われ、
// 定義されているすべての Gateway オブジェクトに影響します。これは、より特定のことに向けることもできます
// ゲートウェイ - Service メソッドの呼び出しについては JavaDocs を参照してください。
msgList = new ArrayList<InboundMessage>();
this.srv.readMessages(msgList, MessageClasses.ALL);
int num = 1;
for (InboundMessage msg : msgList)
{
sb.append("第" + num + "条;発行者:"+msg.getOriginator() + ";内容:" + msg.getText() + "/n");
//sb.append(msg.toString() + "/n");
LOG.info("第" + num + "条;発行者:"+msg.getOriginator() + ";内容:" + msg.getText() + "/n");
数値++;
LOG.info(msg);
}
// もう寝てください。現実世界の状況をエミュレートし、通知にチャンスを与えます
// メッセージまたは音声通話の受信時に呼び出されるメソッド。
//System.out.println("現在スリープ中 - <enter> を押して終了します。");
//System.in.read();
}
catch (例外 e)
{
sb.append(e.getMessage());
e.printStackTrace();
}
ついに
{
//this.srv.stopService();
}
sb.toString() を返します。
}
パブリック クラス InboundNotification は IInboundMessageNotification を実装します
{
public void process(文字列ゲートウェイId、MessageTypes msgType、InboundMessage msg)
{
if (msgType == MessageTypes.INBOUND) System.out.println(">>> ゲートウェイから新しい受信メッセージが検出されました: " + GatewayId);
else if (msgType == MessageTypes.STATUSREPORT) System.out.println(">>> ゲートウェイから新しい受信ステータス レポート メッセージが検出されました: " +gatewayId);
System.out.println(msg);
試す
{
// 到着時にメッセージを削除したい場合は、次の行のコメントを解除します。
// srv.deleteMessage(msg);
}
catch (例外 e)
{
System.out.println("おっと!!! 何か問題が発生しました...");
e.printStackTrace();
}
}
}
パブリック クラス CallNotification は ICallNotification を実装します
{
public void process(String ゲートウェイId, String callerId)
{
System.out.println(">>> ゲートウェイから新しい通話が検出されました: " +gatewayId + " : " + callerId);
}
}
}