這是我在連接locationClient後調用的onConnected()方法。這種方法稱爲OK,所以GPS連接正常。但是,getLastLocation()返回null,可能會因爲嘗試立即獲取某個位置而預期,並且根本沒有調用locationListener方法。 它正在三星Galaxy S3上運行。當我打開谷歌地圖應用程序,它立即得到我的位置的修復,所以GPS一定很好。Android locationClient返回null,位置更新無響應
@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;
}
設置優先級和最快的時間間隔來請求位置更新之前。我沒有看到你在哪裏做 – tyczj
我在別處做。 – fonduman