前回の「AndroidでRS-232C機器を使う(その5)」に引き続き、磁気カードリーダ用サンプルプログラム(MagneticCardReader01)の説明です。
今回はサンプルプログラムのソースを例にポイントとなる処理を説明していきます。
USB Serial Converterに関する最新トピック
2013年9月よりUSBコネクタにMicro-Bタイプを採用した製品『REX-USB60MB』を発売しています。
この製品ではUSB変換ケーブルが不要となり、直接Micro-Bコネクタへ装着することが可能です。
REX-USB60MB用にAndroid版簡易ターミナルアプリ『USB60Term』をGoogle Playにて公開しており、ご購入後、すぐにお使いいただけます。
REX-USB60MBは、最新のAndroid端末 Nexus 5 および Nexus 7 (2013) *注1 で動作確認済みです。
*注1) Nexus 7 (2013)で Android OS 4.3 の場合、USBデバイスとして検出されないことが確認されています。
その場合はOSバージョンを4.4へアップデートする必要があります。
1.マニフェストファイル「AndroidManifest.xml」
AndroidManifest.xmlでは、対象とするUSBデバイスを特定するためのインテントフィルタを設定します。
<Activity>エレメントの中に以下を指定します。
① android:launchMode=”singleTask”
Activity起動方法をsingleTaskに設定します。
② <action android:name=”android.hardware.usb.action.USB_DEVICE_ATTACHED” />
<intent-filter>エレメントで対象とするUSBデバイスを特定するためのインテントフィルタを設定します。
③<meta-data action android:name=”android.hardware …. USB_DEVICE_ATTACHED” android;resource=”@xml/device_filter” />
<meta-data> エレメントには次で説明するXMLリソースファイルを指定します。
3. Javaソースファイル「Main.java」
D2xxManagerクラスとFT_Deviceクラスをインポートします。
REX-USB60MB用インスタンス名を定義します。
■USB Serial Converterの開始処理および終了処理を呼び出すタイミングについて
アプリの起動・終了以外にUSB Serial Converterの接続・取外しや端末のスリープに対応するためのUSB Serial Converterの開始処理および終了処理を呼び出すタイミングについて説明します。
USB Serial Converterの開始処理は次の3つのタイミングで行います。
- アプリ起動時
- USB Serial Converterの接続時
- 端末のスリープからの復帰時
onResumeメソッドがこれらのタイミングに共通で呼び出されるメソッドになります。
したがって、onResumeメソッドが呼ばれたときにUSB Serial Converterの開始処理を行います。
一方、REX-USB60MBの終了処理は次の3つのタイミングで行います。
- アプリ終了時
- USB Serial Converterの取り外し時
- 端末がスリープへ入る時
onStopメソッドがこれらのタイミングに共通で呼び出されるメソッドになります。
したがって、onStopメソッドが呼ばれたときにUSB Serial Converterの終了処理を行います。
■データの受信処理について
USB Serial Converterからのデータ受信処理は、実際にデータが受信されるまでは待ち状態となるためにブロックされています。したがって、MainActivityとは別のスレッドとして処理する必要があります。
実際にデータが受信された時点で、MainActivity内のハンドラーに対してメッセージによる通知が行われて、受信データを処理する流れとなります。
それでは、次ページ以降で構成される各メソッドについて説明していきます。
関連記事
AndroidでRS-232C機器を使う(その1)
AndroidでRS-232C機器を使う(その2)
AndroidでRS-232C機器を使う(その3)
AndroidでRS-232C機器を使う(その4)
AndroidでRS-232C機器を使う(その5)