Wednesday, July 4, 2012

J2ME - SMS

SMS là một trong những phát minh vĩ đại của con người, tính chất đó không những đúng trước kia mà bây giờ cũng vậy. SMS vẫn luôn là một tính năng rất tuyệt vời của điện thoại di động. Bạn không thể nói từ trước đến giờ bạn chưa bao giờ sử dụng SMS, chính điều đó đã chứng tỏ điều tôi muốn nói với các bạn. Hôm nay tôi xin giới thiệu sơ lược các thao tác cơ bản với SMS trên thiết bị di động.
Để có thể gửi và nhận SMS, bạn cần có một kết nối SMS(MessageConnection).
Có 2 loại: SMS server và SMS client. Dùng để gửi và nhận tin SMS.
Nói chung SMS server hoàn toàn có các tính năng của SMS client. Do đó ta nên dùng SMS server.
Khởi tạo SMS server:
MessageConnection msgCnn = (MessageConnection) Connector.open(“sms://123456:0001″);
=> Khởi tạo SMS server với số 12345 là tùy chọn và số này không quan trọng lắm, trường hợp cần thiết tôi sẽ nói sau. Và cổng của SMS server là 0001.
Cổng của MessageConnection là một điều hết sức quan trọng. Nếu gửi tin đi mà không có cổng thì thì tin nhắn đó sẽ giống như các tin nhắn bình thường và sẽ được trình nhận tin nhắn mặc định của điện thoại nhận và lưu trong hộp thư đến của máy. Trong trường hợp ta gửi có cổng(port) riêng thì tin nhắn đó sẽ được chương trình của ta tiếp nhận, tất nhiên là chương trình của ta phải có kết nối vào đúng cổng đó. Nếu không cũng chẳng có ai nhận SMS đó cả.

Khi đã có MessageConnection ta sẽ thử gửi 1 tin nhắn:
TextMessage msg = (TextMessage) msgConn.newMessage(MessageConnection.TEXT_MESSAGE, “sms://” + number);
Trong đó String number sẽ là số mà ta gửi tin SMS đến. Tham số đầu tiên dùng để quy định dạng tin nhắn gì, có ba loại đó là TEXT_MESSAGE(tin nhắn chữ), BINARY_MESSAGE và MULTIPART_MESSAGE(tin đa phương tiện).
Tiếp theo ta tạo nội dung cho TextMessage trên:
msg.setPayloadText(content);
Trong đó String content là nội dung SMS mà ta muốn gửi.
Cuối cùng là thao tác gửi:
msgConn.send(msg);
Với hai loại tin nhắn còn lại các bạn tự khám phá cách cài đặt nội dung cho nó nhé.
Sau đây là SourceCode một App dùng Client Connection, nếu bạn muốn chuyển qua server Connection thì chỉ việc thêm Port ở sau, như thế này: addr = “sms://+8412345:0001″;
//////////////////
import javax.microedition.io.Connector;
import javax.microedition.midlet.*;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.MessageListener;
import javax.wireless.messaging.TextMessage;
public class SendSMS extends MIDlet implements MessageListener{
String addr;
String message=”This is my Messsage…”;
String number= “+84979163510″;
public void startApp() {
try {
//sets address to send message
addr = “sms://+8412345″;  // Số này không quan trọng(mấy số cũng được)…, tuy nhiên ko có thì ko được. Nghĩa là đang trong kết nối Client, chỉ gửi SMS thôi
// opens connection
MessageConnection conn = (MessageConnection)Connector.open(addr);
// prepares text message
TextMessage msg =(TextMessage)conn.newMessage(MessageConnection.TEXT_MESSAGE,”sms://”+number);  // Số này mới quan trọng, đó sẽ là số mà ta gửi SMS đến
//set text
msg.setPayloadText(message);
// send message
conn.send(msg);
conn.close();
} catch (Exception se) {
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void notifyIncomingMessage(MessageConnection arg0) {
}
}
////////////////
Và đây là một ứng dụng SMS mà tôi đã viết, bạn có thể down vể và thử.

No comments:

Post a Comment