2013-01-24 4 views
0

위도와 경도를 기준으로 Google지도에서 길 찾기를 표시 할 수 있도록 내 앱의 사용자 위치를 가져와야합니다.Android GPS 사용자 위치

사용자 GPS가 꺼져 있으면 사용자에게 GPS를 켜기를 요청해야하며 GPS를 켜기 위해 설정을 가져올 수 있어야합니다.

나는 다음과 같은 시도를하고 있지만 직접 설정으로 이동하면 사용자가 멀리 찍고 싶은지 묻는 방법을 궁금해합니다.

사용자의 위도와 경도를 얻기 위해 효율적으로 사용하는 라이브러리가 있습니까?

답변

1

: 당신이 전체 예제에 관심이 있다면

// Presents dialog screen - location services 
private void askLocationDialog(){ 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 

    alertDialogBuilder.setTitle(R.string.snoox_use_location_services_dialog); 

    // set dialog message 
    alertDialogBuilder.setMessage(R.string.would_you_like_to_turn_your_location_services_on_) 
    .setCancelable(false) 
    .setPositiveButton(R.string.ok,new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int id) { 
      // opens the setting android screen 
      Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(settingsIntent); 
     } 
    }) 
    .setNegativeButton(R.string.no,new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int id) { 
      dialog.cancel(); 
     } 
    }); 

    // create alert dialog 
    alertDialogBuilder.create().show(); 
} 

내가 도움이 게시물을 발견했다.

먼저 Google지도를 통합하려면 전체 참조 정보가 here이어야합니다. 간단한 단계에서

:

1 단계 here를 따라이 화면에 간단한 구글 맵을 추가하는 데 도움이됩니다.

2 자신의 위치를 ​​가져 오려면 Android에서 LocationListener 및 LocationManager를 사용해야합니다. 이렇게하려면 먼저 위치 활동에 구현하십시오.

public class LocationActivity extends Activity implements LocationListener

3 그런 다음 당신은 정기적으로 위치 업데이트를 요청 할 수 있어야합니다

 @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Get the location manager 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    // Define the criteria how to select the provider 
    Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    provider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(provider); 

    // Initialize the location fields 
    if (location != null) { 
     System.out.println("Provider " + provider + " has been selected."); 
     onLocationChanged(location); 
    } 
    } 

4 귀하의에서 onCreate() 메소드에서 몇 가지 설정을 인스턴스화 할 필요가있다. onResume() 메소드에 이것을 포함 시키십시오.

@Override 
    protected void onResume() { 
    super.onResume(); 
    locationManager.requestLocationUpdates(provider, 400, 1, this); 
    } 

5 앱이 일시 중지주기에 속하는 경우 이러한 업데이트가 필요하지 않습니다.

2 단계에서 위치 리스너 구현은 당신이 onLocationChanged 수신기가 있어야
@Override 
    protected void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(this); 
    } 

6, 그것을 구현 :

@Override 
public void onLocationChanged(Location location) { 
int lat = (int) (location.getLatitude()); 
int lng = (int) (location.getLongitude()); 
} 

7이 두 가지 방법을 추가하여 위치 설정의 제공자 통보받을 수 - GPS 또는 네트워크.

public void onProviderDisabled(String arg0) { 
    Toast.makeText(this, "Disabled provider " + provider, 
       Toast.LENGTH_SHORT).show(); 
} 

public void onProviderEnabled(String arg0) { 
    Toast.makeText(this, "Enabled new provider " + provider, 
       Toast.LENGTH_SHORT).show(); 
} 

8 이제 Google지도에 연결해야합니다. Google지도 API를 사용하여 현재 위치를 표시하는 마켓을 생성 할 수있는 한 가지 예를 보여 드리겠습니다. 다른 용도는 API에서 추론 할 수 있습니다.

먼저 코드에서 개인 필드를 만들 :

private GoogleMap mMap; 
Marker m; 

9가에서 onCreate 방법이 추가 -이 0,0 위도와 경도로 기본 마커 위치를 인스턴스화합니다.

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
       .getMap(); 
m = mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)) 
       .title("Position")); 

10 onLocationChanged 메서드에서 위치가 변경되면이 마커를 새로 고침해야합니다.

m.setPosition(new LatLng(lat, lng)); 
m.setTitle("Your Position"); 

// Move the camera instantly to marker with a zoom 
// of 15. 
          mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 15)); 

이 당신의 위치에 마커를 업데이트하는 간단한 방법이 될 것이며, 안드로이드에서 좋은 Google지도에 대한 소개 및 위치 API해야합니다 : 그래서 추가 할 수 있습니다.

GPS가 켜져 있는지 확인하려면 @Dror에서 제공 한 답변을 사용할 수 있습니다. 도움을 받으십시오.

2

사용자가 설정 페이지로 이동하는 데 관심이 있는지 사용자에게 묻는다면 위치 서비스를 사용하려면 간단히 대화 상자를 제시하는 것이 좋습니다. 은 여기 내 프로젝트의 예입니다 : 당신은 몇 가지를 수행해야합니다 How do I find out if the GPS of an Android device is enabled