Hướng phát triển cho ứng dụng

Một phần của tài liệu Dịch vụ trên nền công nghệ định vị location based services và ứng dụng (Trang 101 - 121)

Với mức thực hiện là một đồ án tốt nghiệp, thời gian làm việc còn hạn hẹp nên em không thể hoàn chỉnh Ứng dụng của mình. Em đã thực hiện được giai đoạn đầu của Ứng dụng cung cấp thông tin cơ bản về dịch vụ cho người dùng thông tin đó nội dung bao gồm: Tên cửa hàng, địa chỉ, số điện thoại, sản phẩm chính và mức độ giảm giá cho dịch vụ.

Hướng phát triển cho Ứng dụng sẽ xây dựng hệ thống hoàn chỉnh có sử dụng Location Based Services. Từng bước thực hiện chương trình

Xây dựng hoàn thiện kho chứa Cơ sở dữ liệu nhằm sử dụng cho phát triển LBS như tích hợp hệ thống bản đồ số vào cơ sở dữ liệu, ví dụ dữ liệu về nhà cung cấp dịch vụ ngoài những thông tin về dịch vụ, nhà cung cấp cần có thêm thông tin về vị trí địa lý của

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD

mình nằm ở đâu trên bản đồ bao gồm : toạ độ (kinh độ, vĩ độ), thể hiện vị trí địa lý trên bản đồ số

Ứng dụng được xây dựng dựa trên nền tảng middleware OpenLS.

Khi cài đặt chương trình lúc này thiết bị di động phải được hỗ trợ GPS hoặc 1 thiết bị riêng rẽ để xác định vị trí của người dùng theo toạ độ và theo bản đồ số

Một Ứng dụng hoàn chỉnh cần phải có một số yêu cầu nhất định : Tốc độ xử lý cho mỗi 1 yêu cầu, tính bảo mật cho chương trình, kích cỡ (không gian chiếm bộ nhớ) của Ứng dụng,…

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD Kết luận

Phát triển Ứng dụng trên nền định vị (Location Based Services) tích hợp hệ thống định vị toàn cầu GPS, hệ thống thông tin địa lý GIS và bản đồ số đang còn mới mẻ với các nhà cung cấp dịch vụ và phát triển phần mềm tại Việt Nam. Đây là một lĩnh vực rất mở và hứa hẹn mang lại nhiều đột phá không chỉ trong công nghệ mà còn thể hiện tính ưu việt của dịch vụ nhằm đem về những khoản lợi nhuận khổng lồ cho các nhà phát triển Ứng dụng.

Trong bài đồ án này em đã phân nội dung thành 2 phần chính : Phần 1: Lý thuyết chung

Tìm hiểu và trình bày được những thành phần cơ bản nhất để xây dựng được một Ứng dụng Location Based Services trong đó bao gồm giới thiệu tổng quan về dịch vụ Location Based Services, tiếp theo trình bày những thành phần quan trọng để xây dựng lên Ứng dụng LBS đó là hệ thống định vị toàn cầu GPS, Hệ thống thông tin địa lý GIS, bản đồ số, Mạng di động, Internet,….Nội dung cuối cùng là nội dung được đánh giá quan trọng nhất đó là nền tảng middleware cho Ứng dụng LBS phần này em đi khá chi tiết tìm hiểu về định nghĩa middleware, kiến trúc, một số mô hình middleware LBS và tìm hiểu về middleware OpenGIS Consortium(OGC ] Tập đoàn mở GIS ) đây là 1 chuẩn và là nền tảng để phát triển các Ứng dụng LBS.

Phần 2: Ứng dụng

Nội dung đầu em giới thiệu tổng quan về công cụ lập trình trong đó gồm công nghệ J2ME cho phát triển các Ứng dụng trên Mobile, MIDlet phần mềm di động ảo hỗ trợ chạy các Ứng dụng.

Nội dung thứ 2, phát triển và xây dựng Ứng dụng. Nội dung này được chia thành 2 phần nhỏ : Xây dựng hệ quản trị web và phần mềm trên thiết bị di động

Xây dựng hệ quản trị web

+ Module dành cho người quản trị hệ thống + Module quản lý các nhà cung cấp dịch vụ + Kho chứa cơ sở dữ liệu

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD Phần mềm trên thiết bị di động

