我有一个可以很好地通过 LocationListener 获取用户 GPS 位置的应用程序。我可能已经改变了一些东西,但它不再起作用了。
该错误似乎与提供者 LocationManager.GPS_PROVIDER 有关,如果我使用的是 LocationManager.NETWORK_PROVIDER 它可以工作。所以我认为问题与GPS有关。我可以在日志中看到一些奇怪的东西:
1-28 16:52:23.120: D/StatusBarPolicy(2815): [GPS ICON] updateGps : GPS is on, but not receiving fixes
清单中的权限是可以的:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
而且我找不到更多相关信息。
我已经在我的 Eclipse 和设备上尝试了基本的清理/重启(我没有在模拟器上测试)。我快要生气了,有人知道在那之前要尝试什么吗?
编辑 :
这是一些愚蠢的简单代码,它们也不起作用。我错过了什么吗?
package com.mytest;
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.util.Log;
public class GPSTestActivity extends Activity implements LocationListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Log.v("test", "launched");
}
@Override
public void onLocationChanged(Location location) {
Log.v("test", "location received ! "+location.getLatitude()+";"+location.getLongitude());
}
@Override
public void onProviderDisabled(String provider) {
Log.v("test", "location provider disabled");
}
@Override
public void onProviderEnabled(String provider) {
Log.v("test", "location provider enabled");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.v("test", "location provider status changed");
}
}
编辑:见 Daniele 的回答评论