Back to project page Sample01.
The source code is released under:
Apache License, Version 2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall me...
If you think the Android project Sample01 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Copyright 2012 Hidehisa YOKOYAMA(Blowbend.jp) */*from w w w .j a va 2s .c o m*/ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package foo.bar.twitter.sample01; import twitter4j.FilterQuery; import twitter4j.Status; import twitter4j.StatusDeletionNotice; import twitter4j.StatusListener; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.TwitterStream; import twitter4j.TwitterStreamFactory; import twitter4j.auth.AccessToken; import twitter4j.auth.RequestToken; import twitter4j.conf.Configuration; import twitter4j.conf.ConfigurationBuilder; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; /** * main screen * @author Hidehisa YOKOYAMA(Blowbend.jp) * @version 1.0.0 * @since 1.0.0 */ public class Sample01Activity extends Activity { private Button bt_start; private Button bt_cancel; private boolean isAuthorized; private Twitter twitter = null; private RequestToken requestToken = null; private TwitterStream twitterStream; private String token; private String tokenSecret; /** * @see android.app.Activity#onCreate(android.os.Bundle) */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //buttons bt_start = (Button)findViewById(R.id.stratButton); bt_cancel = (Button)findViewById(R.id.cancelButton); bt_start.setEnabled(true); //start button enabled bt_cancel.setEnabled(false); //cancel button disabled //get OAuth token SharedPreferences pref = getSharedPreferences(ConstantValue.PREFERENCE_NAME, MODE_PRIVATE); token = pref.getString(ConstantValue.PREF_KEY_TOKEN, ""); tokenSecret = pref.getString(ConstantValue.PREF_KEY_SECRET, ""); isAuthorized = (token.length() > 0 && tokenSecret.length() > 0); twitterStream = new TwitterStreamFactory().getInstance(); } /** * @see android.app.Activity#onBackPressed() */ @Override public void onBackPressed() { //stop streaming API if(isAuthorized){ Log.d("DEBUG", "twitter stream cleanuped"); twitterStream.cleanUp(); } super.onBackPressed(); } /** * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) */ @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(Menu.NONE, 0, 0, "Authorize"); return true; } /** * @see android.app.Activity#onMenuItemSelected(int, android.view.MenuItem) */ @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { super.onMenuItemSelected(featureId, item); switch(item.getItemId()){ case 0: if(isAuthorized){ //authorized new AlertDialog.Builder(this) .setTitle("Logoff") .setMessage("Do you want logoff twitter?") .setPositiveButton("Logoff", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SharedPreferences pref = getSharedPreferences(ConstantValue.PREFERENCE_NAME, MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.remove(ConstantValue.PREF_KEY_TOKEN); editor.remove(ConstantValue.PREF_KEY_SECRET); token = ""; tokenSecret = ""; isAuthorized = false; } }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ;//no process } }).create().show(); }else{ //not authorized connectTwitter(); } break; } return true; } /** * @see android.app.Activity#onActivityResult(int, int, android.content.Intent) */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (resultCode == RESULT_OK) { super.onActivityResult(requestCode, resultCode, intent); AccessToken accessToken = null; try { accessToken = twitter.getOAuthAccessToken(requestToken, intent.getExtras().getString(ConstantValue.IEXTRA_OAUTH_VERIFIER)); SharedPreferences pref = getSharedPreferences(ConstantValue.PREFERENCE_NAME, MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); token = accessToken.getToken(); tokenSecret = accessToken.getTokenSecret(); editor.putString(ConstantValue.PREF_KEY_TOKEN, token); editor.putString(ConstantValue.PREF_KEY_SECRET, tokenSecret); editor.commit(); Log.d("DEBUG", "authorized!!"); isAuthorized = true; } catch (TwitterException e) { e.printStackTrace(); } } } /** * connect twitter */ private void connectTwitter() { ConfigurationBuilder confbuilder = new ConfigurationBuilder(); confbuilder.setOAuthConsumerKey(ConstantValue.CONSUMER_KEY); confbuilder.setOAuthConsumerSecret(ConstantValue.CONSUMER_SECRET); Configuration conf = confbuilder.build(); twitter = new TwitterFactory(conf).getInstance(); twitter.setOAuthAccessToken(null); try { requestToken = twitter.getOAuthRequestToken(ConstantValue.CALLBACK_URL); Intent intent = new Intent(this, TwitterLoginActivity.class); intent.putExtra(ConstantValue.IEXTRA_AUTH_URL, requestToken.getAuthorizationURL()); this.startActivityForResult(intent, 0); } catch (TwitterException e) { Toast.makeText(this, "Twitter Exception!!\n" + e.toString(), Toast.LENGTH_LONG).show(); } } /** * start button clicked * @param v */ public void onClickStartButton(View v) { Log.d("DEBUG", "Start button clicked!"); if(!isAuthorized){ Log.d("DEBUG", "not authorized"); return; } bt_start.setEnabled(false); //start button disabled bt_cancel.setEnabled(true); //cancel button enabled if(isAuthorized){ twitterStream = new TwitterStreamFactory().getInstance(); twitterStream.setOAuthConsumer(ConstantValue.CONSUMER_KEY, ConstantValue.CONSUMER_SECRET); twitterStream.setOAuthAccessToken(new AccessToken(token, tokenSecret)); StatusListener listener = new StatusListener(){ @Override public void onException(Exception arg0) { ;//no process } @Override public void onDeletionNotice(StatusDeletionNotice arg0) { ;//no process } @Override public void onScrubGeo(long arg0, long arg1) { ;//no process } @Override public void onStatus(Status status) { String tweet = status.getText(); Log.d("DEBUG", "tweet: "+tweet); } @Override public void onTrackLimitationNotice(int arg0) { ;//no process } }; twitterStream.addListener(listener); String[] trackArray = {ConstantValue.HASH_TAG}; twitterStream.filter(new FilterQuery(0, null, trackArray)); } } /** * cancel button pressed * @param v */ public void onClickCancelButton(View v) { Log.d("DEBUG", "Cancel button clicked!"); bt_start.setEnabled(true); //start button enable bt_cancel.setEnabled(false); //cancel button disable //stop streaming API if(isAuthorized){ Log.d("DEBUG", "twitter stream cleanuped"); twitterStream.cleanUp(); } } }