05.受信側ソフトウェア実装
送信側ソフトウェア、すなわちスマートフォンのソフトウェア、すなわちAndroidのプログラムの実装。
使用開発環境は、Android Studio 2.3.3 です。
実装手順については、「ホーム > プログラミング > BLE通信ソフトを作る ( Android Studio 2.3.3 + RN4020 )」参照。
受信側ソフトウェアの仕様
受信側ソフトウェア、すなわちスマートフォンのソフトウェア、すなわちAndroidアプリの仕様
ソフトウェア設定に関する仕様
- ユーザーの操作により、コーヒーサーバーが満杯の時のセンサー値を設定できる。(設定値変数名 : FullSensorValue)
- ユーザーの操作により、コーヒーサーバーが空の時のセンサー値を設定できる。(設定値変数名 : EmptySensorValue)
- ユーザーの操作により、コーヒーサーバーの容量(コーヒーカップ数)を設定できる。(設定値変数名 : CoffeeServerSize)
BLE通信に関する仕様
- ユーザーの操作により、BLEデバイスのスキャンを行うことができる。
- ユーザーの操作により、BLEデバイスに接続することができる。
- BLEデバイスと接続中は、通知(Notify)により、BLEデバイスのキャラクタリスティックの値が更新されると、表示している値(センサー値とコーヒー残量)が更新される。
- 表示している値の更新後、BLE通信を切断する。
コーヒー残量表示に関する仕様
- 「0 >= FullSensorValue」のときは、設定値が正しくない。「Invalid [Full Sensor Value] setting.」と表示する。
- 「0 >= EmptySensorValue」のときは、設定値が正しくない。「Invalid [Empty Sensor Value] setting.」と表示する。
- 「0 >= CoffeeServerSize」のときは、設定値が正しくない。「Invalid [Coffee Server Size] setting.」と表示する。
- 「FullSensorValue <= EmptySensorValue」のときは、設定値が正しくない。「Invalid settings.」と表示する。
- コーヒー残量を以下の式で算出
(SensorValue - EmptySensorValue ) * CoffeeServerSize / ( FullSensorValue - EmptySensorValue ) - コーヒー残量が、-1.0 より小さいときは、コーヒーサーバーが乗っていない。「No Coffee Server.」と表示する。
- コーヒー残量が、0.2 より小さいときは、コーヒーがほとんど残っていない。「Almost none.」と表示する。
- コーヒー残量が、0.2 以上のときは、コーヒーがまあまあ残っている。「○○ [cups]」と表示する。
コード
マニフェストファイル
マニフェストファイルにて、「BLEの機能を使用する宣言」と「BLEの機能を使用するためのパーミッションの宣言」を行います。
「AndroidManifest.xml」 を、以下のようにします。
レイアウト
BLEデバイスを検出中かどうかを表す状況表示用のメニュー項目のレイアウトを作成します。
「actionbar_indeterminate_progress.xml」 を、以下のようにします。
BLEデバイスの検出結果をリスト表示する際のリストアイテムのレイアウトを作成します。
「listitem_device.xml」 を、以下のようにします。
BLEデバイスの検出結果をリスト表示するデバイスリストアクティビティのレイアウトを作成します。
「activity_device_list.xml」 を、以下のようにします。
テキストプリファレンスを表示する際に設定値を右側に表示するためのレイアウトを作成します。
「widget_preferencevalue..xml」 を、以下のようにします。
メインアクティビティのレイアウトを作成します。
「activity_main.xml」 を、以下のようにします。
メニュー
デバイスリストアクティのメニューを作成します。
「activity_device_list.xml」 を、以下のようにします。
メインアクティビティのメニューを作成します。
「activity_main.xml」 を、以下のようにします。
文字列リソース
文字列リソースを追加します。
「Strings.xml」 を、以下のようにします。
プリファレンス画面
プリファレンス画面のリソースを追加します。
「preferences.xml」 を、以下のようにします。
設定値を右側に表示するテキストプリファレンス
テキストプリファレンスを表示する処理を担う「EditTextPreference」クラスを拡張し、テキストプリファレンスを表示する際に設定値を右側に表示する「DisplayValueEditTextPreference」クラスを作成します。
「DisplayValueEditTextPreference」 を、以下のようにします。
プリファレンスアクティビティ
設定の確認/変更を表示する「マイプリファレンスアクティビティ」クラスを作成します。
「MyPreferenceActivity」 を、以下のようにします。
デバイスリストアクティ
BLEデバイスを検出した結果をリスト表示する「デバイスリストアクティビティ」クラスを作成します。
「DeviceListActivity」 を、以下のようにします。
メインアクティビティ
メインクラスである「メインアクティビティ」クラスを作成します。
「MainActivity.java」 を、以下のようにします。
ダウンロード
Androidプロジェクト
(github.com上のダウンロードページ)
関連ページ
前項目:04.送信側ソフトウェア実装
次項目:06.動作確認