0

我创建了位置管理器服务。有了它,我想捕捉瞬间的位置变化。我创建了一个服务类并在其中LocationListener locationListener = new LocationListener() {@Override public void onLocationChanged(Location newLocation) {。但是,听众的反应似乎很慢。我正在努力改进定位服务等级。出于这个原因,捕捉位置变化的最快、时间、方法和其他方法是什么?

也许,上面的问题对某人来说是荒谬的。一般来说,我想了解“获取设备位置的方法是什么?”

4

4 回答 4

1

我写了一个简单的类可以做到这一点:

public class GPSPosition {

private double latitude;


private double longitude;


private String date;


public GPSPosition()
{
    LocationManager service = (LocationManager)Minipark.getAppContext().getSystemService(Context.LOCATION_SERVICE);
    boolean isEnabled = service.isProviderEnabled(LocationManager.GPS_PROVIDER);
    Location location = service.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if (isEnabled)
    {
        if (location != null)
        {

            this.longitude = location.getLongitude();
            this.latitude = location.getLatitude();

            Date locDate = new Date(location.getTime());
            DateFormat df = new SimpleDateFormat("z yyyy.MM.dd. HH:mm:ss");
            df.setTimeZone(TimeZone.getTimeZone("GMT+1"));
            String gmtTime = df.format(locDate);
            int position = gmtTime.indexOf(" ");
            gmtTime = "GMT+1" + gmtTime.substring(position, gmtTime.length());
            this.date = gmtTime; //GMT+1 time
        }
        else
        {
            this.longitude = -100000;
            this.latitude = -100000;
            this.date = "-100000";
        }
    }
    else 
    {
        this.longitude = -100000;
        this.latitude = -100000;
        this.date = "-100000";

    }
}

然后我有一个计时器,它每 X 秒实例化 GPSPosition 类。

于 2013-02-14T14:46:40.527 回答
1

您可以使用 GPS 和 Internet 地理位置获取用户位置。这是我找到的最好的教程。完美工作并通过打开的选项获取位置,如果没有启用任何选项,请您转到设置。

http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

于 2013-02-14T14:01:14.330 回答
1

如果您想自己获取位置更改,您应该启动一个线程,每隔一段时间获取一次位置,请记住 GPS 会消耗大量设备电池。

干杯

于 2013-02-14T14:01:48.700 回答
1

将 GPS_PROVIDER 分配给您的位置管理器可能需要一些时间才能得到修复。如果您不需要准确性,则将 NETWORK_PROVIDER 分配给您的 LocationManger 像这样

mLocationManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 0, 0,
                mLocationListener);

或者您可以根据所花费的时间在两者之间切换......

于 2013-02-14T14:05:01.917 回答