GPS 활성화만으로 사용자의 위치를 파악할 수없는 이유는 무엇입니까?

13KZ

사용자에게 GPS를 켤 수있는 가능성을 제공하는 Android 프로젝트를 진행 중입니다. 응용 프로그램을 시작하려면 그의 위치가 요청됩니다.

활성화 후 LocationManager의 getLastKnownLocation을 사용하지만이 메서드는 주어진 공급자로부터 얻은 마지막으로 알려진 위치 수정의 데이터를 나타내는 Location을 반환합니다. 이 문서는 공급자를 시작하지 않고도이 작업을 수행 할 수 있다고 설명합니다. 예를 들어 장치가 꺼져 있고 다른 위치로 이동 한 경우이 위치가 최신이 아닐 수 있습니다.

그러나 사용자는 현지화 서비스를 활성화합니다. 따라서 GPS를 켜는 것만으로는 Google지도에서 기기 상단에 아이콘을 표시하고 GPS 좌표를 검색하여 GPS를 실행하는 데 충분하지 않습니다. 내 응용 프로그램이 사용자에게 GPS를 활성화 할 수있는 가능성을 제공 할 때이 아이콘이 나타나지 않습니다 (이상하게 보임).

내가 이미 읽은 Theards는 최고의 공급자를 선택한 후 getLastKnownLocation 메서드를 사용합니다. 질문은 GPS 서비스를 켠 후 놓친 것이 있습니까? GPS가 활성화되면 GPS가 자동으로 실행 되었습니까?

나는 이미 이것을 묻지 만 충분한 대답 아닙니다.

나브 니트 샤르마

지도에 파란색 점 아이콘을 표시하려면이 선을 사용하세요.

map_fragment.setMyLocationEnabled(true);

이 코드를 사용하여 위치를 얻으려는 위치를 가져옵니다.

      GPSTracker gps = new GPSTracker(this);
            Double latiDouble = gps.getLatitude();


            Double  loDouble = gps.getLongitude();

GPSTracker 클래스를 만들고이 코드를 추가합니다.

    public class GPSTracker extends Service implements LocationListener {

    private final Context mContext;
    boolean isGPSEnabled=false;
    boolean isNetworkEnabled=false;
    boolean canGetLocation=false;
    Location location;
    double latitude;
    double longitude;
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES=10;  //10 meters
    private static final long MIN_TIME_BW_UPDATES=1000*60*1; //1 minute
    private LocationManager locationManager;

    public GPSTracker(Context context)
    {
        this.mContext=context;
        getLocation();
    }

    public Location getLocation()
    {
        locationManager=(LocationManager) mContext.getSystemService(LOCATION_SERVICE);

        isGPSEnabled=locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

        isNetworkEnabled=locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if(!isGPSEnabled && !isNetworkEnabled)
        {
            //showSettingAlert();
        }
        else
        {
            this.canGetLocation=true;

            if(isGPSEnabled)
            {
                if(location==null)
                {
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES,this);
                }
                if(locationManager != null)
                {
                    location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                    if(location != null)
                    {
                        latitude=location.getLatitude();
                        longitude=location.getLongitude();
                    }
                }
            }
            if(isNetworkEnabled)
            {
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES,this);
                if(locationManager!=null)
                {
                    location=locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                            if(location!=null)
                            {
                                latitude=location.getLatitude();
                                longitude=location.getLongitude();
                            }
                }
            }

        }
        return location;
    }

    public void stopUsingGPS()
    {
        if(locationManager!=null)
        {
            locationManager.removeUpdates(GPSTracker.this);
        }
    }

    public double getLatitude()
    {
        if(location != null)
        {
            latitude=location.getLatitude();
        }
        return latitude;
    }

    public double getLongitude()
    {
        if(location != null)
        {
            longitude=location.getLongitude();
        }
        return longitude;
    }

    public boolean canGetLocation(){
        return this.canGetLocation;
    }

    public void showSettingAlert()
    {
        AlertDialog.Builder alertDialog=new AlertDialog.Builder(mContext);
        alertDialog.setTitle("GPS Settings");
        alertDialog.setMessage("GPS is not enabled .Do you want to go to settings menu ?");

        alertDialog.setPositiveButton("Settings",new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Intent i=new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                mContext.startActivity(i);
            }
        });
        alertDialog.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.cancel();
            }
        });
    }
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub


    }

    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

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

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }



}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Linux의 USB 위치로 tar / opt를 이동할 수없는 이유는 무엇입니까?

분류에서Dev

C #에서 기본적으로 부모 생성자를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

오실레이터의 재귀 속성을 음악 시퀀서를 만드는 데 사용할 수없는 이유는 무엇입니까?

분류에서Dev

Ajax 업데이트 패널이있는 사용자 정의 컨트롤에서 파일 업로드를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

Ajax 업데이트 패널이있는 사용자 정의 컨트롤에서 파일 업로드를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

IP 주소로 장치의 위치를 정확하게 파악할 수 있습니까? 그렇다면 가장 적합한 API는 무엇입니까?

분류에서Dev

getCountryFromIP PHP 함수를 사용하여 사용자 위치를 파악하고이를 기반으로 버튼을 표시하는 방법은 무엇입니까?

분류에서Dev

Material-UI에서 비활성화 된 요소에 대한 클래스를 사용자 정의 할 수없는 이유는 무엇입니까?

분류에서Dev

viewForAnnotation 메서드가 사용자의 위치를 엉망으로 만드는 이유는 무엇입니까?

분류에서Dev

exec 찾기-{}를 출력 파일 이름으로 사용할 수없는 이유는 무엇입니까?

분류에서Dev

다른 사용자를 추가 할 수없는 이유는 무엇입니까? 한 명의 사용자 만 등록 할 수 있습니다.

