2012-12-08 1 views
1

먼저 중복에 대해 사과드립니다.이 질문을 받았지만 기존 답변을 따르려고했지만 작동하지 않습니다. 따라서 제 코드를보고 무엇이 잘못되었거나 누락되었다고 말하면 제게 많은 도움이 될 것입니다.Android 앱에서 현재 위치를 얻는 방법은 무엇입니까?

여기 활동은 로그 만 사용합니다 (GUI 없음).

import android.app.Activity; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 

public class MainActivity extends Activity implements LocationListener { 

    private LocationManager lManager; 

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

     lManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     if (lManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) 
      lManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
        0, 0, this); 
     else 
      Log.i("Test", "network provider unavailable"); 

     Location lastKnownLocation = 
       lManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

     if (lastKnownLocation != null) { 
      Log.i("Test", lastKnownLocation.getLatitude() + ", " 
        + lastKnownLocation.getLongitude()); 
      lManager.removeUpdates(this); 
     } else 
      Log.i("Test", "null"); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    public void onLocationChanged(Location location) { 
     Log.i("Test", "location changed: " + location.getLatitude() + ", " 
       + location.getLongitude()); 
    } 

    public void onProviderDisabled(String provider) { 
    } 

    public void onProviderEnabled(String provider) { 
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
} 

응용 프로그램을 실행하려고하면 모든 것이 작동하지만 위도와 경도는 로그에 표시되지 않습니다. 나는 테스트를 위해 네트워크 위치가있는 실제 장치를 사용하고 있습니다.

+1

코드는 정상적으로 보입니다. (사소한 변경 : 업데이트를 요청하기보다는 마지막으로 알려진 위치가있는 경우 업데이트를 취소 할 수 있습니다. 마지막으로 알고있는 위치가 있는지 묻고 필요한 경우에만 업데이트를 요청합니다.) 위치를 가져올 수 없음 신호가 약하거나 네트워크가 오래되었거나 오래 기다리지 않았기 때문에 ... GPS를 사용해 보셨습니까? – Sam

+0

GPS보다 네트워크 속도가 느려지므로 GPS를 사용하지 않아 정확성이 필요하지 않습니다. 게다가 테스트 및 로그보기를 위해 PC에 연결된 실내 장치가 필요합니다. 나는 그것이 네트워크를 통해 행해질 수 있기를 바랬으며, 나는 꽤 오래 기다렸다. 얼마나 걸릴 수 있습니까? –

+0

이상적인 조건에서 위치를 잡는 데는 몇 분 밖에 걸리지 않습니다. 몇 분이 걸리면 신호가 들리지 않습니다. (나는 밖으로 나가서 수정을해야만한다.) 모의 위치로 시험을 해보자. – Sam

답변

2

휴대 전화 회사가 해당 정보를 제공하지 않는 이유는 (NETWORK_PROVIDER가 셀룰러 안테나 삼각 측량을 사용하여 위치를 결정합니다. 휴대 전화 회사가 귀하에게이 정보를 제공하거나 거부 할 수 있음).