+ Xây dựng giao diện sử dụng dịch vụ, chức năng cho người dùng sử dụng như : Cập nhật, Liên hệ, Services group nhưng vẫn còn một số chức năng chưa khai thác

+ Một số tính năng nổi bật mà chương trình cung cấp: Từ số điện thoại của nhà cung cấp có trên thông tin của nhà cung cấp người dùng có thể gọi ngay từ chương trình của mình, tính năng nổi bật thứ 2; chương trình có chức năng tìm kiếm nhanh thuận tiện cho người dùng sử dụng dịch vụ

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD Phụ lục Một số lớp mã nguồn chính của chương trình

Lớp DemoMIDlet.java package com.Ungdung.mobile; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.List; import com.Ungdung.mobile.component.*; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; /** * @author * */

publicclass DemoMIDlet extends MIDlet implements CommandListener { private List list;

/**

* @throws RecordStoreException *

*/

public DemoMIDlet() {

list = new List("Dich vu tieu dung", List.IMPLICIT); try {

list.append("ServiceGroups", Image

.createImage("/com/images/services.png")); list.append("Dich vu khac", Image

.createImage("/com/images/kservices.png")); list

.append("Cap nhat", Image .createImage("/com/images/update.png"));

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD list.append("Tro giup", Image

.createImage("/com/images/help.png")); list

.append("Lien he", Image .createImage("/com/images/home.png")); list.append("Thoat", Image .createImage("/com/images/exit.png")); } catch (Exception e) { e.printStackTrace(); } }

public Display getDisplay() {

return Display.getDisplay(this); }

protectedvoid destroyApp(boolean arg0) throws MIDletStateChangeException { }

protectedvoid pauseApp() { }

protectedvoid startApp() throws MIDletStateChangeException { list.setCommandListener(this);

getDisplay().setCurrent(list); }

publicvoid commandAction(Command cmd, Displayable dis) {

// TODO Auto]generated method stub if (cmd.equals(list.SELECT_COMMAND)) {

switch (list.getSelectedIndex()) { case 0: // service group;

new LocalesForm(dis,this); break;

case 2: // update

new UpdateForm(dis,this); break;

case 4:

new AboutForm(dis,this); break;

case 5:

notifyDestroyed(); try {

destroyApp(true);

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD break;

default:

Alert alert=new Alert("Chuc nang dang xay dung","Vui long cho phien ban chinh thuc de duoc su dung.",null, AlertType.WARNING);

alert.setTimeout(Alert.FOREVER); getDisplay().setCurrent(alert,dis); break; } } } } Lớp AboutForm.java package com.Ungdung.mobile.component; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.ImageItem; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemCommandListener; import javax.microedition.lcdui.StringItem; import javax.microedition.midlet.MIDlet; import com.Ungdung.mobile.DemoMIDlet;

publicclass AboutForm extends Form implements ItemCommandListener, CommandListener{

private Command call=new Command("Goi",Command.ITEM,1); private DemoMIDlet midlet;

private Displayable backScreen;

public AboutForm(Displayable backScreen, DemoMIDlet dm) {

super("Lien he"); midlet=dm;

midlet.getDisplay().setCurrent(this); this.backScreen=backScreen;

this.append("Lien he voi cong ty TNHH phan mem va dich vu vien thong TELSOFT: ");

StringItem strMobile=new StringItem("So dien thoai:","0437821822"); strMobile.addCommand(call);

strMobile.setItemCommandListener(this);

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD

StringItem strAddress=new StringItem("Dia chi:","So 102A2 ] Ngo 125 Trung kinh ] Cau Giay ] Ha noi "); strHomepage.setLayout(Item.HYPERLINK);

strMobile.setLayout(Item.LAYOUT_LEFT); this.append(strMobile);

this.append(strHomepage); this.append(strAddress);

this.addCommand(new Command("Quay lai",Command.BACK,2)); this.setCommandListener(this);

}

publicvoid commandAction(Command cmd, Item item) {

// TODO Auto]generated method stub if (cmd.equals(call)) {

try {

StringItem str=(StringItem)item;

midlet.platformRequest("tel:"+str.getText()); }catch(Exception e){

this.append(e.getMessage()); }

} }

