チュートリアル - ANDROID-STEP1
目次
1. 概要 1.1 ネットワーク構成 1.2 前提条件 2. テキスト送受信アプリの導入 3. テキスト送受信アプリの操作 3.1 画面遷移 3.2 初期画面 3.3 設定画面 3.4 主画面 付録 A.1 ソースコード A.2 既知の問題
1. 概要
Android版の SINETStreamライブラリ の使用例として、 GUI操作でユーザが入力した任意文字列をSINETStream経由で送受信する「テキスト送受信アプリ」(以降「本アプリ」と略記)を実装しました。 本書では、本アプリのAndroid端末への導入と設定、操作方法などについて概説します。
1.1 ネットワーク構成
本アプリは、Writer
とReader
の両方の機能を具備します。
ユーザがGUI操作で指定した任意の文字列は、SINETStreamメッセージとして対向のBroker
に送信されます。
Broker
が配信した内容を再び本アプリで受信してGUI画面に表示するという動作の流れになります。
またBroker
への接続情報やSINETStreamの動作パラメータなどの諸元をGUI操作で設定し、
その内容に応じてAndroid版の
SINETStream設定ファイル
を自動生成するための設定画面も用意してあります。
Broker
に関しては本書の範囲外ですので、別途記述されたものを参照ください。
1.2 前提条件
-
Android端末の動作環境
- Android 8.0(APIレベル26)以上であること
- Android版の SINETStreamライブラリ は、足回りのメッセージングシステムとして MQTT(Eclipse Mosquitto) に対応しています。
- MQTTのAndroid版の実装である Paho MQTT Android Client ライブラリを利用しており、この動作条件(Android8.0以上)の影響です。
- Android 8.0(APIレベル26)以上であること
-
バックエンドシステムの事前準備
- 本チュートリアルの範囲では、Android端末と対向する
Broker
だけを用意すれば十分です。 - バックエンド側のホストサーバにて、
docker run
コマンドにより本チュートリアル用のコンテナイメージの導入とサーバプログラム群の起動を実施します。 Android側の作業着手前にこちらを済ませてください。 - 手順詳細は、前項に戻り 3.1 バックエンド側の作業 (その1) を参照ください。
- 本チュートリアルの範囲では、Android端末と対向する
-
ネットワーク環境
- 本アプリを実行するAndroid端末と
Broker
とはIP(Internet Protocol)ネットワークで接続されます。 携帯電話網やWi-Fiを介して両者のIP疎通を確保してください。
- 本アプリを実行するAndroid端末と
2. テキスト送受信アプリの導入
現状では、本アプリはGooglePlayからではなくNII管理サーバから配布します。
別紙 Androidサンプルアプリケーションの導入 を参照して所用のものを導入してください。アプリ更新時も同様の手順です。
3. テキスト送受信アプリの操作
3.1 画面遷移
<凡例>
- Androidのホーム画面(a)にて、アイコン
Echo
を押下して本アプリを起動する。 - 起動画面(b)にて、アイコンと著作者を一瞬表示して初期画面(c)に遷移する。
- 初期画面(c)にて、ボタン
Settings
押下により設定画面(d)に遷移する。 - 設定画面(d)にて、ボタン
BACK
押下により初期画面(c)に戻る。 - 初期画面(c)にて、ボタン
Run
押下により主画面(e)に遷移する。 - 主画面(e)にて、ボタン
BACK
押下により初期画面(c)に戻る。 - 初期画面(c)にて、ボタン
BACK
押下によりホーム画面(a)に戻る。
各画面の構成および操作詳細は後述します。
3.2 初期画面
本アプリの起動直後に表示される初期画面です。
Run
ボタン- 本アプリの主画面
Main
を起動する - 主画面の処理が終わると、この初期画面に戻る
- 本アプリの主画面
Settings
ボタン- 本アプリの設定画面
Settings
を起動する - 設定画面の処理が終わると、この初期画面に戻る
- 本アプリの設定画面
- メニューボタン
- 画面上部のタイトル右端の「縦3つの点」を押下すると、メニューが展開される
Help
:ヘルプ表示About
:このアプリについて
- 画面上部のタイトル右端の「縦3つの点」を押下すると、メニューが展開される
本アプリ導入直後のように、
SINETStream設定ファイル
が存在していない、あるいは現在の設定内容が必須項目を満足していない場合、
Run
ボタンが無効化(灰色表示)され、画面下部にはユーザに対応を促すメッセージが表示されます。
このような場合、まずはSettings
ボタンを押下してSINETStreamの動作環境設定操作を実行してください。
3.3 設定画面
Android版の
SINETStreamライブラリ
を使うためには、
SINETStream設定ファイル
を「対向Broker
との接続条件に適合するよう」設定する必要があります。
このためGUI操作によるSINETStream設定画面(Settings)を用意しています。 以下に示すように項目内容に応じた階層構造の画面構成となっています。
本アプリ起動後の初期画面からボタンSettings
を押下して設定画面に遷移し、
(もろもろの設定操作を経て)初期画面に戻る際にSINETStream設定ファイル
が自動生成されます。
既存の設定内容から変更が発生した場合は同設定ファイルが更新されます。
まずはBroker
と接続するため、以下の項目を必ず設定してください。
他の項目は放置で構いません。プログラム既定値が使われます。
- サービス名:
Service -> Service Name
- トピック名:
Service -> Topic Name
Broker
接続情報(アドレス、ポート)Brokers -> IP Address (or FQDN)
Brokers -> Port Number
このチュートリアルで例示したBroker
であれば以下のように設定することになります。
実際のBroker
のアドレスはお使いの環境に合わせてください。
Service Name | Topic Name | IP Address (or FQDN) | Port Number |
---|---|---|---|
test-service | test-topic | xx.xx.xx.xx | 1883 |
ここで
Topic Name
は通信チャネル識別子として使われる文字列です。 任意の値を指定して構わないのですが、特にSTEP1の使い方においては、 バックエンドシステムの都合上、予約語sensor-data
を避けてください。
3.4 主画面
初期画面からボタンRun
を押下して主画面(Main)を表示し、GUI操作による文字列データ送受信を実行します。
主画面は上下2段(上段が送信欄、下段が受信欄)に分割されており、それぞれWriter
機能とReader
機能を提供します。
Writer
とReader
が同じ
SINETStream設定ファイル
を参照するため、対向Broker
に関してサービスとトピックを共有しており、
結果的にBroker
折り返しでメッセージを送受信する動作となります。
主画面の動作概要は、以下のようになります。
- 初期画面から主画面に遷移する際に、
Writer
とReader
の双方が独立にBroker
に接続する。 Writer
とReader
の双方がBroker
との接続が完了すると、送信欄で文字列入力が可能になる。- 適当な文字列を入力すると、
SEND
ボタンが有効になる。 SEND
ボタンを押下すると、入力文字列がBroker
宛に送信される。Broker
から配信された内容が受信欄に表示される。- 主画面から初期画面に戻る際に、
Writer
とReader
の双方がBroker
との接続を切る。
なお、主画面の送信欄でユーザが入力した内容はSINETStreamメッセージv1.2
形式のペイロードとしてBroker
に送信されます。
受信欄では、SINETStreamメッセージの各項目(timestamp
, data
)とBroker
接続時のトピック名を併せてMessage
として表示します。
- Message
- topic: トピック名
- timestamp: ISO8601形式の日付時刻情報
- data: 入力したテキストデータ
付録
A.1 ソースコード
本アプリのソースコードは GitHub で公開しています。 もし何か不具合がありましたら連絡いただけると助かります。
ソース修正が必要な方は、Android開発環境 Android Studio をお手元の機材に導入して、上記ソースコードを取り込んでください。
A.2 既知の問題
-
情報セキュリティ機能の実装状況
機能項目 実装状況 ユーザ認証 済み SSL/TLS通信 済み データ暗号化 開発中 -
GUIの設定画面とSINETStream設定ファイルの対応
- 実装の都合上、GUIの設定画面での対応項目は SINETStream設定ファイル を網羅しておらず、サブセットとなります。