プロジェクトの作成
では、Androidアプリケーションのプロジェクトを新規作成しましょう。Eclipseの[新規]-[Androidアプリケーション・プロジェクト]を選択します。今回は「Trendwatcher」という名前で作成し、アクティビティは[Blank Activity]を選択しました。このスケルトンのアプリケーションに、必要なコードを追加していきます。
ライブラリの追加
Twitter4Jのサイトから、ライブラリ(執筆時点では、twitter4j-4.0.1.zip)をダウンロードします。
zipファイルを解凍すると、多くのファイルが生成されますが、今回のアプリでは、 libフォルダにできるtwitter4j-core-4.0.1.jarというファイルのみ使用します。これを、プロジェクトのlibsフォルダにコピーしておきます。
twitter4j-core-4.0.1.jarには、Twitter APIを利用するための、基本的なコードが含まれています。
permissionの追加
Twitter APIを利用するには、インターネットへのアクセスが必要ですので、アプリケーションのpermissionの設定をしておきます。AndroidManifest.xmlに、次の行を追加します。
<uses-permission android:name="android.permission.INTERNET"/>
レイアウトの変更
最新のADTでアプリケーションを新規作成すると、フラグメント(fragment_main.xml)を使用したスケルトンアプリケーションになります。今回のアプリでは、このfragment_main.xmlに、ボタンとリストビューを追加します。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.rakuraku.android.Twitter.MainActivity$PlaceholderFragment" > <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/trend_button" /> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </LinearLayout>
なお、スケルトンアプリケーションでは、フラグメントはRelativeLayoutとなっていますが、ボタンとListViewを縦に配置するため、LinearLayoutに変更します。
LinearLayoutは、向き(orientation)を縦(vertical)にし、横幅(layout_width)と高さ(layout_height)をともに、画面いっぱい(match_parent)に設定しています。
ボタンは横幅を画面いっぱいに指定し、高さを自動調整(wrap_content)にしています。
リストビューでは、横幅、高さとも、画面いっぱいに指定します。
Twitterオブジェクトの生成
ここからはコードの追加です。まずは、Twitter4Jライブラリの初期化処理である、Twitterオブジェクトの生成を行います。
Twitterオブジェクトは、Twitter4Jライブラリのメインのオブジェクトです。このオブジェクトの生成時に、OAuth認証用の4つのキーコード(consumerKey、consumerSecret、accessToken、accessTokenSecret)を設定します。
キーの設定には、プロパティファイルに記述する方法と、プログラム内で直接指定する方法の2つあります。今回のアプリケーションでは、プログラム内に記述しています。
public static class PlaceholderFragment extends Fragment { // Twitterオブジェクト private Twitter twitter = null; public PlaceholderFragment() { // OAuth認証用設定(1) ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.setOAuthConsumerKey("XXXXX"); configurationBuilder.setOAuthConsumerSecret("XXXXX"); configurationBuilder.setOAuthAccessToken("XXXXX"); configurationBuilder.setOAuthAccessTokenSecret("XXXXX"); // Twitterオブジェクトの初期化(2) this.twitter = new TwitterFactory(configurationBuilder.build()).getInstance(); } }
ConfigurationBuilderというクラスを利用して、必要な4つのキーコードを設定します(1)。そして、TwitterFactoryクラスのgetInstanceメソッドで、Twitterオブジェクトを生成します(2)。
なお、ここでconfigurationBuilder.build()を指定しない場合、プロパティファイル(twitter4j.properties)から自動的に設定が読み込まれます。
PlaceholderFragmentについて
前述のサンプルコードは、MainActivity.java内のコードですが、PlaceholderFragmentというフラグメントクラスの定義と、コンストラクタになっています。
スケルトンアプリでは、フラグメントクラス(PlaceholderFragment)は、アクティビティクラス(MainActivity)の内部で、定義されています。
最後に
今回は、主にTwitter APIを利用するための準備編でした。次回は、Twitter4Jライブラリを非同期で実行する部分など、残りのコードを解説していきます。