http://developer.android.com/training/location/retrieve-current.htmlから参照されているように、新しく導入された融合ロケーション プロバイダーを使用してみてはどうでしょうか。
public static class MyActivity extends Activity
implements
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener,
LocationListener {
private LocationRequest lr;
private LocationClient lc;
Location location;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// inflate view
lr = LocationRequest.create();
lr.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
lc = new LocationClient(this,
this, this);
lc.connect();
}
@Override
public void onLocationChanged(Location location) {
//Get new Location here.
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
}
@Override
public void onConnected(Bundle connectionHint) {
lc.requestLocationUpdates(lr, this);
// get last Location
location = lc.getLastLocation();
}
@Override
public void onDisconnected() {
}
}