본문 바로가기
Android

안드로이드 스튜디오 구글맵을 통한 위도랑 경도만 받아오기

by 일용직 코딩노동자 2019. 10. 24.
728x90
반응형

클래스딴 전역으로

double Latitude,Longitude; //위도경도

선언해줍니다.

 final LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        final LocationListener gpsLocationListener = new LocationListener() {
            public void onLocationChanged(Location location) {
                String provider = location.getProvider(); //위치
                 Latitude = location.getLongitude(); //위도
                 Longitude = location.getLatitude(); //경도
                double altitude = location.getAltitude(); //고도

//                textView.setText("위치정보 : " + provider + "\n" +
//                        "위도 : " + Latitude + "\n" +
//                        "경도 : " + Longitude + "\n" +
//                        "고도  : " + altitude);
            }
            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
            public void onProviderEnabled(String provider) {
            }
            public void onProviderDisabled(String provider) {
            }
        };

        if ( Build.VERSION.SDK_INT >= 23 &&
                ContextCompat.checkSelfPermission( getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED ) {
            ActivityCompat.requestPermissions( MainActivity.this, new String[] {  android.Manifest.permission.ACCESS_FINE_LOCATION  },
                    0 );
        }
        else{
            Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            String provider = location.getProvider(); //위치
            Latitude = location.getLongitude(); // 위도
            Longitude = location.getLatitude(); // 경도
            double altitude = location.getAltitude(); // 고도

//            textView.setText("위치정보 : " + provider + "\n" +
//                    "위도 : " + Latitude + "\n" +
//                    "경도 : " + Longitude + "\n" +
//                    "고도  : " + altitude);

            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    1000,
                    1,
                    gpsLocationListener);
            lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                    1000,
                    1,
                    gpsLocationListener);
        }

위도와 경도값을 계속 보고싶으시다면 주석으로된 textView를 풀어서 사용해보시면 됩니다.

 

앱을 실행시켰을때 위치권한을 물어보는 퍼미션체크도 필요합니다.

private void Permissions(){
        // 권한 물어서 권한안되어있으면 권한 셋팅해주기
        int permissionCheck1 = ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET);
        if(permissionCheck1 == PackageManager.PERMISSION_DENIED)
            ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.INTERNET},1);

        int permissionCheck2 = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);
        if(permissionCheck2 == PackageManager.PERMISSION_DENIED)
            ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION},1);

        int permissionCheck3 = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
        if(permissionCheck3 == PackageManager.PERMISSION_DENIED)
            ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION},1);
    }

 

다음은 메니페스트입니다.

<!-- 구글맵 -->
    <permission android:name="com.lx.location.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.lx.location.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 구글맵 -->

    <!-- 인터넷사용 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 인터넷사용 -->

    <!-- 위치권한 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <!-- 위치권한 -->
    
    <uses-feature android:glEsVersion="0x00020000"
        android:required="true"/>
        
        <!-- 이거필수 -->
        <uses-library android:name="com.google.android.maps"/>
        <uses-library android:name="org.apache.http.legacy"
            android:required="false"/>
        <!-- 이거필수 -->
        
        <!-- 이거필수 -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="구글에서받은 API키 입니다."
            />
        <meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>
        <!-- 이거필수 -->

 

궁금하신 사항은 댓글 남겨주세요.

728x90
반응형

댓글