애플리케이션에서 블루투스 기능을 사용하려면 두 개의 권한을 선언해야 합니다. 그중 첫 번째는 Bluetooth 입니다. 이 권한은 연결 요청, 연결 수락 및 데이터 전송과 같은 블루투스 통신을 수행하는 데 필요합니다.
두 번째로 선언해야 하는 권한은 ACCESS_FINE_LOCATION입니다. 앱에 이 권한이 필요한 이유는 블루투스 스캔을 사용하여 사용자 위치에 대한 정보를 수집할 수 있기 때문입니다. 이 정보는 사용자 본인의 기기에서 가져올 수도 있고, 상점 및 교통 시설과 같은 위치에서 사용 중인 블루투스 비콘에서 가져올 수도 있습니다.
앱이 Android 9(API 레벨 28) 이하를 대상으로 하는 경우 ACCESS_FINE_LOCATION 권한 대신 ACCESS_COARSE_LOCATION 권한을 선언할 수 있습니다.
- ACCESS_FINE_LOCATION : GPS, 네트워크를 사용해 위치 정보 확인
- ACCESS_COARSE_LOCATION : 네트워크만 사용해 위치 정보 확인
포그라운드 위치
앱에 위치 정보를 한 번만 또는 정의된 시간 동안 공유하거나 수신하는 기능이 BLE와 Location Permission 있으면 이 기능에는 포그라운드 위치 정보 액세스 권한이 필요합니다. 몇 가지 예는 다음과 같습니다.
- 내비게이션 앱 내에서 사용자가 세부 경로 안내를 받을 수 있는 기능
- 메시지 앱 내에서 사용자가 현재 위치를 다른 사용자와 공유할 수 있는 기능
앱의 기능이 다음 상황 중 하나에서 기기의 현재 위치에 액세스한다면 시스템은 앱에서 포그라운드 위치를 사용하고 있다고 간주합니다.
- 앱에 속한 활동이 표시됩니다.
- 앱에서 포그라운드 서비스를 실행하고 있습니다. 포그라운드 서비스를 실행하고 있을 때 시스템은 지속적으로 알림을 표시하여 사용자 인지도를 높입니다. 앱은 사용자가 기기의 홈 버튼을 누르거나 기기 화면을 끌 때와 같이 백그라운드에 배치되면 액세스 권한을 유지합니다.
<!-- Recommended for Android 9 (API level 28) and lower. --> <!-- Required for Android 10 (API level 29) and higher. --> <service android:name="MyNavigationService" android:foregroundServiceType="location" ... > <!-- Any inner elements would go here. --> </service>
- 또한 다음 코드 스니펫과 같이
location
의 포그라운드 서비스 유형을 선언하는 것이 좋습니다. Android 10(API 수준 29) 이상에서는 이 포그라운드 서비스 유형을 선언해야 합니다.
다음 스니펫과 같이 앱에서 ACCESS_COARSE_LOCATION 권한이나 ACCESS_FINE_LOCATION 권한을 요청하면 포그라운드 위치의 필요성을 선언합니다.
<manifest ... >
<!-- To request foreground location access, declare one of these permissions. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
정밀도 수준은 요청하는 권한에 따라 다릅니다.
ACCESS_COARSE_LOCATION
도시 블록 내에 위치 정확성을 제공합니다. ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION
을 요청할 때 제공되는 위치보다 더 정확한 위치를 제공합니다. 이 권한은 저전력 블루투스(BLE)를 통해 근처 기기에 연결과 같은 일부 연결 작업에 필요합니다.
백그라운드 위치
앱 내 기능이 지속적으로 다른 사용자와 위치를 공유하거나 Geofencing API를 사용하는 경우 앱에는 백그라운드 위치 정보 액세스 권한이 필요합니다. 몇 가지 예는 다음과 같습니다.
- 가족 위치 공유 앱 내에서 사용자가 가족 구성원과 지속적으로 위치를 공유할 수 있는 기능
- IoT 앱 내에서 사용자가 집을 나갈 때 꺼지고 집에 돌아올 때 다시 켜지도록 홈 기기를 구성할 수 있는 기능
시스템은 앱이 포그라운드 위치 섹션에서 설명된 상황 이외의 모든 상황에서 기기의 현재 위치에 액세스한다면 앱에서 백그라운드 위치를 사용하고 있다고 간주합니다.
Android 10(API 수준 29) 이상에서 개발자는 런타임 시 백그라운드 위치 정보 액세스 권한을 요청하기 위해 앱 매니페스트에서 ACCESS_BACKGROUND_LOCATION 권한을 선언해야 합니다. 이전 버전의 Android에서는 앱이 포그라운드 위치 정보 액세스 권한을 수신하면 자동으로 백그라운드 위치 정보 액세스 권한도 수신합니다.
<manifest ... >
<!-- Required only when requesting background location access on
Android 10 (API level 29) and higher. -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
[ 출처 : Android Developer ]
'Domain > Android' 카테고리의 다른 글
[Android] Keystore 생성하기 ( Android KeyStore / Release / Debug / APK / Bundle ) (0) | 2021.08.13 |
---|---|
[Android] LiveData (0) | 2021.04.23 |
[Android] MediaStore ( Android 11 / Android 버전 대응 / Storage 정책 ) (0) | 2021.04.23 |
[Android] 위치정보 권한 ( Android10 Location / Location Permission / COARSE_LOCATION / FINE_LOCATION / BACKGROUND_LOCATION ) (0) | 2021.04.23 |
[Android] MVC vs. MVP vs. MVVM (0) | 2020.09.21 |
댓글