2015-04-20 2 views
0

Я пытаюсь вызвать метод requestLocationUpdates, но в итоге я получаю сообщение об ошибке «не может разрешить метод». Я думаю, что это из-за «этого» аргумента, но я не уверен. Я импортировал LocationListener, но это мне не помогло.Не удается разрешить запрос методаLocationUpdates

Вот моя часть кода:

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.GooglePlayServicesUtil; 
import com.google.android.gms.location.LocationListener; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MainMap extends ActionBarActivity implements LocationListener { 

    private void addMarker(){ 
     int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext()); 
     if(status!= ConnectionResult.SUCCESS){ // Google Play Services are not available 

      int requestCode = 10; 
      Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode); 
      dialog.show(); 

     }else { // Google Play Services are available 
      googleMap.setMyLocationEnabled(true); 
      LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
      Criteria criteria = new Criteria(); 
      String provider = locationManager.getBestProvider(criteria, true); 
      Location location = locationManager.getLastKnownLocation(provider); 

      if (location != null) { 
       onLocationChanged(location); 
      } 

      // troubles here 
      locationManager.requestLocationUpdates(provider, 20000, 10, this); 

     } 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     double latitude = location.getLatitude(); 
     double longitude = location.getLongitude(); 
     LatLng latLng = new LatLng(latitude, longitude); 
     googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
     googleMap.animateCamera(CameraUpdateFactory.zoomTo(20)); 
    } 

} 
+0

Какую версию Android SDK вы нацеливаете на свое приложение? –

+0

Я думаю, что все в порядке с версией sdk. Теперь у меня есть minSdkVersion 11, targetSdkVersion 21. – Denis

ответ

6

Вы импортируете LocationListener от неправильного пакета. Вы, кажется, импортировать его как:

com.google.android.gms.location.LocationListener 

но requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener) метод последний аргумент типа:

android.location.LocationListener 

как вы можете видеть here.

Изменение импортных заявлений для загрузки android.location.LocationListener должно устранить проблему.

2

Вы должны осуществлять LocationListener для MainActivityClass, а также перезаписывать реализации методов: onLocationChanged, onStatusChanged, onProviderEnabled, onProviderDisabled.

public class MainActivity extends AppCompatActivity 
      implements OnMapReadyCallback, LocationListener 

У меня такая же ошибка и ее исправление, осуществляемое, как указано выше.

+0

Привет, Ганеш, добро пожаловать в StackOverlow. Попробуйте лучше форматировать свои ответы. Вы можете использовать правки и инструменты «{}» в верхней строке, чтобы красиво форматировать фрагменты кода, подобные этому –

Смежные вопросы