publicvoid commandAction(Command cmd, Displayable display) {

// TODO Auto]generated method stub

if (cmd.getCommandType()==Command.BACK) { midlet.getDisplay().setCurrent(backScreen); } } } Lớp LocalesForm.java package com.Ungdung.mobile.component; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Vector; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.lcdui.List; import javax.microedition.rms.RecordStore; import org.kxml2.kdom.Document;

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD import org.kxml2.kdom.Element; import org.kxml2.kdom.Node; import org.kxml2.wap.WbxmlParser; import org.kxml2.wap.WbxmlSerializer; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import com.Ungdung.mobile.DemoMIDlet; import com.Ungdung.mobile.Roundtrip; import com.Ungdung.rms.RecordManagerUtil;

publicclass LocalesForm extends Form implements Runnable, CommandListener{ private DemoMIDlet midlet;

private Displayable backScreen; private List li;

private Vector vtLocaltion=new Vector(); private Vector vtNode= new Vector();

public LocalesForm(Displayable backScreen,DemoMIDlet midlet) { super("Danh muc dich vu");

this.midlet=midlet;

this.backScreen=backScreen;

Gauge gauge = new Gauge("Loading...", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING);

this.append(gauge); setCommandListener(this);

midlet.getDisplay().setCurrent(this); new Thread(this).start();

}

publicvoid run() { try {

RecordStore recordStore =

RecordManagerUtil.open(midlet.getAppProperty("RECORD_NAME"), true); if (recordStore.getNumRecords() == 0) {

ByteArrayOutputStream bos = new ByteArrayOutputStream(); XmlPullParser xp = new WbxmlParser();

xp.setInput(getClass().getResourceAsStream("/service.wbxml"),null); XmlSerializer xs= new WbxmlSerializer(); xs.setOutput(bos, null);

new Roundtrip(xp, xs).roundTrip(); byte[] wbxml=bos.toByteArray();

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD

recordStore.addRecord(wbxml, 0, wbxml.length); }

byte[] bwml=recordStore.getRecord(1);

ByteArrayInputStream bis=new ByteArrayInputStream(bwml); XmlPullParser xpr=new WbxmlParser();

xpr.setInput(bis,null);

Document doc=new Document(); doc.parse(xpr);

Node nd=doc.getRootElement();

for (int i=1; i<nd.getChildCount(); i++) { int type=nd.getType(i);

if (type==Node.ELEMENT){

Element e=nd.getElement(i);

for (int j=0; j<e.getChildCount(); j++) { int jType=e.getType(j); if (jType==Node.ELEMENT) { Element je=e.getElement(j); if (je.getName().equals("name")) { vtNode.addElement(e); vtLocaltion.addElement(je.getChild(0).toString()); } } } } } RecordManagerUtil.close(recordStore); } catch (Exception e) {

// TODO Auto]generated catch block e.printStackTrace();

}

li=new List("Danh sach khu vuc",List.IMPLICIT);

Command cmdBack = new Command("Quay lai", Command.BACK, 0); li.addCommand(cmdBack);

li.setCommandListener(this);

for (int i=0; i<vtLocaltion.size(); i++) {

li.append(vtLocaltion.elementAt(i).toString(), null); }

midlet.getDisplay().setCurrent(li); }

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD

publicvoid commandAction(Command cmd, Displayable dis) {

// TODO Auto]generated method stub

if (cmd.getCommandType()==Command.BACK) { midlet.getDisplay().setCurrent(backScreen); } if (cmd==li.SELECT_COMMAND) { ServicesForm lc=new ServicesForm(dis,midlet,(Node)vtNode.elementAt(li.getSelectedIndex())); } } } Lớp UpdateForm.java package com.Ungdung.mobile.component; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.lcdui.Item; import javax.microedition.rms.RecordStore; import org.kxml2.wap.WbxmlParser; import org.kxml2.wap.WbxmlSerializer; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import com.Ungdung.mobile.DemoMIDlet; import com.Ungdung.mobile.Roundtrip; import com.Ungdung.rms.RecordManagerUtil;

publicclass UpdateForm extends javax.microedition.lcdui.Form implements Runnable, CommandListener {

private DemoMIDlet midlet; private Displayable backDisplay;

public UpdateForm(Displayable bDis, DemoMIDlet midlet) { super("Cap nhat du lieu");

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD this.backDisplay = bDis;

midlet.getDisplay().setCurrent(this); setCommandListener(this);

Gauge gauge = new Gauge("Dang tai du lieu.... Vui long cho", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING); this.append(gauge);

Command cmdBack = new Command("Quay lai", Command.BACK, 0); addCommand(cmdBack);

(new Thread(this)).start(); }

publicvoid run() { try {

runImpl(midlet.getAppProperty("LIST_SERVICE")); // Read property // value

this

.append("Cap nhat du lieu thanh cong. Ban da co thong tin moi nhat ve thong tin cac dich vu!"); // of XML location

} catch (Exception ioe) {

this.append(ioe.getMessage()); }

// Remove the gauge.

for (int i = 0; i < this.size(); i++) { Item item = this.get(i); if (item instanceof Gauge)

this.delete(i]]); }

}

