投稿

12月, 2011の投稿を表示しています

2年ちょっとを振り返って

イメージ
2009/10/17にver.1.0.0をリリースして以来、2年ちょっとの期間で94回のリリースを行ったSmartTraining。ver.6.8.1。たぶん、今年はこれが最後のリリースになると思うので、まとめてこれまでのことを振り返ってみます。去年は振り返ってなかったので今回2年分まとめて。 ver.1.0.0(2009/10/17)のスクリーンキャプチャ。 トップ画面(ver.1.0.0) 計測画面(ver.1.0.0) 設定画面(ver.1.0.0) とにかく、「入門書読みながら初めて作りました」的な雰囲気が満載ですね。元々、Androidで動く万歩計が欲しかったのと、GPSデータの取り扱いの練習用に作ってみようということで作り始めたアプリでした。最初はServiceの使い方も手探り(つい最近のバージョンでようやく正しい使い方を知ったのですが)で、画面を閉じると計測も止まってしまう作りでした。ボタンや画面テーマも標準のものをそのまま使った貧相なもの。アイコンの作り方を知らなかったので、画面上に画像リソースは皆無。ただ、画面は殺風景ですが、基本的な画面遷移や構成は今と変わっていません。MapViewによる地図表示とGoogle Calendarにデータを保存するという機能が最初からありました。 確か、最初に作ろうと思ってから初期バージョンをリリースするまで3ヶ月ほどかかったと記憶しています。たぶん、今これと同じ機能を作ったら1日あれば余裕で作れます。というか、コードを書くことより、どういう画面遷移にしたら使いやすいか?、どういう機能があったら楽しいか?という点を考えることに時間を多く割いていました。あと、たった一個のアプリケーションアイコンがどうしても作れなくて結局嫁さんに作ってもらいました。 江川さんの「 Google Androidプログラミング入門 」片手にひたすら真似するところからスタート。この本には本当にお世話になりました。 そしてVer.6.8.1(2011/12/30)のスクリーンキャプチャ。 トップ画面(ver.6.8.1) 計測画面(ver6.8.1) 設定画面(ver.6.8.1) ラリー画面(ver6.8.1) だいぶ賑やかになりました。アプリを作っていて途

AccountManagerから取得したauthtokenを使用するとFusion Tablesへのアップロードに失敗する件

ユーザの認証情報をAccountManagerに変更した時から、時々「Fusion Tablesへのアップロードに失敗する」という報告を受けるようになりました。 手元にある端末で確認してみると、4台中1台だけがどうしてもうまくアップロードできません。エラーはcreate table時に401。 その後、原因がわからないまま1ヶ月程度過ぎた頃、またアップロードを試してみると、先日うまくアップロード出来ていた他の端末もことごとくエラーcreate table時に401が出ていることを確認。 なんだろうねぇ。何気にと思いググって情報がみたら見つかりました。 http://d.hatena.ne.jp/yellow_73/20110819 まさにこれ。この問題です。 端末に保存されているtokenの賞味期限が切れているっぽい。 401が発生したらAccountManager#invalidateAuthToken()を呼んでauthtokenを破棄した上でもう一回最初から認証のやり直しをすることでうまくアップロード出来るようになりました。 Google DocsやGoogle Calendarにも似たような仕組みで認証かけてデータアップロードしているのに、こちらではそんな状況に陥ったことがない。なんでだろう?Fusion Tablesはtokenの賞味期限が他サービスよりもかなり短くせっていされているのか?と思いました。実際のところわかりませんが。 「 AccountManagerのgetAuthToken()をReflectionでヤッてみた 」で書いたとおり、私のアプリは1.6もサポートしているので、AccountManagerを普通に使うことができない。というわけで、これまたReflectionの登場。前回の記事読めばReflectionのパターンはわかりますよね。ということで省略。