2011-03-15 3 views
4

Location.java내가 그 코드에 문제가 현재의 위치 위치 안드로이드

package com.localisation; 

import java.io.IOException; 
import java.util.List; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.location.Address; 
import android.location.Geocoder; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.Window; 
import android.view.View.OnClickListener; 
import android.widget.TextView; 
import android.widget.Toast; 

public class localisation extends Activity implements OnClickListener, LocationListener{ 
    private LocationManager lManager; 
    private Location location; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //On spécifie que l'on va avoir besoin de gérer l'affichage du cercle de chargement 
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     setContentView(R.layout.main); 

     //On récupère le service de localisation 
     lManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 


     //On affecte un écouteur d'évènement aux boutons 
     findViewById(R.id.obtenir_position).setOnClickListener(this); 

    } 

     //Méthode déclencher au clique sur un bouton 
    public void onClick(View v) { 
      obtenirPosition(); 
     } 
    } 

    private void afficherLocation() { 
     //On affiche les informations de la position a l'écran 
     ((TextView)findViewById(R.id.latitude)).setText(String.valueOf(location.getLatitude())); 
     ((TextView)findViewById(R.id.longitude)).setText(String.valueOf(location.getLongitude())); 
     ((TextView)findViewById(R.id.altitude)).setText(String.valueOf(location.getAltitude())); 
    } 

    public void onProviderDisabled(String provider) { 
     //Lorsque la source (GSP ou réseau GSM) est désactivé 
     Log.i("Tuto géolocalisation", "La source a été désactivé"); 
     //...on affiche un Toast pour le signaler à l'utilisateur 
     Toast.makeText(localisation.this, 
       String.format("La source \"%s\" a été désactivé", provider), 
       Toast.LENGTH_SHORT).show(); 
     //... et on spécifie au service que l'on ne souhaite plus avoir de mise à jour 
     lManager.removeUpdates(this); 
     //... on stop le cercle de chargement 
     setProgressBarIndeterminateVisibility(false); 
    } 

    public void onProviderEnabled(String provider) { 
     Log.i("Tuto géolocalisation", "La source a été activé."); 
    } 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     Log.i("Tuto géolocalisation", "Le statut de la source a changé."); 
    } 

} 

main.xml에

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout android:id="@+id/RelativeLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <TextView android:text="Latitude" 
     android:id="@+id/TextView01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:layout_marginLeft="10dip" /> 

    <EditText android:text="0.0" 
     android:id="@+id/latitude" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:editable="false" 
     android:focusable="false" 
     android:gravity="center" 
     android:layout_marginRight="10dip" 
     android:layout_width="150dip" /> 

    <TextView android:text="Longitude" 
     android:id="@+id/TextView02" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/longitude" 
     android:layout_alignTop="@+id/longitude" 
     android:gravity="center" 
     android:layout_marginLeft="10dip" /> 

    <EditText android:text="0.0" 
     android:id="@+id/longitude" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:editable="false" 
     android:focusable="false" 
     android:gravity="center" 
     android:layout_marginRight="10dip" 
     android:layout_width="150dip" 
     android:layout_below="@+id/latitude" /> 

    <TextView android:text="Altitude" 
     android:id="@+id/TextView03" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/altitude" 
     android:layout_alignTop="@+id/altitude" 
     android:gravity="center" 
     android:layout_marginLeft="10dip" /> 

    <EditText android:text="altitude" 
     android:id="@+id/altitude" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:editable="false" 
     android:focusable="false" 
     android:gravity="center" 
     android:layout_marginRight="10dip" 
     android:layout_below="@+id/TextView02" 
     android:layout_width="150dip" /> 

    <LinearLayout android:id="@+id/LinearLayout01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/TextView03" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="10dip"> 


     <Button android:layout_height="wrap_content" 
      android:id="@+id/obtenir_position" 
      android:text="Obtenir Position" 
      android:layout_width="100dip" /> 

    </LinearLayout> 
</RelativeLayout> 

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.localisation" 
     android:versionCode="1" 
     android:versionName="1.0"> 


    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".localisation" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    </application> 
</manifest> 

를 얻을. 내 목표는 내 위치를 결정하는 것입니다 (경도, 위도 및 고도).

데이터베이스에는 경도, 위도 및 고도로 정의 된 곳이 있으며 가장 가까운 곳을 결정하고 싶습니다. (Google Map API 지도)

당신이 날 도와주세요 그리고 내가 지금 무엇을 상세하게 나를 설명 할 수 내가 현재 위치의 위도와 경도를 얻을이 코드를 사용하고

답변

11

가 대단히 감사합니다 :

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

locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000L,500.0f, locationListener); 
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

double latitude=0; 
double longitude=0; 
latitude = location.getLatitude(); 
longitude = location.getLongitude(); 
+1

변수 'locationListener'에 대한 것입니다 구글지도 안드로이드 API의 V2에 OnMyLocationChangeListener 사용하여 현재 위치를 표시에서 사용할 수 있습니까? 선언은 어디에 있습니까? 도와주세요 –

0

일반적으로 "GPS 위치를 얻으려면 어떻게해야합니까?"또는 더 구체적으로 "이 코드의 문제점"을 묻는 경우 확실하지 않습니다.

일반적인 경우 - How do I get the current GPS location programmatically in Android?에 표시됩니다. 또한 getLastKnownLocation 메서드를 사용할 때는주의해야합니다. 마지막 위치는 끔찍한 구식 일 수 있습니다. 나는 또한 당신이 실제로 그것을 필요로하기 전에 폴링 gps를 시작하는 것이 좋습니다, 때로는 몇 초 (또는 그 이상) 첫 번째 GPS를 읽는 데 걸릴 수 있습니다.

구체적으로 어떤 문제가 있는지 설명해주세요.

0

Google지도 Android API V2를 사용하여 Google지도의 현재 위치를 표시하는 Android 애플리케이션을 만듭니다.

Google Map은 SupportMapFragment를 사용하여 표시되므로이 애플리케이션을 Android API 레벨 8 이상에서 실행할 수 있습니다. Google지도 용 MapFragment를 사용하려면 API 레벨이 12 이상인 Android 기기가 필요합니다.

이 응용 프로그램은 ADT 플러그인 (21.0.0) 및 Android SDK (21.0.0)가 설치된 Eclipse 4.2.1에서 개발되었습니다. 이 응용 프로그램은 Android (2.3.6)가 설치된 실제 Android 휴대 전화에서 테스트됩니다. 이 응용 프로그램에 대한 다른 방법은

Download code