androidとbluetoothLEの通信に必要なpermissionの種類02

androidにおいてbluetooth LEデバイスと通信をするアプリを

作成する場合、


android manifest xmlファイルには


どのようなpermissionを設定すればいいのでしょうか?



AndroidでBluetooth LEデバイスと通信するアプリを作成する場合、

`AndroidManifest.xml`に必要な権限を明示的に指定する必要があります。


以下に典型的な設定を示します。


### 1. Bluetooth基本機能の権限


```xml


<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />



```


- **`BLUETOOTH`**: 


Bluetooth機能を使用するために必要です。



- **`BLUETOOTH_ADMIN`**: 


Bluetoothの有効化・無効化や、

ペアリングなどの管理操作を実行する場合に必要です。



---


### 2. Bluetooth LEに関する追加権限(API 31以降)


Android 12(API 31)以降、Bluetooth関連の権限が細分化されました。


Bluetooth LEデバイスとの通信には以下の権限が必要です。



```xml


<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />



```


- **`BLUETOOTH_SCAN`**: 

Bluetoothデバイスをスキャンする場合に必要です。



- **`BLUETOOTH_CONNECT`**: 

Bluetoothデバイスと接続を確立する場合に必要です。



- **`ACCESS_FINE_LOCATION`**: 

スキャン時に位置情報が必要となる場合があります(BLEデバイススキャンで使用)。


### 注意


- Android 10(API 29)以降、Bluetoothスキャンは位置情報に依存するため、

**位置情報権限(`ACCESS_FINE_LOCATION`または

`ACCESS_COARSE_LOCATION`)**が必要です。



- Android 12(API 31)以降では、

`BLUETOOTH_SCAN`や`BLUETOOTH_CONNECT`が新しく導入され、

それぞれ明示的にリクエストする必要があります。



---


### 3. 実行時権限


Android 6.0(API 23)以降では、

一部の権限(例: `ACCESS_FINE_LOCATION`、`BLUETOOTH_SCAN`など)は

**実行時にリクエスト**する必要があります。


以下はその例です。


#### 実行時権限のリクエスト例 (Kotlin)



```kotlin


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {


    val permissions = arrayOf(

        Manifest.permission.BLUETOOTH_SCAN,

        Manifest.permission.BLUETOOTH_CONNECT,

        Manifest.permission.ACCESS_FINE_LOCATION

    )

    ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE)

} else {


    val permissions = arrayOf(

        Manifest.permission.ACCESS_FINE_LOCATION

    )

    ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE)

}



```


---


### 4. 追加情報(オプション)


アプリがバックグラウンドでBLEスキャンを行う場合、

以下の権限も必要です。



```xml


<uses-permission android:name=

"android.permission.ACCESS_BACKGROUND_LOCATION" />



```


- **`ACCESS_BACKGROUND_LOCATION`**: 

アプリがバックグラウンドでBLEスキャンを実行する場合に必要です

(Android 10以降)。


---



### `AndroidManifest.xml`の完全例


以下はBluetooth LEを使用する典型的なアプリの権限設定例です。



```xml


<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.mybluetoothapp">


    <uses-permission android:name="android.permission.BLUETOOTH" />

    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />


</manifest>



```


---


必要な権限はアプリの対象APIレベルや想定している

デバイスとの通信方式によって異なるため、


**Googleの公式ドキュメント**や**ターゲットAPIレベルの仕様**を

参照して調整してください。






コメント