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レベルの仕様**を
参照して調整してください。
コメント
コメントを投稿