Android再入門 - Twitterクライアントを作ってみよう - Twitter4Jのダウンロードと準備

  • 72
    Like
  • 4
    Comment
More than 1 year has passed since last update.

はじめにここでは、プロジェクトの作成とTwitter APIをJavaから簡単に扱える神ライブラリであるTwitter4JのダウンロードとAndroidアプリへの組み込みを行います。

新しいプロジェクトを作成する

Eclipseで新しいプロジェクトを作成します。今回のサンプルアプリは、特にバージョンに依存することはないので適当なバージョンでOKです。プロジェクト名を入力してバージョンを選んだ以降は、全てデフォルトのまま進んでください。

プロジェクトの作り方が分からないという方は、 Android再入門 - 目次 #Android - Qiita をひと通りやってからTwitterクライアントに挑戦した方が良いです。

時間がなくてプロジェクトの作成だけ知りたい人は Android再入門 - プロジェクトの作成 #Android - Qiita をどうぞ。

Twitter4Jをダウンロードしてプロジェクトに追加

  1. http://twitter4j.org/ja/index.html にアクセスして、「ダウンロード」の「・最新安定バージョン」にある.zipファイルをダウンロードします。

  2. ダウンロードして.zipファイルを解凍して lib/ディレクトリにある twitter4j-core-3.0.3.jar をプロジェクトのlibs/ディレクトリに置きます。

Javadocやソースコードを添付する

必須ではありませんが、ライブラリのJavadocやソースコードを添付してEclipseで見られるようにする方法を紹介します。

  1. まず、Javadocやソースコードのファイルをlibs/ディレクトリ以外の適当なディレクトリに置きます。libs/ディレクトリに置くとエラーになるので注意してください。今回は、twitter4j-core-3.0.3.jarのJavadocやソースコードのファイルを置いてみましょう。それぞれダウンロードして解凍したディレクトリの中のtwitter4j-core/ディレクトリに入っています。

    Javadoc: twitter4j-core-3.0.3-javadoc.jar
    ソースコード: twitter4j-core-3.0.3-sources.jar

    これをプロジェクトに適当なディレクトリを作って置きます(今回はlibs_meta/という名前でディレクトリを作りました)。名前が微妙かもしれませんが決まりはないので自由です。

  2. 添付したい.jarのファイル名+.propertiesという名前のファイルをlibs/ディレクトリに作る。今回の場合だと、twitter4j-core-3.0.3.jar.propertiesという名前になります。

  3. 作った.propertiesファイルにJavadocやソースコードのファイルパスを設定する。

    twitter4j-core-3.0.3.jar.properties
    src=../libs_meta/twitter4j-core-3.0.3-sources.jar
    doc=../libs_meta/twitter4j-core-3.0.3-javadoc.jar
    
  4. Eclipseを再起動する。

    これでTwitter4Jのクラス名やメソッド名にカーソルを合わせるとJavadocが表示されたり、定義にジャンプすればソースコードを読むことができるようになります。

Twitter4Jを使う準備

Twitter4JのコアになるTwitterインスタンスを作る処理を1箇所にまとめるためにユーティリティなクラスを作りたいと思います。

このクラスは以下のメソッドを提供します。

  1. Twitterインスタンスの取得
  2. アクセストークンの保存
  3. アクセストークンの読込
  4. アクセストークンが保存されているか確認

TwitterUtilsクラスを作る

  1. TwitterUtilsという名前で新しいクラスを作成します。

  2. 以下のようにそれぞれメソッドを定義します。

TwitterUtils.java

package com.example.mytwitter;

import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class TwitterUtils {

    private static final String TOKEN = "token";
    private static final String TOKEN_SECRET = "token_secret";
    private static final String PREF_NAME = "twitter_access_token";

    /**
     * Twitterインスタンスを取得します。アクセストークンが保存されていれば自動的にセットします。
     * 
     * @param context
     * @return
     */
    public static Twitter getTwitterInstance(Context context) {
        String consumerKey = context.getString(R.string.twitter_consumer_key);
        String consumerSecret = context.getString(R.string.twitter_consumer_secret);

        TwitterFactory factory = new TwitterFactory();
        Twitter twitter = factory.getInstance();
        twitter.setOAuthConsumer(consumerKey, consumerSecret);

        if (hasAccessToken(context)) {
            twitter.setOAuthAccessToken(loadAccessToken(context));
        }
        return twitter;
    }

    /**
     * アクセストークンをプリファレンスに保存します。
     * 
     * @param context
     * @param accessToken
     */
    public static void storeAccessToken(Context context, AccessToken accessToken) {
        SharedPreferences preferences = context.getSharedPreferences(PREF_NAME,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.putString(TOKEN, accessToken.getToken());
        editor.putString(TOKEN_SECRET, accessToken.getTokenSecret());
        editor.commit();
    }

    /**
     * アクセストークンをプリファレンスから読み込みます。
     * 
     * @param context
     * @return
     */
    public static AccessToken loadAccessToken(Context context) {
        SharedPreferences preferences = context.getSharedPreferences(PREF_NAME,
                Context.MODE_PRIVATE);
        String token = preferences.getString(TOKEN, null);
        String tokenSecret = preferences.getString(TOKEN_SECRET, null);
        if (token != null && tokenSecret != null) {
            return new AccessToken(token, tokenSecret);
        } else {
            return null;
        }
    }

    /**
     * アクセストークンが存在する場合はtrueを返します。
     * 
     * @return
     */
    public static boolean hasAccessToken(Context context) {
        return loadAccessToken(context) != null;
    }
}

リソースファイルにConsumer key/secretを定義する。

上記のままでは、R.string.twitter_consumer_keyとR.string.twitter_consumer_secretが未定義なのでエラーになるはずです。Twitterデベロッパーサイトでアプリを登録してメモっておいたConsumer keyとConsumer secretをリソースファイルに定義しましょう。

  1. res/values/strings.xmlを開いて以下のようにConsumer keyとConsumer secretを追加します。
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">MyTwitter</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="twitter_consumer_key">ここにConsumer key</string>
    <string name="twitter_consumer_secret">ここにConsumer secret</string>

</resources>

以上でTwitter4Jのダウンロードと準備は完了です。お疲れ様でした!

目次へ戻る