2012年7月3日火曜日

[キーボードON/OFFモニタ][FlipClip]入力項目の判断更新を自動化できないかなぁ。


入力項目の追加を勝手に学習していくようにして自動化出来ないかなぁと思ってやっているんだけど、いいアルゴリズムが思い浮かばない。
FlipClipのほうはいけるかなぁ。
→でもちょっとこっちは後回し。(イベントいっぱい取得する事になるから電池の持ちが悪くなるのは目に見えてる)

キーボーモニタのほうは、ちょっと複雑なんです。
結局、こっちが想定していない入力項目(と思わしき)が来た場合、内部に保存しておいて、次回からは反応するようにってするんだけど、一筋縄ではいかない。
フォーカスでしか判断できないし、抜けたことの判断(今はViewが変わった)の順番にも寄るんだけど、ただ追加していくだけでは無理。

いい例が、指摘もあったけどGooglePlayの検索窓。
あいつの場合、フォーカスが移った後に検索候補を出すんだけど、それが通知の変更に負けるorz
だから、フォーカスで変えると検索候補が出なくなっちゃう。
なので、テキストチェンジで変えてるんだけど、コレもあまり万能でない。
結構苦肉の策。
だから単純に追加って言うのが難しいのね。


あと、今感じているのは、アクセシビリティサービスのイベントが飛んでくる順番がちょっと微妙。

galaxys2のMMS
通常の場合)
07-03 12:17:16.484: DEBUG: Window state change:com.android.mms.ui.ConversationComposer dispkey:false
07-03 12:17:17.934: DEBUG: Focus change:android.widget.EditText dispkey:false
07-03 12:17:17.934: DEBUG: send キーボードが表示されたよ
07-03 12:17:18.464: DEBUG: Window state change:com.android.mms.ui.ConversationComposer dispkey:true
07-03 12:17:18.464: DEBUG: Focus change:android.widget.EditText dispkey:true

たまにおかしい)
07-03 11:57:36.224: DEBUG: Focus change:android.widget.EditText dispkey:false
07-03 11:57:36.229: DEBUG: send キーボードが表示されたよ
07-03 11:57:36.829: DEBUG: Window state change:com.android.mms.ui.ConversationComposer dispkey:true
07-03 11:57:36.829: DEBUG: send 画面が変わったからキーボード消えたはず。
07-03 11:57:36.829: DEBUG: Focus change:android.widget.EditText dispkey:false
07-03 11:57:36.829: DEBUG: send キーボードが表示されたよ
07-03 11:57:37.029: DEBUG: Window state change:com.android.mms.ui.ConversationComposer dispkey:true
07-03 11:57:37.029: DEBUG: Focus change:android.widget.EditText dispkey:true

画面変更とフォーカスチェンジの順番がちょっとおかしい時がある。
この場合、同一ミリsec(11:57:36.829)に2つブロードキャスト呼ばれているから、どっちかが無視されちゃう。
だから、消えない時もあるし、消える時もある。

でも、コレってココまで来るとどうしようもない。
イベント少し纏めようかなぁ。

あと、Viewが変わった事でマーカーONにしろって投げるんだけど、履歴から戻るような奴(?)に関してはView変更イベントが走らないので、「ホームまで行かないと戻らない」みたいな事になることがあります。
これ、今調査中というか、何も飛んでこないから動きようが無い。
どうしようかなぁ。

例)MMS表示してバックで戻っているところだけど、ホームに戻る前にウィンドウチェンジが来ない。
07-03 12:24:42.519: DEBUG: Window state change:com.android.mms.ui.ConversationComposer dispkey:false
07-03 12:24:44.854: DEBUG: Focus change:android.widget.EditText dispkey:false
07-03 12:24:44.854: DEBUG: send DISP TYPE_VIEW_FOCUSED
07-03 12:24:45.244: DEBUG: Window state change:com.android.mms.ui.ConversationComposer dispkey:true
07-03 12:24:45.244: DEBUG: Focus change:android.widget.EditText dispkey:true
  想定ではココにWindow state changeが来るはず
07-03 12:24:48.999: DEBUG: Window state change:sx4s9xdw.stoichome.StoicHomeActivity dispkey:true

0 件のコメント:

コメントを投稿