Android から Picasa に画像をアップロードするサンプルがあった。
ビルドして実行みたが、認証画面らしきものが出てくるが、先に進めない。コードを見てみると、認証方式が OAuth に指定されていた。これを ACCOUNT_MANAGER に変更すると、動いた!
アプリ上での操作は、アルバムの作成、削除、名前の編集くらいしかできないが、画像の送信機能も実装されている。別の画像閲覧アプリ(Albumなど)で画像を共有する機能を選択すると、選択肢の中にこのアプリが追加されていて、これを使って Picasa に画像を転送できる。なお、事前に Android の Account Manager にGoogleアカウントが登録されている必要がある。
このサンプルを参考に、アプリを作成してみた(ソースはこちら)。以前作った、Intent でカメラを起動させるアプリにこの送信機能を追加する。
まず、com.google.api.data.sample.picasa.model のパッケージをサンプルプロジェクトからそのままコピーする。
別途 gdata-android-2.2.1-alpha.zip をダウンロードし、展開。(サンプルから持ってきてもいいはず)
プロジェクトには、上のZIP を展開した中にあるJARをExternal Jarとして追加。
サンプルから Picasa に関するコードだけをコピーして PicasaTool というクラスを作成。Account Manager しか使わないので、他の認証タイプに関連した不要なコードは削除。
Account Manager をIntent で起動して結果を得るという処理で Activity の onActivityResult をオーバーライドする必要があるが、作成したPicasaTool は Activity ではないので、Activity の onActivityResult から呼び出される Callback メソッドを定義し、ここに必要な処理を実装。
カメラで撮影された画像をそのまま送信すると大きすぎるかもしれないので、まず Bitmap の compress メソッドで圧縮する。
Picasa に送信する処理には、以下の3つの情報が必要。
- ファイルの Uri
- ファイルサイズ
- ファイル名(実際に送信するファイルの名前とは違ってもいい。Picasa 上の写真につける名前)
送信に対する応答のHttpResponse には、そのアップロードした画像にアクセスするためのURLなどが入っている。
2011年8月27日 9:02 午前 |
[…] スマホアプリの自習帳 Android と iPhone のアプリについての学習記録 « Picasaに画像をアップする(Android) […]