利用jSMSEngine開源包進(jìn)行短信的收發(fā)
公司項(xiàng)目中要用到短信貓進(jìn)行收發(fā)短信,在網(wǎng)上找到一個(gè)開源的jSMSEngine。經(jīng)測(cè)試jSMSEngine
可以實(shí)現(xiàn)項(xiàng)目需求。
jSMSEngine開源包可以利用GSM Modem或帶有紅外線、藍(lán)牙、數(shù)據(jù)線的手機(jī)與電腦連通,收發(fā)短信。
相應(yīng)的類庫(kù)下載我已經(jīng)打包好了
jSMSEngine開源項(xiàng)目主頁
http://sourceforge.net/projects/jsmsengine/
相關(guān)類庫(kù)下載
讓我們先來配置開發(fā)環(huán)境環(huán)境。
1. 復(fù)制comm.jar、jSMSEngine.jar到j(luò)re\lib\ext文件夾下,或把開發(fā)包添加到開發(fā)環(huán)境中。
2. 復(fù)制javax.comm.properties到\jre\lib目錄下。
3. 復(fù)制win32com.dll到\jre\bin目錄下。
用如果是用Eclipse開發(fā)的話看看Install JRE里面的JRE路徑,用那個(gè)就可以了。
如果不用開發(fā)工具的話jre就是你在系統(tǒng)環(huán)境里配置的JAVA_HOME 的路徑。
以上工作是必須的,很重要。到這時(shí)環(huán)境已經(jīng)準(zhǔn)備好了。
在設(shè)備管理器下,看看手機(jī)占用的哪個(gè)com端口,更改程序里面的com端口和比特率兩個(gè)參數(shù),找一臺(tái)帶數(shù)據(jù)線的手機(jī)試試,最好不帶內(nèi)存卡的那種。
發(fā)送短信代碼:
ok,測(cè)試成功!
可以實(shí)現(xiàn)項(xiàng)目需求。
jSMSEngine開源包可以利用GSM Modem或帶有紅外線、藍(lán)牙、數(shù)據(jù)線的手機(jī)與電腦連通,收發(fā)短信。
相應(yīng)的類庫(kù)下載我已經(jīng)打包好了
jSMSEngine開源項(xiàng)目主頁
http://sourceforge.net/projects/jsmsengine/
相關(guān)類庫(kù)下載
讓我們先來配置開發(fā)環(huán)境環(huán)境。
1. 復(fù)制comm.jar、jSMSEngine.jar到j(luò)re\lib\ext文件夾下,或把開發(fā)包添加到開發(fā)環(huán)境中。
2. 復(fù)制javax.comm.properties到\jre\lib目錄下。
3. 復(fù)制win32com.dll到\jre\bin目錄下。
用如果是用Eclipse開發(fā)的話看看Install JRE里面的JRE路徑,用那個(gè)就可以了。
如果不用開發(fā)工具的話jre就是你在系統(tǒng)環(huán)境里配置的JAVA_HOME 的路徑。
以上工作是必須的,很重要。到這時(shí)環(huán)境已經(jīng)準(zhǔn)備好了。
在設(shè)備管理器下,看看手機(jī)占用的哪個(gè)com端口,更改程序里面的com端口和比特率兩個(gè)參數(shù),找一臺(tái)帶數(shù)據(jù)線的手機(jī)試試,最好不帶內(nèi)存卡的那種。
發(fā)送短信代碼:
import java.util.LinkedList;
import org.jsmsengine.CIncomingMessage;
import org.jsmsengine.CMessage;
import org.jsmsengine.COutgoingMessage;
import org.jsmsengine.CService;
@SuppressWarnings("unchecked")
/****
* 收發(fā)短信的服務(wù)類
*/
public class MsgService
{
private static CService cs = null;
public static void init(String port, Integer fm)
{
// 指定端口號(hào)和頻率
cs = new CService(port, fm);
}
/**
* 發(fā)送短信
*
* @param phone
* 手機(jī)號(hào)
* @param info
* 短信內(nèi)容
*/
public static void sendmsg(String phone, String info)
{
try
{
System.out.println("正在發(fā)送短信");
// 初始化連接
cs.initialize();
// 設(shè)置jSMSEngine服務(wù)的緩存
cs.setCacheDir(".\\");
// 連接
int status = cs.connect();
// 連接成功(可以是GSM Modem、帶有紅外線、藍(lán)牙、數(shù)據(jù)線的手機(jī))
if (status == CService.ERR_OK)
{
cs.setOperationMode(CService.MODE_PDU);
cs.setSmscNumber("");
COutgoingMessage msg = new COutgoingMessage(phone, info);
msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_UNICODE);
if (cs.sendMessage(msg) == CService.ERR_OK)
{
System.out.println("給" + phone + "發(fā)送短信成功!");
} else
{
System.out.println("給" + phone + "發(fā)送短信失敗!");
}
// 斷開連接
cs.disconnect();
} else
{
System.out.println("連接設(shè)備失敗, 異常: " + status);
}
} catch (Exception e)
{
e.printStackTrace();
}
}
/***
* 讀取短信內(nèi)容
*/
public static void readmsg()
{
//存入短信集合
LinkedList msgList = new LinkedList();
try
{
System.out.println("讀取短信中。。。。");
cs.initialize();
cs.setCacheDir(".\\");
// 連接設(shè)備
int status = cs.connect();
if (status == CService.ERR_OK)
{
cs.setOperationMode(CService.MODE_PDU);
if (cs.readMessages(msgList, CIncomingMessage.CLASS_ALL) == CService.ERR_OK)
for (int i = 0; i < msgList.size(); i++)
{
CIncomingMessage msg = (CIncomingMessage) msgList.get(i);
System.out.println(msg);
//輸出短信文本
System.out.println(msg.getText());
//刪除短信
cs.deleteMessage(i);
}
// 斷開連接
cs.disconnect();
} else
System.out.println("設(shè)備連接失?。?/span>" + status);
} catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
init("com4", 9600);
sendmsg("15800000000", "這是一個(gè)測(cè)試程序");
readmsg();
}
}
import org.jsmsengine.CIncomingMessage;
import org.jsmsengine.CMessage;
import org.jsmsengine.COutgoingMessage;
import org.jsmsengine.CService;
@SuppressWarnings("unchecked")
/****
* 收發(fā)短信的服務(wù)類
*/
public class MsgService
{
private static CService cs = null;
public static void init(String port, Integer fm)
{
// 指定端口號(hào)和頻率
cs = new CService(port, fm);
}
/**
* 發(fā)送短信
*
* @param phone
* 手機(jī)號(hào)
* @param info
* 短信內(nèi)容
*/
public static void sendmsg(String phone, String info)
{
try
{
System.out.println("正在發(fā)送短信");
// 初始化連接
cs.initialize();
// 設(shè)置jSMSEngine服務(wù)的緩存
cs.setCacheDir(".\\");
// 連接
int status = cs.connect();
// 連接成功(可以是GSM Modem、帶有紅外線、藍(lán)牙、數(shù)據(jù)線的手機(jī))
if (status == CService.ERR_OK)
{
cs.setOperationMode(CService.MODE_PDU);
cs.setSmscNumber("");
COutgoingMessage msg = new COutgoingMessage(phone, info);
msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_UNICODE);
if (cs.sendMessage(msg) == CService.ERR_OK)
{
System.out.println("給" + phone + "發(fā)送短信成功!");
} else
{
System.out.println("給" + phone + "發(fā)送短信失敗!");
}
// 斷開連接
cs.disconnect();
} else
{
System.out.println("連接設(shè)備失敗, 異常: " + status);
}
} catch (Exception e)
{
e.printStackTrace();
}
}
/***
* 讀取短信內(nèi)容
*/
public static void readmsg()
{
//存入短信集合
LinkedList msgList = new LinkedList();
try
{
System.out.println("讀取短信中。。。。");
cs.initialize();
cs.setCacheDir(".\\");
// 連接設(shè)備
int status = cs.connect();
if (status == CService.ERR_OK)
{
cs.setOperationMode(CService.MODE_PDU);
if (cs.readMessages(msgList, CIncomingMessage.CLASS_ALL) == CService.ERR_OK)
for (int i = 0; i < msgList.size(); i++)
{
CIncomingMessage msg = (CIncomingMessage) msgList.get(i);
System.out.println(msg);
//輸出短信文本
System.out.println(msg.getText());
//刪除短信
cs.deleteMessage(i);
}
// 斷開連接
cs.disconnect();
} else
System.out.println("設(shè)備連接失?。?/span>" + status);
} catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
init("com4", 9600);
sendmsg("15800000000", "這是一個(gè)測(cè)試程序");
readmsg();
}
}
ok,測(cè)試成功!
posted on 2012-01-13 13:40 々上善若水々 閱讀(1945) 評(píng)論(3) 編輯 收藏 所屬分類: J2SE