publicvoid runImpl(String url) throws Exception {

HttpConnection hc = (HttpConnection) Connector.open(url); try {

InputStream in = hc.openInputStream();

if (hc.getResponseCode() == HttpConnection.HTTP_OK) { try {

XmlPullParser xp = new WbxmlParser(); xp.setInput(in, null);

XmlSerializer xs = new WbxmlSerializer(); ByteArrayOutputStream bos = new

ByteArrayOutputStream();

xs.setOutput(bos, null);

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD byte[] wbxml = bos.toByteArray(); RecordStore recordStore = RecordManagerUtil.open(midlet.getAppProperty("RECORD_NAME"), true); if (recordStore.getNumRecords()>0) { RecordManagerUtil.close(recordStore); RecordManagerUtil.delete(midlet.getAppProperty("RECORD_NAME")); recordStore = RecordManagerUtil.open(midlet.getAppProperty("RECORD_NAME"), true); } recordStore.addRecord(wbxml, 0, wbxml.length); RecordManagerUtil.close(recordStore); } finally { in.close(); } }else {

thrownew Exception("Khong the cap nhat du lieu moi. Vui long thu lai sau."); }

} finally {

hc.close(); }

}

publicvoid commandAction(Command cmd, Displayable arg1) {

// TODO Auto]generated method stub

if (cmd.getCommandType() == Command.BACK) { midlet.getDisplay().setCurrent(backDisplay); } } } Lớp ServicesForm.java package com.Ungdung.mobile.component; import java.util.Vector; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.List;

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD import org.kxml2.kdom.Element;

import org.kxml2.kdom.Node;

import com.Ungdung.mobile.DemoMIDlet;

publicclass ServicesForm extends List implements CommandListener{ private DemoMIDlet midlet;

private Displayable backDisplay; private Node ndService;

private Vector vtNode=new Vector();

public ServicesForm(Displayable bDisplay, DemoMIDlet dm, Node nd) { super("Khu vuc dich vu",List.IMPLICIT);

// TODO Auto]generated constructor stub backDisplay=bDisplay;

midlet=dm;

midlet.getDisplay().setCurrent(this); ndService=nd;

Command cmdBack = new Command("Quay lai", Command.BACK, 0); addCommand(cmdBack);

setCommandListener(this);

for (int i=0; i<ndService.getChildCount(); i++) { int type=ndService.getType(i);

if (type==Node.ELEMENT){

Element e=ndService.getElement(i); for (int j=0; j<e.getChildCount(); j++) {

int jType=e.getType(j); if (jType==Node.ELEMENT) { Element je=e.getElement(j); if (je.getName().equals("name")) { vtNode.addElement(e); this.append(je.getChild(0).toString(), null); } } } } } }

publicvoid commandAction(Command cmd, Displayable dis) {

// TODO Auto]generated method stub

if (cmd.getCommandType()==Command.BACK) { midlet.getDisplay().setCurrent(backDisplay);

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD }

if (cmd==this.SELECT_COMMAND) {

ProducerSearch pr=new ProducerSearch(this,midlet, (Node)vtNode.elementAt(this.getSelectedIndex()));

} } } Lớp ProducesSearch.java package com.Ungdung.mobile.component; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemCommandListener; import javax.microedition.lcdui.ItemStateListener; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; import org.kxml2.kdom.Element; import org.kxml2.kdom.Node; import com.Ungdung.mobile.DemoMIDlet;

