以下是我用于查找我的应用中某个地点的纬度经度和位置的代码,但它始终显示找不到位置
我已在清单文件中添加了权限
{
LocationManager locManager;
setContentView(R.layout.main);
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000L,500.0f, locationListener);
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location != null)
{
String param = (String)locManager.getProviders(true).get(0);
Location loc = locManager.getLastKnownLocation(param);
double latitude = location.getLatitude();
double longitude = location.getLongitude();
}
}
private void updateWithNewLocation(Location location)
{
TextView myLocationText = (TextView)findViewById(R.id.widget52);
String latLongString = " ";
if (location != null)
{
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = "Lat:" + lat + "\nLong:" + lng;
}
else
{
latLongString = "No location found";
}
myLocationText.setText("Your Current Position is:\n" +
latLongString);
}
private final LocationListener locationListener = new LocationListener()
{
public void onLocationChanged(Location location)
{
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider)
{
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider)
{
}
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
};
}
请帮助我...答案 0 :(得分:0)
我已将您的代码放入Android项目并在模拟器上运行它似乎工作正常。
我会将代码更改为首先检查上一个已知位置,然后检查位置更新。
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
如果该位置为空或过于陈旧(时间戳)以满足您的需求,您可以开始请求位置更新。 (目前,您首先从GPS请求位置更新,然后决定检索其上次位置)。这可能会导致位置管理员停止查询GPS。
此外,您需要确保以下内容:
对于GPS提供商,请确保将以下权限放入清单
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
确保GPS已打开,您有足够的GPS覆盖率。
通过检查通知栏中的GPS图标
来执行此操作在真实设备上测试
虽然测试GPS位置监听器部分通过仿真器工作,但实际设备的行为总是不同。
在模拟器上调试
可以使用仿真器完成基本的GPS测试。在您的locationlistener中放置一个断点,并使用DDMS透视图将一些GPS坐标发送到您的AVD图像。
答案 1 :(得分:0)
@Siva,你的问题在于UI线程,因为你的更新来自不同的线程。
要验证这是否是UI问题,请在收到更新时放入Toast或Log cat消息。
一旦您知道该UI问题,请尝试使用Handler到postInvalidate()用户界面。