海月玲二

カテゴリ別リスト:マイカテゴリ-リリース情報(107件):新しい順

検索結果:107件中 101件-107件


CM4IS01にしてから,自作のアプリが妙に小さく表示されるようになった.Spare Partsとかで直せるおなじみの症状だ.どうも気になるので調べたところ,これはサポート解像度の問題らしい.俺が作ったものは全部1.5以上用にしてあるのだが,なんでも複数の解像度がサポートされたのが1.6以降で,1.5以前対応のものはデフォルトだと中ぐらいの解像度しかサポートしてない扱いになるらしい.

そこでAndroidManifest.xmlにsupports-screensを書いて,android:largeScreens="true"とかそういうのを明示的に入れてやれば,高解像度のときはそれなりに広く表示してくれるようになる.もちろん本当に対応してなければうまくいかないが,俺の作ったアプリは単純な画面ばっかりだから別に問題はない.これでCM4IS01でもちゃんと表示されるようになった.

さて,ここで気付いたのだが,もしかすると「SKKをLifeTouch Noteで使ったり,lcd_densityを小さくして使ったりすると候補表示が変な位置に出る」という問題も,実はこのせいなのではないだろうか.ということで試してみたら,確かにlcd_densityが小さくてもちゃんと出るようになった.LifeTouch Noteを使ってる人に試してもらったところ,そっちでもちゃんと出たらしい.なんと,こんなツマランことに半年以上気付かなかったとは.一人でやってるとこういうことってあるよな.

ところで1.6のIS01でlcd_densityを小さくしてた場合,一旦SKKをkillしてやると表示が直ってたのはなんでだろうね.

Android用SKKのシフトキーの扱いが変だ,ということをあるブログで指摘されて初めて気付いた.確かに,シフト押しっぱなしで入力しようとすると最初の一文字しかシフト扱いにならない.IS01ではそんなことしないので全然思いもしなかったな.とりあえずこの件の修正と,ついでにzhなどで記号を入力する機能を入れて更新.中黒とかが入力しにくいのは自分でも気にはなってたし.

しかしCandidatesViewの表示位置がおかしくなる問題はどうしようもないな.いろいろ調べてみたがさっぱり解決法がわからない.本家の解説を読んでも「ソフトキーボードが画面最下部に,その上にCandidatesViewが出る」としか書いてないし,どうもAndroidのInputMethodフレームワーク自体が画面サイズを取りそこねてるような気がする.シフトキーの扱いもそうだが,結局はこのフレームワーク自体が発展途上だからどうしようもないのだろうか.公開されてるOpenWnnのソースを見てみたら,CandidatesViewをわざわざ自前で描画している始末.シフト状態の管理も当然自前だし.

Android用の画面メモなるソフトがあって,ブラウザで表示中のページをhtmlとして保存したり画像として保存したりできる.なるべくネット接続を少なくするという方針で使う貧乏人としては,なかなか便利なものだ.ただ,IS01が悪いのか何が悪いのか知らんが,どうもちゃんと保存できないページがあるようだ.

しかたがないので,httpでページをダウンロードして保存する簡単なソフトを作ってみた.プログラミング的には「インテントでブラウザのページ共有から起動する」「設定画面に設定以外のボタンも付ける」「AsyncTaskで非同期処理」「多言語対応」あたりが新しく試してみた内容かな.

AsyncTaskは微妙に使いにくいような気がする.処理中に呼び出し元のActivityに何か通知したい場合,Handlerの中でActivityのメソッドを呼び出すぐらいしか方法がないらしい.なんかメモリーリークが起きそうで不安な感じだが,Activityが破棄されたらAsyncTaskも破棄されるだろうから大丈夫なのかな.縦横切りかえたら最初からダウンロードしなおすようだし.

例によってソースと一緒にここに置いたので,興味のある人はどうぞ.

SKKをちょびっと修正.必要なとき以外は候補ウインドウを消すようにしたら,単語登録の表示が変になっていた.setCandidatesViewShown(false)とやると,どうもウインドウを消すと同時にComposingTextを吐き出すようになっているらしい.しょうがないのでモード変更の際に一旦ComposingTextをクリアし,単語登録中だけモード変更が終わったあとに改めて復活させることにした.

ていうかComposingTextを流用してないでポップアップウインドウとか出したほうがAndroid的にはいいんだろうけど.めんどくさいしなあ.

そうそう,今回のバグはunaju氏の連絡で気付いた.氏に感謝します.

Android用SKKを更新.見てみたい人は今回もこちらからどうぞ.

・シフトキーを自前で管理

MetaKeyKeyListenerの使いかたが結局わからなかったので,しかたないから自分でシフト状態を管理することにした.一応sticky shiftは実現できたが,カーソルの形の変えかたがわからなかったのでシフト状態はどこにも表示されないというオチ.まあ使えなくはない.

ていうかAndroidのメタキーの取り扱いはなんか統一性に欠けるような気がする.あとAlt+Backspaceで入力行全消しがつけられなかったのが残念.これもやりかたがわからん.

  • ASCIIからかなモードに変更するキーを設定可に

キーを設定する画面の作りかたがわからず,けっこう時間がかかった.まあでもこれで,IS01以外でもLifeTouch NOTEとかdynabook AZとかでも使えるようになったかもしれない.lynxなんかはもともとIS01とほぼ一緒だから使えたと思うが.

・いろいろバグ修正

三角マークを表示するようにした,とかも含む.一番苦労したのは,enterキーを「変換確定のみ」という操作に設定したつもりなのだが,検索バーを使うときに何故か変換確定に加えて改行も入力されてしまうというもの.一日悩んだが,結局,onKeyDown()でtrueを返すだけでは駄目で,onKeyUp()でもちゃんと処理してやらなければいけなかったらしい.なんでenterキーだけこうなのかは知らんが(試しに他のキーにしてみたら,何も変なことは起きなかった).

しかしこの程度の規模のプログラムでも整合性を保つのにけっこう苦労してるので,大規模なプロジェクトとかちゃんと管理できる人ってすげえと思うね.ちゃんと設計したりテスト機構を整備したりすれば違うんだろうか.まあどうせそんなむつかしいことはよくわからん.

ここひと月ぐらいminghai氏作成のAndroid用SKKをいじくりまわしていたのだが,それなりにひと段落ついた感じ.元のソースを自分で理解しやすいように構成を変えまくることに労力を費して,結局機能自体はたいして変わってないんだけどね.大きな違いはソフトキーボードを使わなくしたこと,個人辞書を使うようにしたことぐらいか.ソフトキーボード使えないから実質IS01専用みたいなもんかも.今さらソフトキーボード機能戻すのはけっこう大変だろうなあ.

どうでもいいが,Javaって#ifdef的な条件コンパイル機能って存在しないのね.初めて知ったよ.めんどくせえ言語だな.あと,オブジェクト指向とか言っても,巨大なクラスでメンバ変数使いまくったらグローバル変数と変わんねえな.

前とおなじく,せっかく作ったのでこれも公開しておこうと思う.興味がある人はこちらへどうぞ.