package ox.augmented.data; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import ox.augmented.model.Poi; import twitter4j.GeoLocation; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.User; import twitter4j.auth.AccessToken; import twitter4j.auth.RequestToken; import twitter4j.conf.Configuration; import twitter4j.conf.ConfigurationBuilder; import android.graphics.Bitmap; import android.os.AsyncTask; public class TwitterSource implements DataSource { private Poi anchor; private String hashtags; private Twitter twitter; private final String TWITTER_CONSUMER_KEY = "2rsIk9k5FXTgTPcK5L8yfw2"; private final String TWITTER_CONSUMER_SECRET= "jVigCods792wKx1SGRaI8zoXG4MZYpuwMCkgH4k"; private List<twitter4j.Status> statuses; private int statusIndex = 0; public TwitterSource(Poi newAnchor, String newHashtags) { this.anchor = newAnchor; this.hashtags = newHashtags; twitter = new TwitterFactory().getInstance(); AsyncTask<Boolean, Void, Boolean> testUpdate = new AsyncTask<Boolean, Void, Boolean>() { @Override protected Boolean doInBackground(Boolean... bools) { try { Query query = new Query(hashtags); query.setGeoCode(new GeoLocation(anchor.getLatitude(), anchor.getLongitude()),0.1d,Query.KILOMETERS); QueryResult result = twitter.search(query); statuses = result.getTweets(); // gets Twitter instance with default credentials /*twitter = new TwitterFactory().getInstance(); User user = twitter.verifyCredentials(); List<twitter4j.Status> statuses = twitter.getHomeTimeline(); System.out.println("Showing @" + user.getScreenName() + "'s home timeline."); for (twitter4j.Status status : statuses) { System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText()); }*/ } catch (TwitterException te) { te.printStackTrace(); System.out.println("Failed to get timeline: " + te.getMessage()); return false; } return true; } }; testUpdate.execute(); } public TwitterSource(Poi anchor) { this(anchor, ""); } public TwitterSource(String hashtags) { //Changed from this(null, ""); this(null, hashtags); } @Override public Poi getAnchor() { return anchor; } @Override public void setAnchor(Poi newAnchor) { this.anchor = newAnchor; } @Override public Bitmap getCurrentImage() { // TODO Auto-generated method stub return null; } @Override public String getCurrentText() { if(statuses != null && !statuses.isEmpty()) return statuses.get(statusIndex).getText(); else return ""; } @Override public void next() { if(statuses != null && !statuses.isEmpty()) { statusIndex = (statusIndex + 1) % statuses.size(); } } @Override public void previous() { if(statuses != null && !statuses.isEmpty()) { statusIndex = (statusIndex - 1) % statuses.size(); } } @Override public String getSearchString(){ return hashtags; } }