DATE : 2007/03/04 (Sun)
実機で動かすと妙に遅くなる問題ですが、原因が分かりました。
(;^ω^)GPS からの位置情報取得がものすごく遅かったです。
ログを出力して確かめてみたところ、検索処理は1ミリ秒程度で済んでいるのに対して、位置情報取得が10秒ほどかかっています orz
(;´Д`)遅いわけです
(;^ω^)まあ、テスト用に使用している携帯電話は、位置情報の取得を繰り返して要求する場合に合った設定ができないので、時間がかかってしまうのは仕方がないのかもしれません。
DATE : 2007/03/03 (Sat)
昼食にカップラーメンを食べようと、シーフードヌードルを買ってきました。
( ´∀`)シーフードヌードルは、カップラーメンの中でも傑作中の傑作ですね。あの濃い味ながらのどごしの良いスープが最高です。
熱湯を注いで3分。ふたを開けて割り箸をカップに突っ込みます。
割り箸が何かに刺さりました。麺が全然ふやけていません。
(;゚Д゚)お湯じゃなくて、これは水じゃないか……。
沸騰したのを確認せずにポットからお湯を注いだのが間違いでした orz
とりあえず、固形状の麺を割ろうと割り箸を何度も突き立てますが、らちが明きません。しかし、麺をひっくり返してみると、裏側はわずかにふやけています。そこで、わずかに温度の上がったお湯を少し継ぎ足してしばらく待つことにしました。
数分後、再び割り箸を突っ込んでみると……
全体がふやけていましたヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ
(;´Д`)ただ、ところどころに硬さが残っていました。また、割り箸を何度も突き立てたせいで、ベビースターラーメンのような短い麺になっていました。
(;´∀`)ちなみに味は、確かにシーフードヌードルでした。ただ、スープがとてもぬるいので、違和感しか感じられませんでした。
(;^ω^)まあ、慣れればおいしく感じられる味ではありました。
(;^ω^)慣れたくはありませんけど。
DATE : 2007/02/17 (Sat)
(;^ω^)実機で動かすと、やっぱり処理が遅いですね……。
開発したアプレットでは、GPS で取得した現在地から登録されている施設を検索する部分があるのですが、結果が表示されるまでそれなりに時間がかかります。
(;^ω^)シミュレータの場合は、ほぼ一瞬でした。
ただ、この部分は GPS を使っているので、もしかすると位置情報の取得に時間がかかっていて検索そのものは短時間で済んでいるのかもしれません。
(;^ω^)これはちょっと、処理時間を計測してみる必要がありそうです。
(;´Д`)検索処理そのものを速くしても、実際は位置情報の取得に時間がかかっているようであれば、改良の効果も少ないですしね。
DATE : 2007/02/16 (Fri)
( ^ω^)ごく一部を修正したら、普通に動作しました。
原因は、GPS 受信機の設定を行う部分でした。
BREW API からは、GPS 受信機の振る舞いをいろいろと設定することができます。例えば、ネットワークを使わずに GPS 受信機のみで現在地の計算を行うようにしたり、精度よりも速度を重視するようにしたりできます。
(;^ω^)ただ、これはあくまでもその設定に携帯電話側の GPS 受信機が対応していればの話で、対応していない場合にはもちろんその設定は使えません。
(;^ω^)ちなみに、BREW シミュレータの場合、標準のデバイスパックではどのような設定にしても動きます。
なので、GPS 受信機の振る舞いを設定するコードを書く場合には、次のような処理になります。
- アプリケーションに適した設定を用意する。
- 設定が使えるかどうかを確認する。
- 第2希望以降の設定がある場合は、1、2を繰り返す。
- 用意した設定が使えない場合は、標準の設定を使う。
しかし、動かなかったコードは最後の部分が抜けていました。
そして、実際に上のコードが組み込まれた場所は、GPS 受信機が使えるかどうかを検証する部分でした。そのため、用意した設定が使えない場合は GPS 受信機が使えないと判断する処理になっていたのです。
(;^ω^)位置情報の取得ができるかどうかをチェックする部分は別にあって、その部分で異常が発生した場合はきちんと「GPS が使えません」というメッセージが出るのですが、上の設定を検証する部分で異常が発生した場合は起動に失敗するような仕組みになっていました。
(;^ω^)ただし、アプリケーションの種類によっては、標準の設定では使えないという判断が必要な場合もあります。
DATE : 2007/02/15 (Thu)
(´・ω・) BREW の企画で、PC での動作確認からいよいよ実機へと舞台を移そうとしたのですが、舞台に上がる階段で転んでしまいました。
携帯電話に BREW アプレットを転送して、ワクワクと起動してみると、画面に出てきたものは……
起動に失敗しました
(´Д⊂ヽ
ただ、完全に起動に失敗したわけでなく、アプリケーション本体が立ち上がらなかったことが分かりました。
今回開発したアプレットは、大まかに次のような手順で立ち上がります。
- アプレットを立ち上げる命令が来る。
- 起動部分が立ち上がる。
- アプリケーション本体が立ち上がる。
アプリケーション本体は C++ なのですが、BREW アプレットの起動部分はCの関数として書かなければなりません。そのため、起動部分がC、C++間の橋渡しを行っているわけです。
BREW ではとにかくエラーが発生する可能性のあるところはチェックするように書かないといけないので、例に漏れずアプリケーション本体の起動も失敗した場合にはエラーメッセージを表示するようにしました。
それで、そのエラーメッセージが上のメッセージな訳なのです。