Android locationClient返回null,位置更新无响应
这是在连接locationClient后调用的OnConnectiond()方法。此方法称为ok,因此GPS连接良好。但是,getLastLocation()返回null,这可能是由于尝试过早获取位置而导致的,并且根本没有调用locationListener方法。 它正在三星Galaxy S3上运行。当我打开谷歌地图应用程序时,它会立即确定我的位置,所以GPS肯定没问题Android locationClient返回null,位置更新无响应,android,gps,locationlistener,Android,Gps,Locationlistener,这是在连接locationClient后调用的OnConnectiond()方法。此方法称为ok,因此GPS连接良好。但是,getLastLocation()返回null,这可能是由于尝试过早获取位置而导致的,并且根本没有调用locationListener方法。 它正在三星Galaxy S3上运行。当我打开谷歌地图应用程序时,它会立即确定我的位置,所以GPS肯定没问题 @Override public void onConnected(Bundle arg0) { Toast.ma
@Override
public void onConnected(Bundle arg0)
{
Toast.makeText(context, "GPS connected", Toast.LENGTH_SHORT).show();
connector = new Connector();
connector.execute("clues", null, null);
listener = new LocationListener()
{
@Override
public void onLocationChanged(Location location)
{
Log.d("location", "listener activated");
try
{
coords = locationCoords(location);
if(coords[0] != 0)
{
meMarker = map.addMarker(new MarkerOptions()
.position(new LatLng(coords[0], coords[1]))
.title("Me")
.snippet("Your position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(coords[0], coords[1]), (float) 19));
}
Toast.makeText(context, coords[0] + ", " + coords[1], Toast.LENGTH_LONG).show();
}
catch(NullPointerException e)
{
Log.d("nulls", "null");
}
}
};
mLocationClient.requestLocationUpdates(mLocationRequest, listener);
try
{
coords = locationCoords(new Location(mLocationClient.getLastLocation()));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(coords[0], coords[1]), (float) 19));
}
catch(NullPointerException e)
{
Toast.makeText(context,"location null", Toast.LENGTH_LONG).show();
}
//Toast.makeText(context, coords[0] + ", " + coords[1], Toast.LENGTH_LONG).show();
Log.d("location", "location updates initiated");
}
定义请求参数:
public dbConnector(Context con, Activity acti, GoogleMap map)
{
context = con;
activity = acti;
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
setGPSUpdates(10000, 5000);
mLocationRequest.setInterval(updateRate);
mLocationRequest.setFastestInterval(fastestUpdate);
mLocationRequest.setSmallestDisplacement(1);
Log.d("location", "location request constructed");
this.map = map;
}
public void setGPSUpdates(int update, int fastupdate)
{
updateRate = update;
fastestUpdate = fastupdate;
}
谷歌地图应用程序使用GPS和网络定位 使用GPS,第一次定位通常会有一段时间到达。而且,它在外面工作得很好,在里面却很糟糕。(同时,确保GPS已启用) 此代码适用于我:
public class MainActivity extends Activity implements LocationListener {
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
// GPS is disabled
}
}
@Override
protected void onStart() {
super.onStart();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, this);
}
@Override
protected void onStop() {
locationManager.removeUpdates(this);
super.onStop();
}
@Override
public void onLocationChanged(Location location) {
// do something with the fix
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
等了10分钟,没有修好。出去了,没修好。打开谷歌地图,即时修复。这不是GPS本身的问题,一定是出了什么问题……我用的是谷歌API。它在5天前就开始工作了,后来有一天它决定停止工作。我可以试着换成更传统的定位服务系统。@fonduman那你在那5天里改变了什么?如果您没有更改任何内容,那么您的代码可能没有任何问题。你尝试重新启动设备了吗?在GPS停止工作之前,我定义了地图标记并将其放入侦听器。重新启动设备,无更改。请在请求位置更新之前设置优先级和最快间隔。我不知道你在哪里做的