wdpress のサンプルソース確認
とりあえず GPS + Maps + twitter4j なナニから見てみる。
twitter4j な使い方にフォーカスして色々見てみる事に。以下でアタリを付けてみました。
$ find . -name "*.java"|xargs grep import|grep twitter4j ./location/LocationMessage.java:import twitter4j.Tweet; ./LocationActivity.java:import twitter4j.Status; ./LocationActivity.java:import twitter4j.Tweet; ./LocationActivity.java:import twitter4j.Twitter; ./LocationActivity.java:import twitter4j.TwitterException; ./LocationActivity.java:import twitter4j.TwitterFactory; ./LocationActivity.java:import twitter4j.http.AccessToken; ./overlay/TweetOverlayItem.java:import twitter4j.Tweet; ./TwitLalo.java:import twitter4j.AsyncTwitter; ./TwitLalo.java:import twitter4j.AsyncTwitterFactory; ./TwitLalo.java:import twitter4j.GeoLocation; ./TwitLalo.java:import twitter4j.Query; ./TwitLalo.java:import twitter4j.QueryResult; ./TwitLalo.java:import twitter4j.Status; ./TwitLalo.java:import twitter4j.Tweet; ./TwitLalo.java:import twitter4j.TwitterAdapter; ./TwitLalo.java:import twitter4j.TwitterException; ./TwitLalo.java:import twitter4j.TwitterListener; ./TwitLalo.java:import twitter4j.TwitterMethod; ./TwitLalo.java:import twitter4j.http.AccessToken; ./util/TwitterToken.java:import twitter4j.http.AccessToken; $
とりあえず、エントリポイントな TwitLalo クラスから見てみる事に。
TwitLalo
以下な属性があります。
TwitterListener twitterListener;
TwitterListner は interface らしく、この変数に代入されているのはTwitterAdapter というクラスのオブジェクトになっている。
this.twitterListener = new TwitterAdapter() {
javadoc によれば
A handy adapter of TwitterListener.
との事。匿名クラスの中で定義されているメソドは以下の四つ。中身をざっくり確認するに
- updatedStatus
- 投稿完了時に呼び出される callback な模様
- retweetedStatus
- RT な投稿完了時に呼び出される callback な模様
- searched
- 検索のレスポンス受信時に呼び出される callbakk な模様 (?
- onExeption
- 通信時に例外が発生した時の callback (?
このオブジェクトは非同期通信なオブジェクトに渡す模様。非同期通信時に発生するイベントなインターフェースが定義されているのか。
で、TwitterAdapter なオブジェクト生成した直後で以下な記述がある。
// Twitter用処理 if (TwitterToken.getToken() == null || TwitterToken.getTokenSecret() == null) showIdPass(); else } AsyncTwitterFactory factory = new AsyncTwitterFactory(twitterListener); asyncTwitter = factory.getOAuthAuthorizedInstance( new AccessToken(TwitterToken.getToken(), TwitterToken.getTokenSeqret())); try { ownLocationInfo.setUserId(asyncTwitter.getId()); searchNearTweet();
いきなり掘削範疇が広がりました。
- TwitterToken
- これは org.siprop.android.util パケジの中身
- AsyncTwitter
- これは twitter4j の非同期通信なクラスのはず
- AccessToken
- これも twitter4j なクラスらしい
- 認証トークンのやりとりを抽象化?
- LocationInfo
- これは org.siprop.android.location パケジの中身
詳細は見ない方向で (を
searchNearTweet 手続き
定義が以下。
public void searchNearTweet() { searchNearTweet(0); } public void searchNearTweet(long sinceId) { GeoPoint geoPoint = mapView.getMapCenter(); try { Query query = new Query(); query.setGeoCode(new GeoLocation( geoPoint.getLatitudeE6() / 1E6, geoPoint.getLongitudeE6() / 1E6), SEARCH_DIST, Query.KILOMETERS); query.setQuery(TWITLALO_HASH_TAG); if (sinceId != 0) query.sinceId(sinceId); this.asyncTwitter.search(query); } catch (IllegalStateException e) { Toast.makeText(this, "¶á¤¯¤Î\Ä\¤¡¼\Ȥθ¡º÷¤Ë¼ºÇÔ¤·¤Þ¤·¤¿", Toast.LENGTH_LONG).show(); } }
ざっくりですが、座標と hashtag 渡して非同期な twitter 検索か。レスポンスが戻ってきたら AsyncTwitter#searched な手続きが呼び出される訳ですな。
searched な手続きで Overlay を云々している模様。このあたり掘ってくと面白いんですが、今日は元気に欠けておりまして、休ませて頂きます。