ソフトウェアキーボード、バーコードリーダの切り替え方法について

507 views
Skip to first unread message

Jenkins

unread,
May 31, 2012, 9:37:50 AM5/31/12
to 日本Androidの会
初めまして。
初心者で恐縮ですが、投稿させていただきます。

現在、端末(タブレット OS:3.2.1)にバーコードリーダ(物理入力装置)をUSB接続した状態で、ソフトウェアキーボードとバーコードリーダの
入力切り替えを行いたく、調査を行っているのですが、現状難航しております。
実施いたしました調査アプローチは以下の2つとなっており、それ以外のアプローチ方法が思いつきません。

【1.USB Manager系クラスを用いてのデバイス制御】
当初USB Managerクラスなどで、バーコードリーダを制御ができると思い、USB Managerクラスのソースを用いて確認を行いましたが、
バーコードリーダを挿しても、デバイス認識されずデバイス情報を取得することができませんでした。
(切り分けとして、USBメモリを挿すと、デバイス認識され情報を参照することができました。)
恐らく、バーコードリーダはHID(Human Interface Device)なのでUSB接続と認識してもらえないのかと思い、USB関連のク
ラスの中に、HID制御を行っているメソッドがあるかを調べてみましたが、そのようなメソッドはありませんでした。


【2.Configurationクラスを用いてのデバイス制御】
Configuration内に、hardKeyboardHidden(物理キーボードのステータス), keyboard(ソフトウェアキーボード
のステータス)を保持する個所があったので、ここの設定を変更すれば実現可能かと思い、以下のような処理を用いてConfiguration内に設定値
変更を行いましたが、キーボード間の切り替わりは行われませんでした。

Resources res = getResources();
  Configuration config = getResources().getConfiguration();
DisplayMetrics metrics = new DisplayMetrics();

// ソフトウェアキーボード⇒ハードウェアキーボードに切り替え
private void ChangeHardKeyboard(){
config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
config.keyboard=Configuration.KEYBOARD_QWERTY;
res.updateConfiguration(config, metrics);
}

//ハードウェアキーボード⇒ソフトウェアキーボードに切り替え
private void ChangeSoftKeyboard(){
config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
config.keyboard=Configuration.KEYBOARD_NOKEYS;
res.updateConfiguration(config, metrics);
}

何か、良い手段がございましたらご教示願います。
よろしくお願いいたします。
Reply all
Reply to author
Forward
0 new messages