in my application i try to fetch users location but it always 0.0 for both latitude and longitude.I have seen blackberry forum but couldn't find what am i doing wrong???
code :
package com.MyChamberApp;
import javax.microedition.location.Criteria;
import javax.microedition.location.Location;
import javax.microedition.location.LocationListener;
import javax.microedition.location.LocationProvider;
public class GPS_Location {
static double longi;
static double lati;
public GPS_Location() {
}
public void location()
{
new LocationTracker();
}
class LocationTracker
{
private LocationProvider provider;
Criteria cr;
public LocationTracker()
{
resetGPS();
}
public void resetGPS() {
try {
cr = new Criteria();
cr.setPreferre开发者_高级运维dPowerConsumption(Criteria.POWER_USAGE_HIGH);
cr.setPreferredResponseTime(120000);
cr.setCostAllowed(true);
provider = LocationProvider.getInstance(cr);
provider.getLocation(120);
if (provider != null)
{
provider.setLocationListener(new MyLocationListener(), 1,1,1);
}
} catch (Exception e) {}
}
public void run(){}
private class MyLocationListener implements LocationListener
{
public void providerStateChanged(LocationProvider provider,int newState)
{
if (newState == LocationProvider.TEMPORARILY_UNAVAILABLE)
{
provider.reset();
resetGPS();
}
if (newState == LocationProvider.OUT_OF_SERVICE)
{
provider.reset();
resetGPS();
}
}
public void locationUpdated(LocationProvider provider,Location location)
{
if (location != null && location.isValid()) {
try {
lati = location.getQualifiedCoordinates().getLatitude();
longi = location.getQualifiedCoordinates().getLongitude();
} catch (Exception e) {}
}
}
}
}
}
i have tried this code on curve8300,bold9000 It works well on simulator but does not fetches value on device even if i manually refresh my gps from options-->advanced options-->gps. thanks in advance!!!!!!!!!!!!!!!!
Criteria criteria = new Criteria();
criteria.setHorizontalAccuracy(5000);
criteria.setVerticalAccuracy(5000);
criteria.setCostAllowed(true);
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_HIGH);
_locationProvider = LocationProvider.getInstance(criteria);
Location location =_locationProvider.getLocation(-1);
_longitude = location.getQualifiedCoordinates().getLongitude();
_latitude = location.getQualifiedCoordinates().getLatitude();
_altitude = location.getQualifiedCoordinates().getAltitude();
_speed = location.getSpeed();
if(_locationProvider!=null)
{
_locationProvider.setLocationListener(new LocationListenerImpl(), _interval, 1, 1);
}
this code worked for me!!!!!!!
criteria.setHorizontalAccuracy(500);
criteria.setVerticalAccuracy(500);
set horizontal and vertical accuracy to low values.this will help to some extent in terms of accuracy
精彩评论