我正在开发一个BB应用程序,我需要获得当前的位置。
在使用v5.0的BB机型中没问题,但是在带v6.0的BB中,我总是将locationProvider设为null。 (gps已开启)。
任何人都知道会发生什么以及如何解决它?
我使用的代码是:
private boolean startLocationUpdate() {
boolean retval = false;
try {
Criteria criteria = new Criteria();
criteria.setCostAllowed(true);
criteria.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);
criteria.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
locationProvider = LocationProvider.getInstance(criteria);
if (locationProvider == null) {
Runnable showGpsUnsupportedDialog = new Runnable() {
public void run() {
Dialog.alert("GPS is not supported on this platform...");
// System.exit( 1 );
}
};
UiApplication.getUiApplication().invokeAndWait(
showGpsUnsupportedDialog); // Ask event-dispatcher
// thread to display dialog
// ASAP.
} else {
locationProvider.setLocationListener(
new LocationListenerImpl(), interval, 1, 1);
retval = true;
}
} catch (LocationException le) {
System.err
.println("Failed to instantiate the LocationProvider object, exiting...");
System.err.println(le);
System.exit(0);
}
return retval;
}
谢谢!
答案 0 :(得分:0)
根据Criteria的API文档,您正在请求Cellsite模式。 LocationProvider.getInstance()的文档指定:
a LocationProvider meeting the defined criteria or null if a LocationProvider that meets the defined criteria can't be returned but there are other supported available or temporarily unavailable providers that do not meet the criteria.
因此,API告诉您不支持Cellsite,但还有其他支持的模式可用。如果您想使用GPS,您需要指定一个要求自治模式的标准。