Twitter API は使用回数制限があるので、現在それほど魅力的なものではありませんが、BOT 的な使い道や、ログとして使うのならば、Java のサンプルとしては魅力的ではあると思います。特に、Twitter4J を使うと、いとも簡単にツイートは可能なのです。 ダウンロードしてインストール ダウンロードリンクは Twitter4J にあります。解凍して Android Studio のプロジェクトの libs に twitter4j-core-4.0.4.jar と twitter4j-async-4.0.4.jar をコピーします。 この後、メニューから add as library でもかまいませんが、app の gradle が以下のようになればいいです
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:22.2.1' compile files('libs/twitter4j-core-4.0.4.jar') }
twitter4j-async-4.0.4.jar は非同期処理に必要ですが、gradle に記述する必要はありません。 ちなみに、他のライブラリを全てコピーするとエラーになります(たぶん内容が重複してるとかかもしれません) 設定ファイル twitter4j.properties が必要です。場所は app\src\main\resources です。 エクスプローラから作成してテキストファイルを作成して、自分の Twitter から、右下の『開発』をクリックして、My Apps で アプリを作るか既存のアプリからトークンをコピペして twitter4j.properties に書き込むだけです このへんは、Twitter の API を使った人なら常識の範疇ですが、初めてでもインターネットでたくさん紹介されているので問題は無いはずです。
debug=true oauth.consumerKey=********************* oauth.consumerSecret=****************************************** oauth.accessToken=************************************************** oauth.accessTokenSecret=******************************************
実行コード 画像は、あらかじめ用意しておいてパスを取得しておきます。カメラを使用するなら、ギャラリーに登録までした後のパスをそのまま使えばいいし、一時的に使うだけなら後から削除でいいですね(もちろん終了イベント後に削除) カメラを起点とした画像データの処理 / Android 配布ページのサンプルコードは、タイプミスがあるので注意 ▼ 実行
// 入力テキストを取得 EditText editText = (EditText) rootView.findViewById(R.id.tweetText); String text = editText.getText().toString(); // 入力なしなら、テキストを作成 if ( text.trim().equals("") ) { Calendar cal = Calendar.getInstance(); SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); text = String.format( "%s %s", sf.format(cal.getTime()), "に Android からツイートしました"); } // デバッグ用 Log.i("lightbox",text); // 非同期のリスナーを作成 TwitterListener listener = new TwitterAdapter() { @Override public void updatedStatus(Status status) { System.out.println("Successfully updated the status to [" + status.getText() + "]."); } @Override public void onException(TwitterException te, TwitterMethod method) { if (method == TwitterMethod.UPDATE_STATUS) { te.printStackTrace(); } else { throw new AssertionError("Should not happen"); } } }; // 非同期の準備 AsyncTwitterFactory factory = new AsyncTwitterFactory(); AsyncTwitter asyncTwitter = factory.getInstance(); // リスナーを登録 asyncTwitter.addListener(listener); // StatusUpdate ノインスタンスを作成 // ※ 画像ツイートに必要 StatusUpdate statusUpdate = new StatusUpdate(text); // 画像のファイルオブジェクト File file = new File( mainActivity.getimagePath() ); // 画像を設定 statusUpdate.media(file); // ツイート asyncTwitter.updateStatus(statusUpdate);
何故か非同期のサンプルが世の中に無かったですが、Android でツイートしようなんて思う人がたぶんもういないのでしょう( 殆どメリットや魅力が無いので ) updatedStatus イベント内の注意 この中は UI スレッドでは無いようなので、成功の後画面処理する場合は、適宜必要な UI スレッド呼び出しを実装します。 runOnUiThread( android.app.Activity )UIスレッドで指定されたアクションを実行します。 現在のスレッドがUIスレッドの場合、アクションは直ちに実行されます。 現在のスレッドがUIスレッドでない場合、アクションはUIスレッドのイベントキューにポストされます。
|
【2016 Android Studioの最新記事】
- Android Studio で Twitter4J で ListView に検索結果を表示する
- 内部ストレージを起点とした画像データの処理 / Android
- カメラを起点とした画像データの処理 / Android
- バグ : Android Studio 2.2.2 で、spinnerMode を dialog に設定すると app:spinnerMode となってしまいます
- ListView + カスタム ArrayAdapter + ViewSwitcher + Firebase API + Data Binding : 更新処理 / Android Studio
- Firebase storage に画像をアップロードする。1) ギャラリーから、2) 実行中の画面 / Android
- Android : 画像関連のテスト用カメラアプリ
- Firebase storage の画像を ファイルとしてダウンロードして ギャラリーに保存する( ImageView にも表示する ) / Android
- Firebase storage の画像の URL を取得して、通常と同様に Stream でダウンロードして ImageView に表示する / Android
- Firebase storage の画像をメモリに直接ダウンロードして ImageView に表示する / Android
- Android : Firebase の データを REST API の PUT コマンドで更新する
- Firebase API + Android Studio : Database のデータを Java に取得する方法は3通りあります。(orderByChild 使う場合は、getChildren ..
- Android : Data Binding + Firebase API で ListView にデータを表示する
- Firebase API + Android Studio : Database 処理の基本設定
- Android Studio 2.2 で新規プロジェクトを作成すると『Could not reserve enough space for 1572864KB object heap』というエラーが出..
- Firebase API + Android Studio : Database にデータを保存は単純で、DatabaseReference の setValue メソッドを使用します