本ドキュメントははてなフォトライフ for Android アプリケーションにおけるAPI実装(インテント)を解説するものです。
なお、その他のはてなのAndroid向けAPIについては、以下から閲覧ください。
はてなフォトライフ for Android は外部アプリケーションからはてなフォトライフへのアップロードを簡単にできるためのAPIを提供します。
なお、はてなフォトライフ for Android バージョン 1.1.0 から利用できる機能となります。
Android マーケットからは「はてなフォトライフ」と検索することでインストールできる他、以下の QR コードを読みとることでインストールが可能です。
Intent.ACTION_SEND ("android.intent.action.SEND") によるもので、通常「共有」などから呼びだされるインテントです。アップロードの完了を待たず、サービスによりバックグラウンドでアップロードされます。
また、デフォルトのタイトル・タグを指定することができます。
Uri target = ...; startActivity( new Intent(Intent.ACTION_SEND).setType("image/jpeg") .putExtra(Intent.EXTRA_STREAM, target) .putExtra("title", "Hello!") .putExtra("tags", "[foo][bar]") .putExtra("folder", "Sample Folder!"));
共有によるアップロードインテント仕様とほぼ同じですが、アクション名が違い、アップロードが終わるまで待つことができます。アップロード中はプログレスダイアログが表示されます。
また、デフォルトのタイトル・タグを指定することができます。
以下は標準の「ギャラリー」から写真を選び、はてなフォトライフ for Android に写真をアップロードさせ、アップロードが完了し次第、フォトライフの URL を取得するサンプルです。
Intent.ACTION_SEND の変わりに "com.hatena.android.fotolife.ACTION_UPLOAD" を、startActivity の変わりに startActivityForResult を使うことで、アップロード完了まで待つことができます。
package com.example; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.widget.Toast; public class Test extends Activity { private static final int PICK_PHOTO = 1; private static final int UPLOAD_PHOTO = 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startActivityForResult( new Intent(Intent.ACTION_PICK).setType("image/jpeg"), PICK_PHOTO ); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case PICK_PHOTO: if (resultCode == RESULT_OK) { Uri target = data.getData(); startActivityForResult( new Intent("com.hatena.android.fotolife.ACTION_UPLOAD").setType("image/jpeg") .putExtra(Intent.EXTRA_STREAM, target) .putExtra("title", "Hello!") .putExtra("tags", "[test]") .putExtra("folder", "Sample Folder!"), UPLOAD_PHOTO ); } break; case UPLOAD_PHOTO: if (resultCode == RESULT_OK) { Uri uri = data.getData(); String hatenasyntax = data.getStringExtra("hatenasyntax"); Toast.makeText(this, String.format("callback: %s, %s", hatenasyntax, uri.toString()), Toast.LENGTH_LONG).show(); } break; } } }
ギャラリーから選択し、フォトライフからアップロードするサンプルアプリケーションです。
本APIを利用されるにあたっては、以下の点にご注意ください。