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

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

編輯:J2ME

4.4.12 運行ProviderQueryUI

1、建ProviderQueryUI類

2、入必要的類

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

import Javax.microedition.lcdui.Alert;

import Javax.microedition.lcdui.AlertType;

import Javax.microedition.lcdui.Command;

import Javax.microedition.lcdui.CommandListener;

import Javax.microedition.lcdui.Displayable;

import Javax.microedition.lcdui.Form;

import Javax.microedition.lcdui.StringItem;

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

3、建ProviderQueryUI類,並定義類、常量和命令。

/**

* VIEwer class that is responsible for all the UI actions when the application

* is seaching for the location provider.

*/

public class ProviderQueryUI

{

/** Status information Form */

private Form searchForm = new Form("Seaching location provider...");

/** StringItem showing the current status. */

private StringItem infoItem = new StringItem("Status:", "");

/** Provider cost selection command - Yes. */

private Command yesCmd = new Command("Yes", Command.OK, 1);

/** Provider cost selection command - No. */

private Command noCmd = new Command("No", Command.STOP, 1);

/** A boolean indicating may user allow location provider cost. */

private boolean result = false;

private static final String COST_QUERY_MESSAGE = "Cost free location providers

can not be found. Do you with continue "

+ "search with providers that cost?";

private static final String OUT_OF_SERVICE_MESSAGE = "All Location providers

are currently out of service. Please unsure "

+ "that location-providing module is properly connected.";

private static final String SEACHING_FREE_PROVIDERS = "Seaching for free

location providers.";

private static final String SEACHING_COST_PROVIDERS = "Seaching for providers

that may cost.";

private static final String NOT_FOUND_MESSAGE = "Try again after locationproviding

module is properly connected.";

private static final String NO_FREE_SERVICE_SERVICE_MESSAGE = "Cost free

location providers can not be found. Please ensure "

+ "that location-providing module is properly connected.";

4、建類結構

/**

* Construct the UI with default values.

*/

public ProviderQueryUI()

{

infoItem.setText(SEACHING_FREE_PROVIDERS);

searchForm.append(infoItem);

}

5、建方法,顯示“無法提供服務”和“沒有免費的定位服務”信息。

/**

* Show out of service error message.

*/

public void showOutOfService()

{

Alert alert = new Alert("Error", OUT_OF_SERVICE_MESSAGE, null,

AlertType.ERROR);

alert.setTimeout(Alert.FOREVER);

TouristMIDlet.getDisplay().setCurrent(alert, searchForm);

infoItem.setText(NOT_FOUND_MESSAGE);

}

/**

* Show no cost free location provider found error message.

*/

public void showNoFreeServiceFound()

{

Alert alert = new Alert("Error", NO_FREE_SERVICE_SERVICE_MESSAGE, null,

AlertType.ERROR);

alert.setTimeout(Alert.FOREVER);

TouristMIDlet.getDisplay().setCurrent(alert, searchForm);

infoItem.setText(NOT_FOUND_MESSAGE);

}

6、建方法,詢問用戶使用定位服務的費用。

/**

* Query the user whether the use of location provider may cost. The use of

* this method is locked with synchronized keyWord, so only one thread can

* Access this method at once.

*

* @return a boolean indicating may user allow location provider cost.

*/

public synchronized boolean confirmCostProvider()

{

Alert alert = new Alert("Confimnation", COST_QUERY_MESSAGE, null,

AlertType.CONFIRMATION);

alert.addCommand(yesCmd);

alert.addCommand(noCmd);

alert.setTimeout(Alert.FOREVER);

// Set the monitoring object to be this instance.

final ProviderQueryUI hinstance = this;

// Add a CommandLister as anomynous inner class

alert.setCommandListener(new CommandListener()

{

/*

* 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 == yesCmd)

{

infoItem.setText(SEACHING_COST_PROVIDERS);

result = true;

synchronized (hinstance)

{

// Wake up the monitoring object

hinstance.notifyAll();

}

}

else if (command == noCmd)

{

result = false;

infoItem.setText(NOT_FOUND_MESSAGE);

synchronized (hinstance)

{

// Wake up the monitoring object

hinstance.notifyAll();

}

}

}

});

TouristMIDlet.getDisplay().setCurrent(alert, searchForm);

// Wait indefinitely for notification.

try

{

wait();

}

catch (InterruptedException e)

{

e.printStackTrace();

}

TouristMIDlet.getDisplay().setCurrent(searchForm);

return result;

}

}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved