首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> J2ME >> 可选包 >> 正文
定位API开发指南——例子:移动应用开发的定位和定位检测(9)
作者:姜 译    文章来源:诺基亚官方文档    更新时间:2006-12-26 16:56:03

此文为开发视界翻译转载者请注明出处(开发视界 www.sf.org.cn)否则追究法律责任

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;

}

}
相关文章:
Alert类的学习
NotePad完整源代码
定位API开发指南——例子:移动应用开发的定位和定位检测(8)
定位API开发指南——例子:移动应用开发的定位和定位检测(7)
定位API开发指南——例子:移动应用开发的定位和定位检测(5)
定位API开发指南——例子:移动应用开发的定位和定位检测(3)
移动信息设备配置:定位API开发指南——使用API定位
MIDP2.0中Alert的新特性
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号