戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
08

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ネットワーク通信ライブラリ : Volley

Google I/O 2013 で Android のネットワーク通信処理を行う Volley ライブラリが発表・公開されました。

すでに公開から半年近く経っているため今更感もありますが簡単に使い方を書いていきます。
(Google I/O 2013 は 2013/05/16 開催)


■ Volley とは
Volley はネットワーク通信処理を簡単に、そして、早く実装することができるライブラリです。
Volley ではネットワーク通信は非同期で処理され、リクエストのコールバックは UIスレッドで処理されます。
その他、メモリキャッシュとディスクキャッシュ、リクエストの優先順位付けなど行うことが出来ます。

ただし、レスポンス全体がメモリに確保されるため、大きなファイルやストリーミング処理には適さないようです。


■ Volley ライブラリを取得する
Volley ライブラリは Git リポジトリで公開されているため、Git を使ってインポートする必要があります。
( Git がない人はインストールしてください → git GUI Clients :: http://git-scm.com/downloads )
git clone https://android.googlesource.com/platform/frameworks/volley

clone で取得したプロジェクトは Android プロジェクトとしてインポートします。
このプロジェクトは Is Library にチェックが入っていないため、チェックを入れてから使用してください。

※リソースファイルがないため、Jarファイルにエクスポートして取り込むことも出来ます。


■ Volley ライブラリを使う!
Volley はネットワーク通信を行うので、AndroidManifest.xml にネットワーク許可のパーミッションを追加します。
<uses-permission android:name="android.permission.INTERNET" />

実際に HTTPリクエストを行ってデータを取得するには以下のように行います。
package jp.inujirushi.android.sample;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

public class SampleActivity extends Activity {

private RequestQueue mQueue;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 取得した文字列を表示する TextView を生成する
final TextView textView = new TextView(this);
setContentView(textView);

// HTTPリクエストを行う Queue を生成する
mQueue = Volley.newRequestQueue(this);

// 指定したURLから文字列を取得する
String url = "http://inujirushi123.blog.fc2.com/?xml";
mQueue.add(new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
textView.setText(response);
}
}, null));
}
}
ここでは文字列を取得していますが、30行目で渡す StringRequest を変更することで様々な形式でデータを取得できます。

用意されているリクエスト
ClearCacheRequest
ImageRequest
JsonRequest (JSON処理用の抽象クラス)
JsonArrayRequest
JsonObjectRequest
StringRequest

Volley では上記のリクエストが用意されていますが Request クラスを継承することで独自の Request クラスを作ることも出来ます。
例えば、Villey では XML 用のリクエストが用意されていないため Request クラスを拡張する必要があります。
実装方法は Y.A.M の雑記帳 - Volley を使って XML を処理する がとても参考になります。


Volley では画像取得用に ImageRequest が用意されていますが、NetworkImageView という ImageView の拡張クラスも用意されています。
次のサンプルソースの30行目の引数で new ImageCache() を渡しているところでキャッシュ処理を行います。
null を渡すと NullPointerExcepton が発生するため、キャッシュ不要の場合でも定義する必要があります。
package jp.inujirushi.android.sample;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageLoader.ImageCache;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.Volley;

public class SampleActivity extends Activity {

private RequestQueue mQueue;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Volley に用意された ImageView の拡張クラス NetworkImageView を生成する
NetworkImageView imageView = new NetworkImageView(this);
setContentView(imageView);

// HTTPリクエストを行う Queue を生成する
mQueue = Volley.newRequestQueue(this);

// 指定したURLから画像を取得する
String url = "http://source.android.com/images/Android_Robot_100.png";
imageView.setImageUrl(url, new ImageLoader(mQueue, new ImageCache() {
// キャッシュ処理が必要な場合はここに記述します
@Override
public void putBitmap(String url, Bitmap bitmap) {
}

@Override
public Bitmap getBitmap(String url) {
return null;
}
}));
}
}


と、Volley を試してみましたが通信処理が簡単に実装できて良いですね!
最初に書いたように大きなファイルやストリーミング処理に適さないため、全ての通信処理で Volley を使うというわけには行きませんが、率先して使っていこうかと思います。


■ 参考サイト
throw Life - Volley(AndroidのHTTP通信ライブラリ)を使おう
TechBooster - ネットワーク通信用ライブラリVolleyを使いこなす
Y.A.M の雑記帳 - Google I/O 2013 - Android : Volley: Easy, Fast Networking for Android
Y.A.M の雑記帳 - Volley を使って XML を処理する
クラスメソッド Developers.IO - Android Tips #51 ネットワーク通信・キャッシュ処理をより速く、簡単に実装できるライブラリ “Volley” を使ってみた
スポンサーサイト

Comments

Leave a Comment


Body
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。