Androidはどのようにネットアドレスに基づいてネットのピクチャーの方法を取得します



 
  
 
  

、 : , “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);
	}
}

Android                 _ 1