程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 定位API開發指南——例子:移動應用開發的定位和定位檢測(10)

定位API開發指南——例子:移動應用開發的定位和定位檢測(10)

編輯:J2ME
定位API開發指南——例子:移動應用開發的定位和定位檢測(10) 作者:姜 譯    文章來源:諾基亞官方文檔    更新時間:2006-12-26 16:59:06 432

此文為開發視界翻譯轉載者請注明出處(開發視界 www.sf.org.cn)否則追究法律責任

4.4.13 運行TouristUI類。

1、建TouristUI類

2、入必要的類

package com.nokia.example.location.tourist.ui;

import Javax.microedition.lcdui.Canvas;

import Javax.microedition.lcdui.Command;

import Javax.microedition.lcdui.CommandListener;

import Javax.microedition.lcdui.Displayable;

import Javax.microedition.lcdui.Font;

import Javax.microedition.lcdui.Graphics;

import Javax.microedition.location.AddressInfo;

import Javax.microedition.location.QualifIEdCoordinates;

import com.nokia.example.location.tourist.TouristMIDlet;

import com.nokia.example.location.tourist.Utils;

import com.nokia.example.location.tourist.model.ConfigurationProvider;

import com.nokia.example.location.tourist.model.TouristData;

3、建TouristUI類,並將其設置為Canvas擴展,運行CommandLstener。定義類所需要的命令和常量,創建類結構。

/**

* VIEwer class that renders current location updates.

*/

public class TouristUI extends Canvas implements CommandListener

{

/** The current state of the location provider as a String */

private String providerState = "Unknown";

/** Proximity monitoring state. */

private String proximityState = "Waiting";

private AddressInfo info;

private QualifIEdCoordinates coord;

private float speed;

/** Command that shows compass canvas */

private Command compassCmd = new Command("Compass", Command.OK, 1);

/** Command that shows Landmark editor UI */

private Command editorCmd = new Command("Editor", Command.STOP, 1);

/** Rerefence to the Landmark editor UI */

private LandmarkEditorUI editorUI = null;

/** Rerefence to the Compass UI */

private CompassUI compassUI = null;

public TouristUI(TouristData data)

{

editorUI = new LandmarkEditorUI(this, data);

compassUI = new CompassUI(this);

checkSupportedFeatures();

addCommand(editorCmd);

setCommandListener(this);

}

4、建方法,啟動和關閉在UI上的定位API。

/**

* Enable supported Location API features on the UI and disable unsupported

* features.

*/

protected void checkSupportedFeatures()

{

if (ConfigurationProvider.getInstance().isOrIEntationSupported())

{

addCommand(compassCmd);

}

else

{

removeCommand(compassCmd);

}

}

5、建方法,設置provider和proximity狀態。

public void setProviderState(String state)

{

providerState = state;

}

public void setProximityState(String state)

{

proximityState = state;

}

public void setInfo(AddressInfo info, QualifIEdCoordinates coord,

float speed)

{

this.info = info;

this.coord = coord;

this.speed = speed;

}

6、建方法,引導Canvas。

/**

* Renders the canvas.

*

* @param g -

* the Graphics object to be used for rendering the Canvas

*/

protected void paint(Graphics g)

{

Font f = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,

Font.SIZE_SMALL);

g.setFont(f);

// use font height as a line height

int lineHeight = f.getHeight();

// current line counter

int line = 0;

// clean the backround

g.setColor(0xffffff);

g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(0x0000ff);

g.drawString("Provider state: " + providerState, 0, lineHeight

* (line++), Graphics.LEFT | Graphics.TOP);

g.drawString("Proximity monitoring: " + proximityState, 0, lineHeight

* (line++), Graphics.LEFT | Graphics.TOP);

if (coord != null)

{

double lat = coord.getLatitude();

double lon = coord.getLongitude();

g.drawString("Lat, Lon (" + Utils.formatDouble(lat, 3) + ", "

+ Utils.formatDouble(lon, 3) + ")", 0, lineHeight

* (line++), Graphics.TOP | Graphics.LEFT);

g.drawString("Speed: " + Utils.formatDouble(speed, 2) + " m/s", 0,

lineHeight * (line++), Graphics.TOP | Graphics.LEFT);

}

// Check if AddressInfo is available

if (info != null)

{

String country = info.getFIEld(AddressInfo.COUNTRY);

String state = info.getFIEld(AddressInfo.STATE);

String city = info.getFIEld(AddressInfo.CITY);

String street = info.getFIEld(AddressInfo.STREET);

String buildingName = info.getFIEld(AddressInfo.BUILDING_NAME);

g.setColor(0x000000);

if (country != null)

g.drawString("Country: " + country, 0, lineHeight * (line++),

Graphics.TOP | Graphics.LEFT);

if (state != null)

g.drawString("State: " + state, 0, lineHeight * (line++),

Graphics.TOP | Graphics.LEFT);

if (city != null)

g.drawString("City: " + city, 0, lineHeight * (line++),

Graphics.TOP | Graphics.LEFT);

if (street != null)

g.drawString("Street: " + street, 0, lineHeight * (line++),

Graphics.TOP | Graphics.LEFT);

if (buildingName != null)

g.drawString("Building name: " + buildingName, 0, lineHeight

* (line++), Graphics.TOP | Graphics.LEFT);

}

}

7、建按鍵輸入命令事件。

/**

* Event indicating when a command button is pressed.

*

* @see Javax.microedition.lcdui.CommandListener#commandAction

(Javax.microedition.lcdui.Command,

* Javax.microedition.lcdui.Displayable)

*/

public void commandAction(Command command, Displayable d)

{

if (command == editorCmd)

{

if (coord != null)

{

editorUI.showEditor(coord, LandmarkEditorUI.MODE_ADDNEW);

}

else

{

MessageUI.showLocationDataNotAvailable();

}

}

else if (command == compassCmd)

{

TouristMIDlet.getDisplay().setCurrent(compassUI);

}

}

}

4.4.14 在模擬其中創建和運行

創建了項目所需要的所有文件後,就可以在模擬器中運行。

注意:本文實例所使用的MIDLet都使用Eclipse IDE。關於為Eclipse創建MIDLet項目,請參考Getting Started with Mobile Java section of the Java™ ME Developer's Library(http://www.forum.nokia.com/main/resources/technologIEs/java/documentation/Java_ME_developers_library.htm

也可以用命令行或者其他IDE創建結構。

注意:案例程序不能在SerIEs 40平台下運行。

4.4.15 設備開發

如果在移動設備上開發測試,需要使用USB設備器、藍牙連接器、紅外線或者其他硬件兼容連接。二者選一,還可以使用OTA技術。

關於設備的選擇和連接,請參考Getting Started with Mobile Java section of the Java™ ME Developer's Library(http://www.forum.nokia.com/main/resources/technologIEs/java/documentation/Java_ME_developers_library.htm.)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved