03.BLEデバイスとの接続・切断の処理を作る03.BLEデバイスとの接続・切断の処理を作るBLEデバイスと接続する処理、BLEデバイスとの接続を切断する処理を作成します。解説BLEデバイスと接続するためにすべきことは、以下です。ConnectGattコールバックオブジェクトを定義します。ConnectGattコールバックオブジェクトの定義にて、接続状態が変わったときの処理であるonConnectionStateChange関数を定義し、ソフトウェア固有の処理(ボタンの有効無効処理、等)を行うようにします。BluetoothAdapterオブジェクトを用いて、BLEデバイスのオブジェクトを取得します。);))取得したBLEデバイスオブジェクトを用いて、connectGatt関数を呼び出す。第3引数には、1.で作成したConnectGattコールバックオブジェクトを指定します。);BLEデバイスと切断するためにすべきことは、以下です。BluetoothGattオブジェクトを用いて、close関数を呼び出します。(mBluetoothGatt.close();)BluetoothGattオブジェクトを開放します。null;)上記以外に、今回やっていることは、以下です。「Connect」ボタンで接続、「Disconnect」ボタンで接続を切断します。(onClick関数において、「Connect」ボタンの場合は、connect関数を呼び出します。「Disconnect」ボタンの場合は、disconnect関数を呼び出します。)「BLEデバイス検出アクティビティ」から戻ってきた際には、自動で内部的に「Connect」ボタンをクリックします。(onResume関数で、「Connect」ボタンオブジェクトのcallOnClick関数を呼び出します)接続可能範囲から外れて切断された場合には、接続可能範囲に入ったら自動接続するようにします。(BluetoothGattコールバックオブジェクトについて、切断完了時に、接続可能範囲に入ったら自動接続するために、mBluetoothGatt.connect()を呼び出します。)実装プロジェクトを開く02.で作成したプロジェクトを開きます。必要な文字列定義を追加します。strings.xml」を開きます。「Connect」ボタン用の文字列の定義と、「Disconnect」ボタン用の文字列の定義を追加します。name="disconnect">Disconnect</string>「strings.xml」全体としては、以下のようにします。</resources>ファイルを上書き保存します。レイアウトの編集メインアクティビティのレイアウトを編集します。activity_main.xml」を開きます。デバイス名と、デバイスアドレスを表示するためのTextViewの下に、「Connect」ボタンと「Disconect」ボタンを設置します。</LinearLayout>activity_main.xmlの内容を以下のようにします。</LinearLayout>メインアクティビティクラスのメンバー変数の追加メインアクティビティに、必要な定数宣言とメンバー変数宣言を追加します。BluetoothGattオブジェクト、「Connect」ボタンオブジェクト、「Disconnect」ボタンオブジェクトの変数宣言を追加します。「MainActivity」クラスの定数、変数の宣言を以下のようにします。Enter」で、必要なクラスをimportします。リビルドし、エラー、警告がないことを確認します。メインアクティビティクラスのonCreate関数の編集メインアクティビティのonCreate関数に、必要な処理を追加します。「Connect」ボタン、「Disconnect」ボタンの取得とクリックリスナーの設定の処理を追加します。onCreate関数を、以下のようにします。View.OnClickListener」を追加します。(・・・省略・・・)ボタンのクリックリスナーを実装します。「MainActivity」クラスの末尾に、以下を追加します。接続・切断の関数を追加します。「MainActivity」クラスの末尾に、以下を追加します。mBluetoothGattがnullでないなら接続済みか、接続中。mBluetoothGatt.disconnect()ではなく、mBluetoothGatt.close()しオブジェクトを解放する。理由:「ユーザーの意思による切断」と「接続範囲から外れた切断」を区別するため。1「ユーザーの意思による切断」は、mBluetoothGattオブジェクトを解放する。再接続は、オブジェクト構築から。2「接続可能範囲から外れた切断」は、内部処理でmBluetoothGatt.disconnect()処理が実施される。切断時のコールバックでmBluetoothGatt.connect()を呼んでおくと、接続可能範囲に入ったら自動接続する。}メインアクティビティクラスにBluetoothGattコールバッククラスのオブジェクトの定義の追加BluetoothGattコールバッククラスのオブジェクトの定義を追加します。接続完了したときの処理と、接続可能範囲から外れて切断されたときの処理を追加します。「MainActivity」クラスのメンバ変数宣言の直後、onCreate関数の前に、以下を追加します。接続状態変更(connectGatt()の結果として呼ばれる。接続可能範囲に入ったら自動接続するために、mBluetoothGatt.connect()を呼び出す。Enter」で、必要なクラスをimportします。リビルドし、エラー、警告がないことを確認します。メインアクティビティクラスのonResume関数の編集onResume関数を編集します。初回表示時および復帰時には、「Connect」ボタン、「Disconnect」ボタンが無効となるように処理を追加します。初回表示時および復帰時に、デバイスアドレスが空でなければ、接続ボタンが有効になるように処理を追加します。初回表示時および復帰時には、「Connect」ボタンが自動で押されるように処理を追加します。デバイスアドレスが空でなければ、接続ボタンを有効にする。onDestroy関数を追加します。onPause関数では、切断の関数を呼びます。onDestroy関数では、BluetoothGattコールバッククラスのオブジェクトを削除します。onResume関数の直後に、以下を追加します。}実行BLEモジュールの準備。Arduinoからのキャラクタリスティックの値の書き込み」に従い、BLEモジュールを準備しておきます。Android端末にて、動作確認。「Connect」ボタンと「Disconnect」ボタンは無効となっています。右上の「検出」アイコンをタップすると、「BLEデバイス検出アクティビティ」に移行します。検出されたBLEデバイスの名前をタップすると、「メインアクティビティ」に戻ります。Addres」欄に、BLEデバイスの名前とアドレスが表示されます。「Connect」ボタンは自動で押され、BLEデバイスに接続します。接続が完了すると「Disconnect」ボタンが有効となります。「Disconnect」ボタンを押すと、BLEデバイスとの接続が切断されます。切断が完了すると「Connect」ボタンが有効となります。コンタクト」よりお願いいたします。コンタクト」より連絡していただけると幸いです。