publicclass ProducerSearch extends Form implements CommandListener, ItemStateListener, ItemCommandListener {

private DemoMIDlet midlet; private Displayable backDisplay; private Node ndPro;

private TextField txtSearch;

Command cmdSelect= new Command("Chon", Command.ITEM, 0);

public ProducerSearch(Displayable bDisplay, DemoMIDlet dm, Node nd) { super("Danh sach cua hang");

// TODO Auto]generated constructor stub backDisplay = bDisplay;

midlet = dm;

midlet.getDisplay().setCurrent(this); ndPro = nd;

txtSearch = new TextField("", "", 30, TextField.ANY); setCommandListener(this);

setItemStateListener(this); this.append(txtSearch);

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD addCommand(cmdBack);

for (int i = 0; i < ndPro.getChildCount(); i++) { int type=ndPro.getType(i);

if (type==Node.ELEMENT){

Element e=ndPro.getElement(i); String strName="";

String strAddress="";

for (int j=0; j<e.getChildCount(); j++) { int jType=e.getType(j); if (jType==Node.ELEMENT) { Element je=e.getElement(j); if (je.getName().equals("name")) { strName=je.getChild(0).toString(); }elseif (je.getName().equals("address")) { strAddress=je.getChild(0).toString(); } } }

ProducerItem producerItem=new ProducerItem(strName,strAddress,e); producerItem.addCommand(cmdSelect); producerItem.setItemCommandListener(this); this.append(producerItem); } } }

publicvoid commandAction(Command cmd, Displayable display) {

// TODO Auto]generated method stub

if (cmd.getCommandType()==Command.BACK) { midlet.getDisplay().setCurrent(backDisplay); }

}

publicvoid itemStateChanged(Item item) { // TODO Auto]generated method stub if (item == txtSearch) {

while (this.size()>1) { this.delete(1); }

for (int i = 0; i < ndPro.getChildCount(); i++) { int type=ndPro.getType(i);

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD if (type==Node.ELEMENT){

Element e=ndPro.getElement(i); String strName="";

String strAddress="";

for (int j=0; j<e.getChildCount(); j++) { int jType=e.getType(j); if (jType==Node.ELEMENT) { Element je=e.getElement(j); if (je.getName().equals("name")) { strName=je.getChild(0).toString(); }elseif (je.getName().equals("address")) { strAddress=je.getChild(0).toString(); } } } String strTxt = txtSearch.getString(); String str=strName+ strAddress; if

(str.toLowerCase().indexOf(strTxt.toLowerCase())>=0) {

ProducerItem producerItem=new ProducerItem(strName,strAddress,e); producerItem.setItemCommandListener(this); producerItem.addCommand(cmdSelect); this.append(producerItem); } } } } }

publicvoid commandAction(Command cmd, Item item) {

if (item instanceof ProducerItem) {

ProducerItem proItem=(ProducerItem)item;

new ProducerDetail(this,midlet,proItem.getNode()); }

} }

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD package com.Ungdung.mobile.component; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemCommandListener; import javax.microedition.lcdui.StringItem; import org.kxml2.kdom.Element; import org.kxml2.kdom.Node; import com.Ungdung.mobile.DemoMIDlet;

