我如何获得我的Android设备的纬度和经度

时间:2011-11-21 09:35:36

标签: android

我在Android工作。我制定了一个程序来获得经度和纬度。

这是我的程序

package com.ram.currentlocation;

import android.app.Activity;    
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class Location_Gps extends Activity

{

    TextView ll;
    TextView lt;

    static double lati;
    static double longi;

/** Called when the activity is first created. */

 @Override



public void onCreate(Bundle savedInstanceState)
{

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);


  /* Use the LocationManager class to obtain GPS locations */

LocationManager mlocManager = 

(LocationManager)getSystemService(Context.LOCATION_SERVICE);

  LocationListener mlocListener = new MyLocationListener();



 mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
  }



 /* Class My Location Listener */

    public class MyLocationListener implements LocationListener


    {

    @Override

    public void onLocationChanged(Location loc)

    {


        lati= loc.getLatitude();

        longi=loc.getLongitude();

    String Text = "My current location is:" +

    "Latitud = " + loc.getLatitude() +"Longitud = " + loc.getLongitude();


    Toast.makeText( getApplicationContext(), Text,  Toast.LENGTH_SHORT).show();


       }


    @Override

    public void onProviderDisabled(String provider)

    {

    Toast.makeText( getApplicationContext(),"Gps Disabled",   Toast.LENGTH_SHORT ).show();

    }


    @Override

    public void onProviderEnabled(String provider)

    {

    Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();

    }


    @Override

    public void onStatusChanged(String provider, int status, Bundle extras)

    {


    }
    public Location_Gps getLocationCordinates()
    {
          Location_Gps location_Gps =new Location_Gps();

        return location_Gps;

    }

    }
    //---



}

但是它第一次给出纬度和经度0,0。 每当我移动我的设备然后它给出一些点。请建议我应该怎样做第一次的纵坐标。

4 个答案:

答案 0 :(得分:0)

第一次可以使用getLastKnownLocation这样的功能:

   Location locations = _locationManager.getLastKnownLocation(_provider);
   List<String>  providerList = _locationManager.getAllProviders();
   if(null!=locations && null!=providerList && providerList.size()>0) {
   double _longitude = locations.getLongitude();
   double _latitude = locations.getLatitude();
   }

答案 1 :(得分:0)

您无法在Android中同时获取GPS坐标。只有当其他人在您之前请求它们,或者您的GPS模块已打开一段时间后,您才有可能在第一次通话时接听它们。因此,经常练习听GPS模块,直到获得良好精度的坐标。

有关代码示例,请参阅官方android文档:   http://developer.android.com/guide/topics/location/obtaining-user-location.html

答案 2 :(得分:0)

Yopu有利用位置服务 - 其中有很多 每个可用的位置服务都有特定的含义,如能耗,启动时间,粗略等。我发现Reto Maier的博客条目很有用: http://android-developers.blogspot.com/search/label/Location

答案 3 :(得分:0)

这是一个已知问题,是由于GPS芯片组工程师所犯的愚蠢错误。还要注意,几乎总是知道开始的几个点有点摇晃。