2011-07-06 14 views
0

可能な二重に現在の場所の緯度経度を取得する:
How to get Latitude and Longitude of the mobiledevice in android?
はどのようにアンドロイド

は、私が唯一の緯度と経度を見つけるまっすぐコードが必要です。 私はこれをwebservice経由で送って、近くのホテルを取得したいと考えています。

私は多くのコードを使いましたが、うまく機能しましたが、しばらく時間がかかりました。 もし誰かがそのコードを望むなら、私はそれも非常に良いことを提供することができます。

Thanx all。

+0

はい、複製されています。 – davidcesarino

+0

[こちら](http://stackoverflow.com/questions/3145089/what-is-the-simplest-and-most-robust-way-to-get-the-users-current-location-in-an ) 役職。私の意見では、Fedorのコードはこれまでのベストソリューションの1つです(特にlat/lonを一度使用するだけであれば)、間違いなく動作します。 – iDroid

+0

Thanx iDroid私はすでに同じコードを使用していますが、このアプリケーションが何度もクラッシュするという問題があります。だから私は簡単なコードを探していた。 – sandy

答えて

4
public class HomeActivity extends Activity implements LocationListener{ 
public static Context mContext; 
private double latitude, longitude; 
public LocationManager mLocManager; 
// *******This is the new Code start on 11/4/2011 at 3 o'clock 


/** 
* This is the Home Button if user Login then it is move to TennisAppActivity otherwise move to Login 
* 
*/ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    mContext=this; 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.homelayout); 


    mLocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
      this); 
    mLocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 
      0, this); 
    locationUpdate(); 
    ((Button) this.findViewById(R.id.ButtonHome)) 
      .setOnClickListener(new OnClickListener() { 
       public void onClick(View arg0) { 

         startActivity(new Intent(HomeActivity.this, 
           DefaultDisplay.class)); 

       } 
      }); 

    ((Button) this.findViewById(R.id.ButtonProfile)) 
      .setOnClickListener(new OnClickListener() { 

       public void onClick(View arg0) { 
        if (GUIStatics.boolLoginStatus) { 
         startActivity(new Intent(HomeActivity.this, 
           MyProfile.class)); 
        } else { 
         Intent intent=new Intent(HomeActivity.this, 
           Login.class); 
         intent.putExtra("moveTo","MyProfile"); 
         startActivity(intent); 
        } 
       } 
      }); 

    ((Button) this.findViewById(R.id.ButtonNotifications)) 
      .setOnClickListener(new OnClickListener() { 

       public void onClick(View arg0) { 
        if (GUIStatics.boolLoginStatus) { 
         startActivity(new Intent(HomeActivity.this, 
           ShowAllNotificationActiviry.class)); 
        } else { 
         Intent intent=new Intent(HomeActivity.this, 
           Login.class); 
         intent.putExtra("moveTo","ShowAllNotificationActiviry"); 
         startActivity(intent); 
        } 
       } 
      }); 

    ((Button) this.findViewById(R.id.ButtonFavorites)) 
      .setOnClickListener(new OnClickListener() { 

       public void onClick(View arg0) { 
        if (GUIStatics.boolLoginStatus) { 
         startActivity(new Intent(HomeActivity.this, 
           FavoritesActivity.class)); 
        } else { 
         Intent intent=new Intent(HomeActivity.this, 
           Login.class); 
         intent.putExtra("moveTo","FavoritesActivity"); 
         startActivity(intent); 
        } 
       } 
      }); 

      ((Button) this.findViewById(R.id.ButtonMore)) 
      .setOnClickListener(new OnClickListener() { 
       public void onClick(View arg0) { 
         startActivity(new Intent(HomeActivity.this, 
           MoreListActivity.class)); 
       } 
      }); 

} 

public void locationUpdate() 
{ 
    CellLocation.requestLocationUpdate(); 
} 


public void getAddress(double lat, double lng) { 
    Geocoder geocoder = new Geocoder(HomeActivity.mContext, Locale.getDefault()); 
    try { 
     List<Address> addresses = geocoder.getFromLocation(lat, lng, 1); 
     Address obj = addresses.get(0); 
     String add = obj.getAddressLine(0); 
     GUIStatics.currentAddress = obj.getSubAdminArea() + "," 
       + obj.getAdminArea(); 
     GUIStatics.latitude = obj.getLatitude(); 
     GUIStatics.longitude = obj.getLongitude(); 
     GUIStatics.currentCity= obj.getSubAdminArea(); 
     GUIStatics.currentState= obj.getAdminArea(); 
     add = add + "\n" + obj.getCountryName(); 
     add = add + "\n" + obj.getCountryCode(); 
     add = add + "\n" + obj.getAdminArea(); 
     add = add + "\n" + obj.getPostalCode(); 
     add = add + "\n" + obj.getSubAdminArea(); 
     add = add + "\n" + obj.getLocality(); 
     add = add + "\n" + obj.getSubThoroughfare(); 

     Log.v("IGA", "Address" + add); 
     // Toast.makeText(this, "Address=>" + add, 
     // Toast.LENGTH_SHORT).show(); 

     // TennisAppActivity.showDialog(add); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 
} 



public void onLocationChanged(Location location) { 
    latitude = location.getLatitude(); 
    longitude = location.getLongitude(); 
    GUIStatics.latitude=location.getLatitude(); 
    GUIStatics.longitude= location.getLongitude(); 
    Log.v("Test", "IGA" + "Lat" + latitude + " Lng" + longitude); 
    //mLocManager.r 

    getAddress(latitude, longitude); 
    if(location!=null) 
    { 

    mLocManager.removeUpdates(this); 
    } 
    // Toast.makeText(this, "Lat" + latitude + " Lng" + longitude, 
    // Toast.LENGTH_SHORT).show(); 
} 


public void onProviderDisabled(String arg0) { 
    // TODO Auto-generated method stub 
    Toast.makeText(HomeActivity.this, "Gps Disabled", Toast.LENGTH_SHORT).show(); 
    Intent intent = new Intent(
      android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
    startActivity(intent); 
} 


public void onProviderEnabled(String arg0) { 
    // TODO Auto-generated method stub 

} 


public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
    if(arg1 == 
      LocationProvider.TEMPORARILY_UNAVAILABLE) { 
            Toast.makeText(HomeActivity.this, 
      "LocationProvider.TEMPORARILY_UNAVAILABLE", 
      Toast.LENGTH_SHORT).show(); 
         } 
         else if(arg1== LocationProvider.OUT_OF_SERVICE) { 
            Toast.makeText(HomeActivity.this, 
      "LocationProvider.OUT_OF_SERVICE", Toast.LENGTH_SHORT).show(); 
         } 

} 

}

これは、AndroidでGEO coadingを使用して、ユーザ現在の緯度と経度を取得するためのコードです。 私はそれがあなたに役立つことを願っています。