无法使用 LocationCallback class
Cannot use LocationCallback class
我想从 LocationCallback
class (com.google.android.gms.location.LocationCallback)
覆盖 onLocationAvailability()
。
根据 this 文档,LocationCallback
是一个摘要 class。
所以我尝试扩展它,但我做不到,Android Studio 中什么也没有显示。
我尝试按照 this 的回答实现它,但是 android 工作室也不允许。
有人知道我如何使用这个 class 以便我可以使用 onLocationAvailability()
吗?
尝试将 Google Play 服务添加到您的 gradle 文件中(如果您还没有这样做的话)
dependencies {
compile 'com.google.android.gms:play-services:7.5.0'
}
解决方案:
protected LocationCallback mLocationCallback = new LocationCallback() // Implementacja abstract class
{
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
super.onLocationAvailability(locationAvailability);
if(!locationAvailability.isLocationAvailable())
{// No location available
checkLocationSettings();
Snackbar snackLocationUnavailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_unavailable, Snackbar.LENGTH_LONG);
snackLocationUnavailable.show();
}
else
{
Snackbar snackLocationAvailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_available, Snackbar.LENGTH_LONG);
snackLocationAvailable.show();
}
}
//...
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationCallback, null).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) { /** Udało się włączyć aktualizacje lokacji */
mRequestingLocationUpdates = true;
}
else {/** Nie udało się włączyć aktualizacji lokacji */
Snackbar.make(findViewById(R.id.myCoordinatorLayout), "Status Code: " + status.getStatusCode(), Snackbar.LENGTH_INDEFINITE).show();
}
}
});
private void stopLocationUpdates() {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, mLocationCallback) // trzeba było castnąć bo jakieś jaja były z LocationCallback
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if(status.isSuccess()) { /** Udało się wyłączyć aktualizacje lokacji */
mRequestingLocationUpdates = false;
}
else {/** Nie udało się wyłączyć aktualizacji lokacji */
// mRequestingLocationUpdates = true; // ?!!?
}
}
});
我想从 LocationCallback
class (com.google.android.gms.location.LocationCallback)
覆盖 onLocationAvailability()
。
根据 this 文档,LocationCallback
是一个摘要 class。
所以我尝试扩展它,但我做不到,Android Studio 中什么也没有显示。
我尝试按照 this 的回答实现它,但是 android 工作室也不允许。
有人知道我如何使用这个 class 以便我可以使用 onLocationAvailability()
吗?
尝试将 Google Play 服务添加到您的 gradle 文件中(如果您还没有这样做的话)
dependencies {
compile 'com.google.android.gms:play-services:7.5.0'
}
解决方案:
protected LocationCallback mLocationCallback = new LocationCallback() // Implementacja abstract class
{
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
super.onLocationAvailability(locationAvailability);
if(!locationAvailability.isLocationAvailable())
{// No location available
checkLocationSettings();
Snackbar snackLocationUnavailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_unavailable, Snackbar.LENGTH_LONG);
snackLocationUnavailable.show();
}
else
{
Snackbar snackLocationAvailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_available, Snackbar.LENGTH_LONG);
snackLocationAvailable.show();
}
}
//...
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationCallback, null).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) { /** Udało się włączyć aktualizacje lokacji */
mRequestingLocationUpdates = true;
}
else {/** Nie udało się włączyć aktualizacji lokacji */
Snackbar.make(findViewById(R.id.myCoordinatorLayout), "Status Code: " + status.getStatusCode(), Snackbar.LENGTH_INDEFINITE).show();
}
}
});
private void stopLocationUpdates() {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, mLocationCallback) // trzeba było castnąć bo jakieś jaja były z LocationCallback
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if(status.isSuccess()) { /** Udało się wyłączyć aktualizacje lokacji */
mRequestingLocationUpdates = false;
}
else {/** Nie udało się wyłączyć aktualizacji lokacji */
// mRequestingLocationUpdates = true; // ?!!?
}
}
});