質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

0回答

1407閲覧

TwitterStreamingAPI 406エラー listviewを再描画したい

zzzzzzak

総合スコア8

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2015/11/30 09:26

編集2015/12/01 09:43

twitter4jのTwitterStreamingAPIを利用してandroidアプリを開発している者です。
タイムラインの自動更新をさせたいと考えているのですが、406というエラーが出てしまいます。
このエラーは、OAuth情報のコード部分の描きかたがおかしいというエラーなのですが、コード貼り付けるので、正しい書き方をご教授お願いいたします。
よろしくお願いいたします。

MainActivity

public class MainActivity extends ListActivity {

private TweetAdapter mAdapter; private Twitter mTwitter; private MyUserStreamAdapter mMyUserStreamAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!TwitterUtils.hasAccessToken(this)) { Intent intent = new Intent(this, TwitterOAuthActivity.class); startActivity(intent); finish(); } else { mAdapter = new TweetAdapter(this); setListAdapter(mAdapter); mTwitter = TwitterUtils.getTwitterInstance(this); reloadTimeLine(); } mMyUserStreamAdapter = new MyUserStreamAdapter(); ConfigurationBuilder builder = new ConfigurationBuilder(); // ここは別途OAuth認証して情報を取得する。。。 String oAuthConsumerKey = "XXXXXXXXXXX"; String oAuthConsumerSecret ="XXXXXXXXXXXX"; String oAuthAccessToken = "XXXXXXXXXXX"; String oAuthAccessTokenSecret = "XXXXXXXXXX"; // Twitter4Jに対してOAuth情報を設定 { // アプリ固有の情報 builder.setOAuthConsumerKey(oAuthConsumerKey); builder.setOAuthConsumerSecret(oAuthConsumerSecret); // アプリ+ユーザー固有の情報 builder.setOAuthAccessToken(oAuthAccessToken); builder.setOAuthAccessTokenSecret(oAuthAccessTokenSecret); } // 1. TwitterStreamFactory をインスタンス化する twitter4j.conf.Configuration conf = builder.build(); TwitterStreamFactory twitterStreamFactory = new TwitterStreamFactory(conf); // 2. TwitterStream をインスタンス化する TwitterStream twitterStream = twitterStreamFactory.getInstance(); // ユーザーストリーム操作 { // 4. TwitterStream に UserStreamListener を実装したインスタンスを設定する twitterStream.addListener(mMyUserStreamAdapter); // 5. TwitterStream#user() を呼び出し、ユーザーストリームを開始する twitterStream.user(); twitterStream.filter(new FilterQuery(0, null)); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } private class TweetAdapter extends ArrayAdapter<twitter4j.Status> { private LayoutInflater mInflater; public TweetAdapter(Context context) { super(context, android.R.layout.simple_list_item_1); mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_tweet, null); } Status item = getItem(position); TextView name = (TextView) convertView.findViewById(R.id.name); name.setText(item.getUser().getName()); TextView screenName = (TextView) convertView.findViewById(R.id.screen_name); screenName.setText("@" + item.getUser().getScreenName()); TextView text = (TextView) convertView.findViewById(R.id.text); text.setText(item.getText()); return convertView; } } private void reloadTimeLine() { AsyncTask<Void, Void, List<twitter4j.Status>> task = new AsyncTask<Void, Void, List<twitter4j.Status>>() { @Override protected List<twitter4j.Status> doInBackground(Void... params) { try { return mTwitter.getHomeTimeline(); } catch (TwitterException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(List<twitter4j.Status> result) { if (result != null) { mAdapter.clear(); for (twitter4j.Status status : result) { mAdapter.add(status); } getListView().setSelection(0); } else { showToast("タイムラインの取得に失敗しました。。。"); } } }; task.execute(); } private void showToast(String text) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } // 3. UserStream 受信時に応答する(UserStreamListener)リスナーを実装する class MyUserStreamAdapter extends UserStreamAdapter { // 新しいツイート(ステータス)を取得する度に呼び出される @Override public void onStatus(final Status status) { super.onStatus(status); System.out.println("@" + status.getUser().getScreenName() + " | " + status.getText() + " 【 https://twitter.com/" + status.getUser().getScreenName() + "/status/" + status.getId() + " 】"); runOnUiThread(new Runnable() { @Override public void run() { mAdapter.insert(status, 0); mAdapter.notifyDataSetChanged(); } }); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_refresh: reloadTimeLine(); mAdapter.notifyDataSetChanged(); return true; } return super.onOptionsItemSelected(item); }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問