我在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。 每当我移动我的设备然后它给出一些点。请建议我应该怎样做第一次的纵坐标。
答案 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芯片组工程师所犯的愚蠢错误。还要注意,几乎总是知道开始的几个点有点摇晃。
getAccuracy()
onLocationChanged(Location loc)
中的loc是否为null。 GPSStatus.Listener
获取time to first fix。在此之前的任何位置实际上都是无用的