01.BLE通信が可能か確認する処理の作成
プロジェクトの作成を行います。
プロジェクトに対して、BLE通信をするために必要な設定を行います。
BLE通信が可能か確認する処理を作成します。
Bluetooth機能が有効になっていない場合には、有効化要求を行います。
解説
Androidで、BLE通信をするために必要な設定は以下です。
- minSdkVersion と targetSdkVersion は、「API19 : Android 4.4」以降を指定します。
「API18 : Android 4.3」以前は、BLE非対応です。
「API23 : Android 6.0」以降は、BLEを使用するために、位置情報機能(≒GPS機能)を有効にする必要があります。
今回、minSdkVersion と targetSdkVersion は、「API21 : Android 5.0」を指定します。 - マニフェストファイルにて、「BLEの機能を使用する宣言」と「BLEの機能を使用するためのパーミッションの宣言」を行います。
Androidで、BLE通信が可能か確認する処理は、以下です。
- 「Android端末がBLEをサポートしてるか」の確認を、以下の処理により行います。
getPackageManager().hasSystemFeature( PackageManager.FEATURE_BLUETOOTH_LE ) - 「Android端末がBluetoothをサポートしているか」の確認を、以下の処理により行います。
BluetoothManager bluetoothManager = (BluetoothManager)getSystemService( Context.BLUETOOTH_SERVICE );
mBluetoothAdapter = bluetoothManager.getAdapter(); - 「Android端末のBluetooth機能が有効になっているか」の確認を、以下の処理により行います。
mBluetoothAdapter.isEnabled()
上記以外に、今回やっていることは、以下です。
- Android端末のBluetooth機能が有効になっていない場合は、以下の処理により、「Bluetooth機能の有効化要求」ダイアログを表示します。
Intent enableBtIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE );
startActivityForResult( enableBtIntent, REQUEST_ENABLEBLUETOOTH ); - 「Bluetooth機能の有効化要求」ダイアログの結果(許可する/許可しない)は、onActivityResult関数で確認します。
実装
プロジェクトの作成
プロジェクトを作成します。
「Welcome」画面の「Start a new Android Studio project」をクリックします。
「Application name」に「BLE Communicator」と入力します。
「Company domain」に会社のドメイン名を指定します。
「Project location」にプロジェクトを保存するフォルダパスを指定します。
「Next」ボタンを押します。
「Minimum SDK」を「API21: Android 5.0 (Lollipop)」にします。
「Next」ボタンを押します。
「Empty Activity」を選択し、「Next」ボタンを押します。
(変更なし)
「Finish」を押します。
しばらく待ちます。
Android Studio のステータスバーに「Gradle build finished in ・・・」と出るまで待ちます。
以上で、プロジェクトができました。
targetSdkVersionの修正
targetSdkVersionを修正します。
「Project」ペインの「Gradle Scripts > build.gradle (Module.app)」を開きます。
「targetSdkVersion」行を探し、
「targetSdkVersion 21」に変更します。
ファイルを上書き保存します。
メニュー「Build > Rebuild Project」で、リビルドし、エラー、警告がないことを確認します。
「BLEの機能を使用する宣言」および「BLEの機能を使用するためのパーミッションの宣言」
「BLEの機能を使用する宣言」および「BLEの機能を使用するためのパーミッションの宣言」を行います。
「Project」ペインの「app > manifests > AndroidManifest.xml」を開きます。
以下の機能使用宣言、パーミッション宣言を追加します。
「AndroidManifest.xml」全体としては、以下のようにします。
ファイルを上書き保存します。
文字列リソースの追加
文字列リソースを追加します。
「Project」ペインの「app > res > values > strings.xml」を開きます。
以下のトースト用の文字列の定義を追加します。
「strings.xml」全体としては、以下のようにします。
ファイルを上書き保存します。
MainActivity.java の編集
MainActivity.java を編集します。
「Project」ペインの「app > java > ドメイン.blecommunicator > MainActivity」を開きます。
必要な定数宣言とメンバー変数宣言を追加します。
「MainActivity.java」全体としては、以下のようにします。
onCreateメンバ関数に、「Android端末がBLEをサポートしてるかの確認」と「Bluetoothアダプタの取得」の処理を追加します。
「onCreateメンバ関数」全体としては、以下のようにします。
「Android端末のBluetooth機能の有効化要求」の処理を追加します。
onResume関数、requestBluetoothFeature関数、onActivityResult関数を、MainActivityクラスの末尾に追加します。
「MainActivity.java」全体としては、以下のようにします。
ファイルを上書き保存します。
「Cannot resolve symbol」エラーは、「Alt + Enter」で、必要なクラスをimportします。
リビルドし、エラー、警告がないことを確認します。
実行
Android端末にて、動作確認。
Bluetooth機能を有効にして、ソフトを起動した場合は、何事もなく起動します。
Bluetooth機能を無効にして、ソフトを起動すると、有効化要求ダイアログが表示されます。
「許可する」にすると、ソフトは起動します。
「許可しない」にすると、ソフトは起動しません。
ダウンロード
サンプルプロジェクト
(github.com上のダウンロードページ)