2013-07-12 4 views
1

У меня есть приложение, которое регистрирует locationClient для обновлений. Тем не менее, приемник местоположения никогда не появляется. Появляется «тост, подключенный к GPS», поэтому я знаю, что GPS подключается нормально, но тост, отображающий координаты, не отображается, и активируемый слушатель не регистрируется. Однако регистрируется «обновление местоположения». «Коннектор» - это объект, который запускает Asynctask для получения данных базы данных. Он работает нормально.Обновления службы определения местоположения Google, игнорируя приемник местоположения (android)

@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 
      { 
      double[] coords = locationCoords(location); 
      if(coords[0] != 0) 
      { 
       map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(coords[0], coords[1]), (float) 14.5)); 

      } 
      Toast.makeText(context, coords[0] + ", " + coords[1], Toast.LENGTH_LONG).show(); 
      } 
      catch(NullPointerException e) 
      { 
       Log.d("nulls", "null"); 
      } 

     } 
    }; 
    mLocationClient.requestLocationUpdates(mLocationRequest, listener); 
    Log.d("location", "location updates initiated"); 
} 

Это журнал соответствующих бит. «map null» регистрирует другую проблему, которая заключается в том, что мой фрагмент карты Google еще не инициализирован, когда я пытаюсь его создать.

07-12 15:15:36.608: D/dalvikvm(1116): GC_FOR_ALLOC freed 133K, 9% free 3105K/3392K, paused 46ms, total 49ms 
07-12 15:15:36.618: I/dalvikvm-heap(1116): Grow heap (frag case) to 3.757MB for 635812-byte allocation 
07-12 15:15:36.688: D/dalvikvm(1116): GC_FOR_ALLOC freed <1K, 8% free 3726K/4016K, paused 65ms, total 65ms 
07-12 15:15:36.818: D/dalvikvm(1116): GC_CONCURRENT freed 2K, 7% free 3742K/4016K, paused 8ms+6ms, total 130ms 
07-12 15:15:37.208: D/null(1116): map null 
07-12 15:15:37.228: D/location(1116): location request constructed 
07-12 15:15:37.368: D/null(1116): map null 
07-12 15:15:38.198: D/dalvikvm(1116): GC_CONCURRENT freed 141K, 7% free 3994K/4260K, paused 6ms+59ms, total 252ms 
07-12 15:15:38.478: D/libEGL(1116): loaded /system/lib/egl/libEGL_emulation.so 
07-12 15:15:38.519: D/(1116): HostConnection::get() New Host Connection established 0x2a19b220, tid 1116 
07-12 15:15:38.559: D/libEGL(1116): loaded /system/lib/egl/libGLESv1_CM_emulation.so 
07-12 15:15:38.608: D/libEGL(1116): loaded /system/lib/egl/libGLESv2_emulation.so 
07-12 15:15:39.008: W/EGL_emulation(1116): eglSurfaceAttrib not implemented 
07-12 15:15:39.068: D/OpenGLRenderer(1116): Enabling debug mode 0 
07-12 15:15:39.258: D/(1116): HostConnection::get() New Host Connection established 0x2a1b0310, tid 1140 
07-12 15:15:39.268: I/Choreographer(1116): Skipped 93 frames! The application may be doing too much work on its main thread. 
07-12 15:15:40.028: D/dalvikvm(1116): GC_FOR_ALLOC freed 345K, 12% free 4030K/4564K, paused 95ms, total 106ms 
07-12 15:15:40.398: D/dalvikvm(1116): GC_CONCURRENT freed 328K, 11% free 4179K/4696K, paused 10ms+13ms, total 130ms 
07-12 15:15:41.248: D/location(1116): location updates initiated 
07-12 15:15:41.268: D/dalvikvm(1116): GC_CONCURRENT freed 611K, 17% free 4084K/4864K, paused 7ms+61ms, total 340ms 

Этот журнал с эмулятора, но такое же поведение происходит на реальном устройстве.

+0

Вы используете SupportMapFragment или MapFragment?> – yams

+0

Ну, я думал, что сделать это вопросы о GPS. Но я использую SupportMapFragment. Карта отображается нормально, я просто не могу создать объект, представляющий его в коде. – fonduman

+0

Ну, класс в xml является файлом поддержки mapfragment, но он просто имеет фрагментные теги ... <фрагмент xmlns: android = "http : //schemas.android.com/apk/res/android " android: id =" @ + id/googlemap " android: layout_width =" match_parent " android: layout_height =" match_parent " class =" com.google .android.gms.maps.SupportMapFragment "> – fonduman

ответ

0

Как правило, прямо перед тем, как я звоню и использую GoogleMap, я создаю экземпляр supportfragmentmanager, затем использую его для создания экземпляра карты. Как показано ниже, я надеюсь, что это поможет.

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    SupportMapFragment mf= (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 


    map = mf.getMap(); 

    //map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
    ll = new SecondPointLocationListener(); 

Насколько ваш метод для печати расположение использовать это вместо того, чтобы ...

@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 
      { 
      double[] coords = locationCoords(location); 
      if(coords[0] != 0) 
      { 
       map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(coords[0], coords[1]), (float) 14.5)); 

      } 

      Double latitude = location.getLatitude(); 
      Double longitude = location.getLongitude(); 
      Toast.makeText(context,"Latitude = "+ latitude + "" +"Longitude "+ longitude, 
        Toast.LENGTH_LONG).show(); 
      } 
      catch(NullPointerException e) 
      { 
       Log.d("nulls", "null"); 
      } 

     } 
    }; 
    mLocationClient.requestLocationUpdates(mLocationRequest, listener); 
    Log.d("location", "location updates initiated"); 
+0

Я использовал mMap = ((SupportMapFragment) getSupportFragmentManager(). FindFragmentById (R.id.googlemap)). GetMap(); и, кажется, удалил нулевую ошибку! Должно быть, это была глупая ошибка в попытке получить ее, как обычный фрагмент, а не фрагмент поддержки. – fonduman

+0

Нет пота, вы можете принять ответ, нажав галочку рядом с ним. – yams

+0

Означает ли это, что другие не будут отвечать на главный вопрос о приемнике GPS? – fonduman