、 : , “GET”, , , , API:BitmapFactory Bitmap。
public Bitmap getInternetPicture(String UrlPath) {
Bitmap bm = null;
// 1、
// http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg
String urlpath = UrlPath;
// 2、 Uri
try {
URL uri = new URL(urlpath);
// 3、 、
HttpURLConnection connection = (HttpURLConnection) uri.openConnection();
// 4、
// ,
connection.setRequestMethod("GET");
//
connection.setReadTimeout(5000);
//
connection.setConnectTimeout(5000);
// 5、
connection.connect();
// 6、 ,
if (connection.getResponseCode() == 200) {
// 7、 , ,
InputStream is = connection.getInputStream();
// 8、 , GoogleAPI
bm = BitmapFactory.decodeStream(is);
// 9、 UI
// ImageView , , ;
Log.i("", " ");
} else {
Log.v("tag", " ");
bm = null;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bm;
}
、 にネットワーク はサブスレッドで しなければならないことに し、メインスレッドのブロックを き こし、 に を えないようにし、 にhandlerメッセージメカニズムを してパラメータ を い、UIコントロールをリフレッシュする.public void onClick(View v){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String urlpath = "http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg";
Bitmap bm = getInternetPicture(urlpath);
Message msg = new Message();
// bm ,
msg.obj = bm;
handler.sendMessage(msg);
}
}).start();
}
、メインスレッドはメッセージキュー のメッセージを し、 するUIコントロールを するHandler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
ImageView imgView = (ImageView) findViewById(R.id.internet_imageview);
imgView.setImageBitmap((Bitmap) msg.obj);
};
};
、ネットワーク を し、キャッシュでファイルを するpublic Bitmap getInternetPicture(String UrlPath) {
Bitmap bm = null;
// 1、
// http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg
String urlpath = UrlPath;
// 2、 Uri
try {
URL uri = new URL(urlpath);
// 3、 、
HttpURLConnection connection = (HttpURLConnection) uri.openConnection();
// 4、
// ,
connection.setRequestMethod("GET");
//
connection.setReadTimeout(5000);
//
connection.setConnectTimeout(5000);
// 5、
connection.connect();
// 6、 ,
if (connection.getResponseCode() == 200) {
// 7、 , ,
InputStream is = connection.getInputStream();
// 8、 ,
File file = new File(getCacheDir(), getFileName(urlpath));
FileOutputStream fos = new FileOutputStream(file);
int len = 0;
byte[] b = new byte[1024];
while ((len = is.read(b)) != -1) {
fos.write(b, 0, len);
}
fos.close();
is.close();
//9、 , Bitmap
bm = BitmapFactory.decodeFile(file.getAbsolutePath());
Log.i("", " ");
} else {
Log.v("tag", " ");
bm = null;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bm;
}
public String getFileName(String path) {
int index = path.lastIndexOf("/");
return path.substring(index + 1);
}
}