2011年11月19日土曜日

スワイプ起動が直らない

スワイプ起動が直らない。
どうも一部機種に限った不具合のようだけど、色々なパターンを試してみても結果変わらず。

最近のバージョンアップ内容のまとめ。



■v0.6.5
□不具合対応(スワイプポイントが消えてしまう不具合の修正)
スワイプ起動はサービスで実装している。
で、Androidではサービスは落ちてしまうのが当たり前。
サービスが落ちると自動復旧してくれるのだけど、その際onCreate()しか呼ばれず、onStartCommand()やonStart()は呼ばれないらしい。
v0.6.0ではスワイプポイントの描画処理をonCreate()で行っていたため問題なかったんだけど、v0.6.3でonStart()に変更していたため、サービスが落ちてしまうと再描画されなくなっていた。
v0.6.4でonStart()をonStartCommand()に変更したものの、もちろん結果は変わらず。
このバージョンでonCreate()で描画するように修正。

■v0.6.6
□スワイプ起動とシェイク起動にフォアグラウンド実行の設定を追加
上述の通り、Androidのサービスは落ちるもの。
だけど、サービスをフォアグラウンド実行すると、かなり落ちずらくなる。
どれくらいかってのは正確には分からないんだけど、システムが不安定にならない限りは落ちなくなるのだと思う。
これも上述の通り、サービスが落ちても自動復旧してくれるのだけど、一応オプション設定として追加しておいた。

□スワイプ起動とシェイク起動の開始メッセージの表示タイミングを変更
スワイプ起動とシェイク起動の開始メッセージはサービスのonCreate()で実施していた。
なので、サービスが落ちて自動復旧したタイミングでもメッセージが表示される。
ユーザから見れば「なんでこのタイミングで開始メッセージが表示されるの?」という状態になるので、設定画面で各起動を有効にしたタイミングでメッセージを表示するように変更。

■v0.6.7
□フリックの位置判定ロジックを変更(斜め位置の判定をしやすく)
当たり前だけど、ssFlickerではフリック時に位置判定をしている。
で、その位置判定は格子型で行っている。○×ゲームをイメージしてもらうと分かり易い。
また、最初にタッチしたポイントが格子の中心になるようにしているため、縦横位置に比べ、斜め位置はフリックの距離が遠くなっていた。(三平方の定理で√2倍)
元々、位置判定は八角形型を考えていた。八角形の各頂点から中心に線を引いたイメージ。
ただ、これだと三角関数を利用した位置判定となり、ちょっと処理が煩雑になりそうなので格子型にしていた。
要望もあったため、このタイミングで八角形型の位置判定へ変更。

■v0.6.8
□シェイク感度の数値を変更
シェイク起動では加速度センサーを利用して加速度の変化を捉え、その変化が一定値以上の場合に起動するようにしている。
ユーザから「すぐに起動してしまう」との報告があった。試してもらうと、加速度が簡単に50を超える模様。
私のXPERIA2.1ではいくら頑張っても30を超えてる程度。40なんてそうそう目にしない。
他の機種でも試してみたところ、機種によって差が結構大きい。
なんでだろう…。本来は機種によるものじゃないのに。
それまで、感度設定は高(12)、中(16)、低(20)だったため、高(12)、中(24)、低(36)に変更してみた。

□不具合対応(スワイプポイントが描画されない不具合の修正→修正されず)
うーん、この対応は自信があったのだけど、全然だめでした。
設定画面を開くと、サービスの開始と、サービスへのバインドを行っている。
それまでの調査の結果、サービスのバインド時に描画が消えているように見えていた。
なので、設定画面を閉じる時に、再度サービスを終了・起動させるようにしてみたのだけど、結果変わらず。
うううーん、どうしたもんか…。

0 件のコメント:

コメントを投稿