開発当初の2015年、何度もトライし最終的に諦めた自作ハンディーターミナルアプリのbluetoothスキャナー対応。
[[ai]bluetoothバーコードスキャナー対応版が作れない・・・・]
理由は
1:bluetooth再接続の度に入力途中の画面が初期化される
2:別アプリからの復帰後も入力画面が初期化される
3:bluetooth接続状態でコロコロ変わる日本語IMEアプリ表示モードが煩わしい
開発当時、Androidは4.x。
bluetoothキーボード接続時、日本語IMEが画面下部に表示され続けとても邪魔でした!
あれから4年経つので、新年を迎え改めて再挑戦!
残念ながら空いてるbluetoothバーコードスキャナーが無いのでbluetoothキーボードでのテスト。
まずテストアプリを作成。
BluetoothキーボードのENTERキー(=CRLF)がAppyBuilder(=App Inventor)アプリ上でどんな風にパーツ間を移動し、どのタイミングでEventが起こせるかを検証
ENTERキーの基本動作
1:プログラム無しでtextbox1でENTERすると
2:真下のtextbox2へ移動。そこでENTERすると
3:真下のcheckbox1へ移動。そこでENTERすると
4:checkbox1がTrue/Falseを繰り返す。Focus移動しない
5:※Layout:HorizontalArrangementで横に並べたパーツはENTERでは無視される
6:Layout:HorizontalArrangement内のパーツ移動はキーボードの左右矢印キーを使う
この基本動作を、プログラムでどこまでコントロール出来るか?
作ったのがこのプログラム
1:起動後すぐ、Focusがtextbox1に移動
2:IF トグルスイッチの状態で 移動先をtextbox2かtextbox3を制御
3:移動後のLostFocus・GotFoucusのイベントテスト
動かすと、予想とは違う動きをしました。
なぜかtextbox3:ReqestFocusを使うとtextbox3:GotFocusイベントが動きません!
textbox3:ReqestFocusを実行すると
1:HorizontalArrangementの一番左のtextbox2へ移動する
2:そこでtextbox2:GotFocusイベントが動くんです!
3:その後、textbox3へGotFocus。
4:でもtextbox3:GotFocusイベントは動かない!
AppyBuilder(=App Inventorかな)はスゴく癖のある動きをします!
でも、4年前の「まったくの予測不可能」よりはすごい進歩!
この癖を加味してプログラムすれば、今なら僕のハンディーターミナルアプリをbluetoothスキャナー対応版に改造できかも!
bluetooth再接続の度に起きた画面初期化が起きない!
別アプリへ移動し戻ってきた際の画面初期化も無い!
煩わしいbluetooth接続状態で変わる日本語IME画面も設定次第で消せる!そして重要なのが、ENTER(CRLF)後の動きが予測出来る。
テスト環境:Android7.0 + Google日本語入力2.24.3290
少なくてもこの組み合わせなら作れる!
bluetooth接続時の印は、スマホ画面左上隅の小さな[A]マークだけ!
すごく控えめで超イイ!
早速、Amazonで「bluetoothバーコードスキャナ」を買いました。
まずは自腹購入なんですよ(泣)
役に立つプログラムが完成できたら経費として認めてくれる厳しい経理担当!
買ってしまったからには早急にプログラムを完成させないと。
目指せ自腹回避!