안드로이드 블루투스 (classic bl) #1 권한설정

나고수·2022년 6월 26일
0

Android

목록 보기
81/109
post-thumbnail

안드로이드 (저전력 bl) 말고 classic bl 연결 및 데이터 전송방법 등을 알아봅시다.

정확한 내용은 공홈에 잘 적혀있습니다.

//manifest.xml
//bl 권한 설정

<!--bluetooth-->
    <uses-permission
        android:name="android.permission.BLUETOOTH"
        android:maxSdkVersion="30" />
    <uses-permission
        android:name="android.permission.BLUETOOTH_ADMIN"
        android:maxSdkVersion="30" />
    <uses-permission
        android:name="android.permission.ACCESS_FINE_LOCATION"
        android:maxSdkVersion="30" />
    <uses-permission
        android:name="android.permission.ACCESS_COARSE_LOCATION"
        android:maxSdkVersion="30" />
    <uses-permission
        android:name="android.permission.ACCESS_BACKGROUND_LOCATION"
        android:maxSdkVersion="30" /> 
//로케이션 권한은 블루투스로 실제위치를 파싱하느냐 아니냐에 따라 권한요구가 달라질것 같습니다. 
    <uses-permission
        android:name="android.permission.BLUETOOTH_SCAN"
        android:usesPermissionFlags="neverForLocation" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

    <uses-feature
        android:name="android.hardware.bluetooth"
        android:required="true" />
//.kt
//runtime 권한 요청

	//버전 12 미만 블루투스 권한 체크
    private val requestBlPermissionsBeforeS =
        registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
            if (result.resultCode == RESULT_OK) {
                //granted
            } else {
                //deny
            }
        }
        
    //버전 12 미만 위치권한 체크     
    private val requestLocationPermission =
        registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
            permissions
        }        

    //버전 12 이상 블루투스 권한 체크
    private val requestBlPermissionsAfterS =
        registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->}
        
    private fun requestBluetoothPermission() {
        //버전 12 이상
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            requestBlPermissionsAfterS.launch(
                arrayOf(
                    Manifest.permission.BLUETOOTH_SCAN,
                    Manifest.permission.BLUETOOTH_CONNECT                )
            )
        } else {
            //버전 12 미만
            val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
            requestBlPermissionsBeforeS.launch(enableBtIntent)
            requestLocationPermission.launch(
                arrayOf(
                    Manifest.permission.ACCESS_COARSE_LOCATION,
                    //이 아래 부분은 필요 없을지도?
                    Manifest.permission.BLUETOOTH_ADMIN,
                    Manifest.permission.BLUETOOTH,
                )
            )
        }
    }        
profile
되고싶다

0개의 댓글

관련 채용 정보