분류에서Dev

C #에서 while 루프의 조건으로 정수를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

Devise를 사용하여 사용자를 로그 아웃 할 수없는 이유는 무엇입니까?

분류에서Dev

"this"를 C #의 값으로 설정할 수없는 이유는 무엇입니까?

분류에서Dev

정수의 NSMutableArray를 생성 할 수없는 이유는 무엇입니까?

분류에서Dev

STATUS를 상수로 정의 할 수없는 이유는 무엇입니까?

분류에서Dev

돌연변이가 반응 구성 요소를 자체적으로 재사용 할 수 없도록 만드는 이유는 무엇입니까?

분류에서Dev

pk 또는 id로 Django 사용자를 objects.get () 할 수없는 이유는 무엇입니까?

분류에서Dev

SMB 클라이언트가 RSS를 활성화했지만 사용할 수없는 이유는 무엇입니까?

분류에서Dev

생성자에 await 연산자를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

정적 변수를 다른 변수의 값으로 초기화 할 수없는 이유는 무엇입니까?

분류에서Dev

복사 생성자에서 std :: copy를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

생성자 매개 변수 (속성 아님)를 멤버 함수의 변수로 직접 사용할 수없는 이유는 무엇입니까?

분류에서Dev

ReSharper의 ContractAnnotationAttribute가 생성자를 대상으로 할 수없는 이유는 무엇입니까?

분류에서Dev

테이블보기의 UISwitch는 사용자 지정 스위치로 비활성화 할 수 없습니다.

분류에서Dev

$ new를 사용할 때 내 범위 속성에 액세스 할 수없는 이유는 무엇입니까?

분류에서Dev

Windows가 항상 드라이버를 자동으로 설치할 수없는 이유는 무엇입니까?

분류에서Dev

그룹의 다른 구성원이 디렉토리를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

이 방법으로 사용자 입력을 확인할 수없는 이유는 무엇입니까? 파이썬

Related 관련 기사

  1. 1

    Linux의 USB 위치로 tar / opt를 이동할 수없는 이유는 무엇입니까?

  2. 2

    C #에서 기본적으로 부모 생성자를 사용할 수없는 이유는 무엇입니까?

  3. 3

    오실레이터의 재귀 속성을 음악 시퀀서를 만드는 데 사용할 수없는 이유는 무엇입니까?

  4. 4

    Ajax 업데이트 패널이있는 사용자 정의 컨트롤에서 파일 업로드를 사용할 수없는 이유는 무엇입니까?

  5. 5

    Ajax 업데이트 패널이있는 사용자 정의 컨트롤에서 파일 업로드를 사용할 수없는 이유는 무엇입니까?

  6. 6

    IP 주소로 장치의 위치를 정확하게 파악할 수 있습니까? 그렇다면 가장 적합한 API는 무엇입니까?

  7. 7

    getCountryFromIP PHP 함수를 사용하여 사용자 위치를 파악하고이를 기반으로 버튼을 표시하는 방법은 무엇입니까?

  8. 8

    Material-UI에서 비활성화 된 요소에 대한 클래스를 사용자 정의 할 수없는 이유는 무엇입니까?

  9. 9

    viewForAnnotation 메서드가 사용자의 위치를 엉망으로 만드는 이유는 무엇입니까?

  10. 10

    exec 찾기-{}를 출력 파일 이름으로 사용할 수없는 이유는 무엇입니까?

  11. 11

    다른 사용자를 추가 할 수없는 이유는 무엇입니까? 한 명의 사용자 만 등록 할 수 있습니다.

  12. 12

    C #에서 while 루프의 조건으로 정수를 사용할 수없는 이유는 무엇입니까?

  13. 13

    Devise를 사용하여 사용자를 로그 아웃 할 수없는 이유는 무엇입니까?

  14. 14

    "this"를 C #의 값으로 설정할 수없는 이유는 무엇입니까?

  15. 15

    정수의 NSMutableArray를 생성 할 수없는 이유는 무엇입니까?

  16. 16

    STATUS를 상수로 정의 할 수없는 이유는 무엇입니까?

  17. 17

    돌연변이가 반응 구성 요소를 자체적으로 재사용 할 수 없도록 만드는 이유는 무엇입니까?

  18. 18

    pk 또는 id로 Django 사용자를 objects.get () 할 수없는 이유는 무엇입니까?

  19. 19

    SMB 클라이언트가 RSS를 활성화했지만 사용할 수없는 이유는 무엇입니까?

  20. 20

    생성자에 await 연산자를 사용할 수없는 이유는 무엇입니까?

  21. 21

    정적 변수를 다른 변수의 값으로 초기화 할 수없는 이유는 무엇입니까?

  22. 22

    복사 생성자에서 std :: copy를 사용할 수없는 이유는 무엇입니까?

  23. 23

    생성자 매개 변수 (속성 아님)를 멤버 함수의 변수로 직접 사용할 수없는 이유는 무엇입니까?

  24. 24

    ReSharper의 ContractAnnotationAttribute가 생성자를 대상으로 할 수없는 이유는 무엇입니까?

  25. 25

    테이블보기의 UISwitch는 사용자 지정 스위치로 비활성화 할 수 없습니다.

  26. 26

    $ new를 사용할 때 내 범위 속성에 액세스 할 수없는 이유는 무엇입니까?

  27. 27

    Windows가 항상 드라이버를 자동으로 설치할 수없는 이유는 무엇입니까?

  28. 28

    그룹의 다른 구성원이 디렉토리를 사용할 수없는 이유는 무엇입니까?

  29. 29

    이 방법으로 사용자 입력을 확인할 수없는 이유는 무엇입니까? 파이썬

뜨겁다태그

보관