I've следующего кода, получить текущее местоположение уплотнительного устройства:Места слушателя есть проблемы в работы в некоторых устройствах и проблемах мигрировать в FusedLocationListener
public class MapPlace extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener
{
private LocationRequest mLocationRequest;
private GoogleApiClient mGoogleApiClient;
private Location mLastLocation;
// location coordinates
double dLatitude = 0.0;
double dLongitude = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_place);
if (mGoogleApiClient == null || !mGoogleApiClient.isConnected())
{
buildGoogleApiClient();
mGoogleApiClient.connect();
}
MapFragment mapF = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
if (mapF != null)
mapF.getMapAsync(this);
}
protected synchronized void buildGoogleApiClient()
{
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override
public void onConnected(Bundle bundle) {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {}
@Override
public void onLocationChanged(Location location)
{
mLastLocation = location;
dLatitude = mLastLocation.getLatitude();
dLongitude = mLastLocation.getLongitude();
}
}
}
Этого код работает отлично, но в некоторых устройствах не работает , чтобы добиться успеха с помощью этого кода, я должен перезапустить устройство или закрыть его и снова открыть, поэтому я хочу избежать этой проблемы.
Как рекомендовать stack overflow aswer я пытался перейти на LocationFusedLocation, чтобы решить эту проблему, но я столкнуться с некоторыми проблемами при добавлении GooglePlayServicesClient реализует в классе Java, потому что эта библиотека временно осуждается как сказал этот link. Итак ... что я могу сделать? Есть ли другой способ сделать это?
ответ на этот вопрос для второго звена показывает вам, как зарегистрироваться на месте обновляет новый путь, так следует, что – tyczj
Похоже, все, что вам нужно сделать, это переместить весь код из OnCreate() (за исключением setContentView()) в onResume(), и ваши проблемы должны исчезнуть. –
@ DanielNugent нормально, я попробую –