gpt4 book ai didi

java - 黑莓 - 开始 GPS 编码,应用程序找不到位置

转载 作者:行者123 更新时间:2023-12-02 08:11:42 24 4
gpt4 key购买 nike

我正在学习使用 Blackberry 的 GPS,并且一直在遵循 Beginning Blackberry 书中处理 GPS 的部分,但代码中的某些内容是错误的,因为该应用程序只进行到“获取位置:”。我尝试从繁荣下载源代码,以防我错过了一些东西,但这也不起作用。我知道我的设备的 GPS 可以正常工作,因为我已经测试了 SDK 中的示例应用程序。下面是我的代码。

LocationHandler.java

public class LocationHandler extends Thread{
private MyScreen screen;

public LocationHandler(MyScreen screen){
this.screen = screen;
}

public void run(){
Criteria criteria = new Criteria();
criteria.setVerticalAccuracy(50);
criteria.setHorizontalAccuracy(50);
criteria.setCostAllowed(true);
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_HIGH);

try{
screen.setMessage("Getting location...");
LocationProvider provider = LocationProvider.getInstance(criteria);
Location location = provider.getLocation(-1);

QualifiedCoordinates qualifiedCoordinates = location.getQualifiedCoordinates();

screen.setLocation(qualifiedCoordinates.getLongitude(), qualifiedCoordinates.getLatitude());
String message = "Successfully got location, method: ";

int method = location.getLocationMethod();

if((method & Location.MTA_UNASSISTED)==Location.MTA_ASSISTED){
message += "Unassisted GPS";
}

if((method & Location.MTE_CELLID)==Location.MTE_CELLID){
message += "Cell site";
}

message += "\nHorizontal (Longitude) Accuracy: ";
message += qualifiedCoordinates.getHorizontalAccuracy();

message += "\nVertical (latitude) Accuracy: ";
message += qualifiedCoordinates.getVerticalAccuracy();

screen.setMessage(message);
}catch(LocationException e){
screen.setMessage("Location Exception: " + e.getMessage());
}catch (InterruptedException ex){
screen.setMessage("InteruptedException: " + ex.getMessage());
}
}
}

MyScreen.java

public final class MyScreen extends MainScreen
{
private LabelField latitudeLbl;
private LabelField longitudeLbl;
private RichTextField messageField;

public MyScreen()
{
HorizontalFieldManager latManager = new HorizontalFieldManager();
latManager.add(new LabelField("Latitude: "));
latitudeLbl = new LabelField("");
latManager.add(latitudeLbl);

add(latManager);

HorizontalFieldManager longManager = new HorizontalFieldManager();
longManager.add(new LabelField("Longitude: "));
longitudeLbl = new LabelField("");
longManager.add(longitudeLbl);

add(longManager);
messageField = new RichTextField();
add(messageField);
}

private void update(){
LocationHandler handler = new LocationHandler(this);
handler.start();
}

protected void makeMenu(Menu menu, int instance) {
super.makeMenu(menu, instance);
menu.add(new MenuItem("Update", 10, 10) {
public void run() {
update();
}
});
}

public void setLocation(double longitude, double latitude){
synchronized(UiApplication.getEventLock()){
longitudeLbl.setText(Double.toString(longitude));
latitudeLbl.setText(Double.toString(latitude));
}
}

public void setMessage(String message){
synchronized(UiApplication.getEventLock()){
messageField.setText(message);
}
}
}

最佳答案

尝试检测您是否在 LocationProvider.getInstance(criteria) 处收到 LocationException。如果是,则操作系统无法找到与您的条件 LP 匹配的内容,因此请尝试使用其他条件。

如果它确实返回有效的 LP,那么它仍然可能在 provider.getLocation(-1) 上失败。有各种异常(exception)/情况。检查API了解详情。在大多数情况下,您会收到 LocationException (如果无法检索位置或超时期限已过)或 SecurityException (如果调用应用程序没有权限)查询位置信息)。

关于java - 黑莓 - 开始 GPS 编码,应用程序找不到位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com