2014-09-24 188 views
1

即时通讯lat和长::|Googlemap和纬度和经度

我该怎么办:使用的LocationManager IM为刚开我的当前位置(我做对话......这给我看加载屏幕在加载

public void onLocationChanged(Location loc) 

但..即时通讯设置日志..或只是一个简单的消息..我从来没有得到这个功能的要求。

但是,如果即时通讯使用谷歌地图片段..在那里我按下按钮在右侧顶部,它的即时显示我当前的位置..如何在这种情况下正确? ?如何获得当前位置(经纬度和长度)?

我只是stucked :(

public class getLocation implements LocationListener 
    { 
     public getLocation() 
     { 
      dialog = new ProgressDialog(MainActivity.this); 
      dialog.setMessage("Loading GPS Information"); 
      dialog.setCancelable(true); 
      dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      dialog.show(); 
      lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
      new Thread() { 
       public void run() { 
        runOnUiThread(new Runnable() { 

         public void run() { 

      boolean enabled = lm 
         .isProviderEnabled(LocationManager.GPS_PROVIDER); 


        if (!enabled) { 
         Toast.makeText(MainActivity.this, "GPS NOT ENABLED" , Toast.LENGTH_SHORT).show(); 
         Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
         startActivity(intent); 
        } else{ 
         Toast.makeText(MainActivity.this, "GPS ENABLED" , Toast.LENGTH_SHORT).show(); 
         if(lm.getLastKnownLocation(LocationManager.GPS_PROVIDER) != null){ 
          Toast.makeText(MainActivity.this, "LAST LOCATION " , Toast.LENGTH_SHORT).show(); 
         } 
         else{ 
          Toast.makeText(MainActivity.this, "Last location unknown ", Toast.LENGTH_SHORT).show(); 
         } 
         lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 
           0, getLocation.this); 
        } 
         } 
         }); 
        } 
        }.start(); 

        handler = new Handler() { 
          public void handleMessage(android.os.Message msg) { 
           dialog.dismiss(); 

          }; 
         }; 

     } 
     @Override 
     public void onLocationChanged(Location loc) { 
      // TODO Auto-generated method stub = 
      if(loc!=null){ 
      if(apress){ 
       at.setText("Lat = "+loc.getLatitude()+" | Long = "+loc.getLongitude()); 
       apress=false; 
       Toast.makeText(MainActivity.this, "OnLocationChanged GPS" , Toast.LENGTH_SHORT).show(); 
       latG=loc.getLatitude(); 
       longG=loc.getLongitude(); 
       showA.setEnabled(true); 
       handler.sendEmptyMessage(0); 
      } 
      }else{ 
       Toast.makeText(MainActivity.this, "OnLocationChanged GPS Location - null" , Toast.LENGTH_SHORT).show(); 
      } 
     } 

     @Override 
     public void onProviderDisabled(String arg0) { 
      // TODO Auto-generated method stub 
      Toast.makeText(MainActivity.this, "ON PROVIDER DISABLED "+arg0 , Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onProviderEnabled(String arg0) { 
      // TODO Auto-generated method stub 
      Toast.makeText(MainActivity.this, "ON PROVIDER ENABLED "+arg0 , Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
      Toast.makeText(MainActivity.this, "ON STATUS CHANGED "+arg0 , Toast.LENGTH_SHORT).show(); 

     } 

    } 

,并在此功能

public void onLocationChanged(Location loc) { 

我从来没有得到正确的调用..它的意思是如果我在这里加入Log.e(或东西),比它从来没有显示:(

+0

你可以添加你的所有课程代码 – 2014-09-24 13:01:57

+0

hey peter! 如果我正确理解你的问题,你需要从Fragment中删除“显示位置按钮”。 第二件事你想知道你的经纬度和长 – 2014-09-24 13:02:21

+0

@TarunSharma不,我想得到cur LAT和LONG与代码不在地图上,我只是不明白为什么它不工作,但在地图上“显示位置按钮”,因为你说 - 这个按钮总是显示我在哪里:(((((我想通过代码 – Peter 2014-09-24 13:06:24

回答

0

我建议你使用这个子类;

private class GPSLocationListener implements LocationListener, 
     GpsStatus.Listener { 
    boolean isGPSFix; 

    public void onGpsStatusChanged(int event) { 
     switch (event) { 
     case GpsStatus.GPS_EVENT_SATELLITE_STATUS: 
      if (mLastLocation != null) 
       isGPSFix = (SystemClock.elapsedRealtime() - lastGPStime) < 3000; 
      if (isGPSFix) { // A fix has been acquired. 
       Toast toast = Toast.makeText(GPSLocationService.this, "GPS has a fix.", Toast.LENGTH_SHORT); 
       toast.setGravity(Gravity.CENTER, 0, 0); 
       toast.show(); 
      } else { // The fix has been lost. 
       Toast toast = Toast.makeText(GPSLocationService.this, "GPS DOES NOT have a fix.", Toast.LENGTH_SHORT); 
       toast.setGravity(Gravity.CENTER, 0, 0); 
       toast.show(); 
      } 
      break; 
     case GpsStatus.GPS_EVENT_FIRST_FIX: 
      Toast toast = Toast.makeText(GPSLocationService.this, "GPS got first fix.", Toast.LENGTH_SHORT); 
      toast.setGravity(Gravity.CENTER, 0, 0); 
      toast.show(); 
      isGPSFix = true; 
      break; 
     } 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     if(apress){ 
      try { 
       latG = location.getLatitude(); 
       longG = location.getLongitude(); 
       at.setText("Lat = "+latG +" | Long = "+longG); 
       apress=false; 
       showA.setEnabled(true); 
      } catch (Exception e) { 
       latG = 0.0; 
       longG = 0.0; 
      } 
     } 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     String statusDescription = "unknown"; 
     switch (status) { 
     case LocationProvider.OUT_OF_SERVICE: 
      statusDescription = "OUT_OF_SERVICE"; 
      break; 
     case LocationProvider.AVAILABLE: 
      statusDescription = "AVAILABLE"; 
      break; 
     case LocationProvider.TEMPORARILY_UNAVAILABLE: 
      statusDescription = "TEMPORARILY_UNAVAILABLE"; 
      break; 
     } 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     Toast toast = Toast.makeText(GPSLocationService.this, "Your GPS is opened", Toast.LENGTH_SHORT); 
     toast.setGravity(Gravity.CENTER, 0, 0); 
     toast.show(); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     Toast toast = Toast.makeText(GPSLocationService.this, "Your GPS is closed", Toast.LENGTH_SHORT); 
     toast.setGravity(Gravity.CENTER, 0, 0); 
     toast.show(); 
    } 
} 

然后使用代码从MainActivity中调用此类;

GPSLocationListener gpsLocationListener = new GPSLocationListener(); 
// get the system manager 
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener); 

不要忘记在您的清单上添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

+0

硬代码..。什么?用于清洁代码的 – Peter 2014-09-24 14:15:02

+0

。您在getLocation类构造函数上设置线程,并在此线程中使用lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,getLocation.this);再次调用getLocation类。那么你在哪里第一次调用getLocation类? – 2014-09-24 14:23:07

+0

in mainactivity。 – Peter 2014-09-25 07:50:08

0

呃...代码工作正确。只需要留在天空下正确的工作..我在家里。这就是为什么我没有得到coords(纬度和长度,谢谢所有...