2012年7月2日月曜日

[キーボードON/OFFモニタ]作った!


公開しました。
キーボードON/OFFモニタ
https://play.google.com/store/apps/details?id=tora.mamma.edittextmonitor

この機能を利用するには、端末の設定画面から「ユーザ補助」→「キーボードON/OFFモニタ」をチェックしてください。
警告メッセジ出るけど、何も悪い事していないのでお気軽にw

どういったアプリかというと、
現在のフォーカスがどこにあるかを判断して「擬似的に」キーボードのON/OFFを判断。
キーボードがONの場合、"open.android.intent.action.DISP_KEYBOARD"ブロードキャストを投げる。
キーボードがOFFになると、"open.android.intent.action.HIDE_KEYBOARD"を投げる。

それだけ。
なので、このアプリだけでは何の役にも立ちませんw

■利用想定
僕が作成しているSwipeStarterなんですが、ディスプレイの最前面にマーカーと呼んでいるタッチポイントが配置されます。
最前面にある事により、現在どんな画面を操作していようが好きなアプリを呼び出せるっていうアプリなんですが、鬱陶しい問題として、「常に」最前面にマーカーが配置されちゃう。
いわゆる「誤爆」ってやつ。

で、要望として多いのが、せめてキーボード表示時にはマーカーを消してくれっていうもの。
今まで、コレがどうしても出来なかった。
※Androidからコレを判断する情報が何も提供されていないから。

で、IME(キーボード)に仕組みを実装してみたりしてたんですけど、結果ボツ。
→自分が普段使っているIMEを替えることにはものすごく抵抗がある為。

なんか使えるのないかなぁと資料あさっていたところ、このアプリに行き着きました。
SwipeStarterユーザなら使ってみる価値はあると思います(自画自賛)。
ぜひ。

■注意点
このアプリを利用する上で、注意点が一個あります。
動かない奴があります。
その時は、マーケットのコメ欄かメールで反応しないアプリ名を教えてください。
個別対応します。

~何で動かない物があるか~
入力項目にフォーカスが当たっているかを判断する為に、フォーカスが当たっている「クラス名」というのを見て判断しています。
「クラス名」って言うのは項目の名前みたいな物で、入力項目だよーとかボタンだよーっていうのが分かる。
基本的にはAndroid標準の物を使えるんですが、開発者はその標準の奴を改造出来ます。
改造した際には、そいつに名前をつけます(つけなきゃいけない)。
たとえば「hoge.hoge.MyCustomView」。
それがクラス名になります。
こうなると、入力項目かどうかを判断できません。
入力項目で無いと判断されると、動きません。
コレが理由です。

その場合は、「hoge.hoge.MyCustomView」は入力項目だよって覚えさせる必要があります。
→「マーケットのコメ欄かメールで・・・」

■開発者向け
こんなインテント欲しい人はそうそういないと思いますが、もし利用したければまにふぇすとに以下追記とレシーバを作成してください。
もちろん、「キーボードON/OFFモニタ」が有効でないと飛んでこないのでお忘れなく。



    
        
        
     
        
    

public class YourReceiver extends BroadcastReceiver {

 @Override
 public void onReceive(Context context, Intent intent) {

  if ("open.android.intent.action.DISP_KEYBOARD".equals(intent.getAction())) {
   //キーボードが表示された時の処理
  }
  if ("open.android.intent.action.HIDE_KEYBOARD".equals(intent.getAction())) {
   //キーボードが隠れた時の処理
  }
 }
}

0 件のコメント:

コメントを投稿