publicclass ProducerDetail extends Form implements CommandListener, ItemCommandListener {

private Command call = new Command("Goi", Command.ITEM, 1); private DemoMIDlet midlet;

private Displayable backScreen;

public ProducerDetail(Displayable backScreen, DemoMIDlet dm, Node nd) { super("");

midlet = dm;

midlet.getDisplay().setCurrent(this); this.backScreen = backScreen;

Command cmd = new Command("Quay lai", Command.BACK, 1); this.addCommand(cmd);

setCommandListener(this);

for (int j = 0; j < nd.getChildCount(); j++) { int jType = nd.getType(j);

if (jType == Node.ELEMENT) { Element je = nd.getElement(j); if (je.getName() != null) {

if (je.getName().equals("name")) {

String strName = getFirstChild(je, ""); this.setTitle(strName);

} elseif (je.getName().equals("address")) { String strAddress = getFirstChild(je, "");

StringItem strItem = new StringItem("Dia chi:", strAddress);

this.append(strItem);

} elseif (je.getName().equals("phone")) { String strPhone = getFirstChild(je, "");

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD

StringItem strItem = new StringItem("Dien thoai:",strPhone); this.append(strItem);

strItem.addCommand(call);

strItem.setItemCommandListener(this); } elseif (je.getName().equals("bestproduct")) {

String strBest = getFirstChild(je, ""); StringItem strItem = new StringItem(

"San pham tieu bieu:", strBest); this.append(strItem);

} elseif (je.getName().equals("discount")) { String strBest = getFirstChild(je, "");

StringItem strItem = new StringItem("Giam gia(%):",strBest); this.append(strItem); } } } }

// TODO Auto]generated constructor stub }

publicvoid commandAction(Command cmd, Displayable dis) {

// TODO Auto]generated method stub

if (cmd.getCommandType() == Command.BACK) { midlet.getDisplay().setCurrent(backScreen); }

}

publicvoid commandAction(Command cmd, Item item) {

if (cmd.equals(call)) { try {

StringItem str = (StringItem) item;

midlet.platformRequest("tel:" + str.getText()); } catch (Exception e) { this.append(e.getMessage()); } } }

public String getFirstChild(Element e, String nullValue) { if (e.getChildCount()==0){ return nullValue; } return e.getChild(0).toString(); } }

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD Tài liệu tham khảo

[1]. http://vi.wikipedia.org/wiki/XML [2] http://en.wikipedia.org/wiki/Location]based_service [3].http://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_%C4%91%E1%B B%8Bnh_v%E1%BB%8B_to%C3%A0n_c%E1%BA%A7u [4]. http://www.nea.gov.vn/html/phobienkienthuc/allGIS.htm [5]. http://www.vocw.edu.vn/content/m10595/latest/ [6].http://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_Th%C3%B4ng_tin _%C4%90%E1%BB%8Ba_l%C3%BD

[7]. "Geoslavery", IEEE Technology and Society Magazine, 2003 J.E. Dobson and P.F. Fisher

[8]. LBS Positioning Methods http://www.navigationevent.com/pdf/tyntec_kunz.pdf

[9]. "Location Based Services for Mobiles: Technologies and Standards“,

[10]. IEEE International Conference on Communication (ICC) 2008,

Shu Wang, Jungwon Min and Byung K. Yi, Beijing, China [11]. "Location Based Services FAQ (LBS]FAQ)“, Location Based Services FAQ [12]. OGC. (2004). OpenGIS Location Services (OpenLS): Core Services.

http://www.opengis.org/ [13]. http://kxml.sourceforge.net/kxml2/javadoc/ [14]. http://hotro.silversea.vn/?p=101 [15]. http://kxml.sourceforge.net/kxml2/javadoc/org/kxml2/kdom/package]summary.html [16].http://svn.istpalcom.org/svn/palcom/trunk/doc/javadoc/html/org/xmlpull/v1/package ]summary.html [17]. http://www.thienlong.org/forumvn/archive/index.php/t]8978.html [18]. http://www.gisdevelopment.net/technology/lbs/techlbs003pf.htm

[19]. OpenGISđ Geography Markup Language (GML) Implementation Specification [20]. Location]Based Services

Sinh viên TH : Nguyễn Nho Bình – Lớp 49PM2 ĐHXD [21]. Middleware for Location]based Services

Pontif´ ıcia Universidade Cat´ olica do Rio de Janeiro 16 de novembro de 2004

[22]. Location]based services. Morgan Kaufmann Publishers. Schiller, J. H., and Voisard, A., 2004 [23]. IEEE Technology and Society Magazine, 22 (1), 47]52.

Dobson, J.E., Fisher, P. F., 2003. Geoslavery [24]. Location]based Services, Fundamentals and Operation

John Wiley & Sons Ltd

[25]. Leveraging Location]Based Services for Mobile Applications An Oracle Technical White Paper (June 2001) [26]. Location Based Services for Mobiles Technologies and Standards

Shu Wang, Jungwon Min, Byung K. Yi LG Electronics Mobile Research, USA

Contact: swang@lge.com

[

[2277]]..LLậậppttrrììnnhhJJ22MMEEcchhootthhiiếếttbbịịddiiđđộộnngg

Giáo viên : Trịnh Thị Vân Anh

[28]. Nguyễn Phương Lan và Hoàng Đức Hải , “ Java Lập trình mạng” NXB, Giáo dục 2000

[29]. Sun Microsystems, “The JavaTM Web Services Tutorial”,

http://java.sun.com/webservices/downloads/webservicestutorial.html, 19/02/2003

[30]. Từng bước lập trình :

CHO ĐIỆN THOẠI DI ĐỘNG J2ME (Toàn tập) Lê Ngọc Quốc Khánh

Một phần của tài liệu Dịch vụ trên nền công nghệ định vị location based services và ứng dụng (Trang 101 - 121)

Tải bản đầy đủ (PDF)

(121 trang)