Basic認証とストレージに画像保存とイメージビューに画像を保存まで。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | package com.taku.nfchome; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.BufferedHttpEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import extra.UrlManager; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.ImageView; public class ImageActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.image_activity); final ImageView iv = (ImageView)findViewById(R.id.imageView); new AsyncTask<string bitmap= "bitmap" void = "void" >() { @Override protected Bitmap doInBackground(String... params) { Bitmap bmp = null ; try { DefaultHttpClient httpClient = new DefaultHttpClient(); String url = new String(params[ 0 ]); HttpGet request = new HttpGet(url); // 認証するUserとPW UsernamePasswordCredentials credentials = new UsernamePasswordCredentials( "「ユーザ名」" , "「パスワード」" ); AuthScope scope = new AuthScope(request.getURI().getHost(), request.getURI().getPort()); httpClient.getCredentialsProvider().setCredentials(scope, credentials); HttpResponse httpResponse = httpClient.execute(request); // ステータスコードを取得 int statusCode = httpResponse.getStatusLine().getStatusCode(); HttpGet httpRequest = new HttpGet(url); //ーーー画像生成処理ーーー HttpResponse response = (HttpResponse) httpClient.execute(httpRequest); HttpEntity entity1 = response.getEntity(); BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity1); InputStream is = bufHttpEntity.getContent(); bmp = getBitmap(is); // リソースを解放 entity1.consumeContent(); // クライアントを終了させる httpClient.getConnectionManager().shutdown(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bmp; } @Override protected void onPostExecute(Bitmap bmp) { Log.v( "image" , "ok" ); iv.setImageBitmap(bmp); saveBitmapToSd(bmp); } }.execute( "「URL」" ); } /** * 画像に変換 * @param is * @return */ public static Bitmap getBitmap(InputStream is) { Bitmap bmp = null ; byte [] line = new byte [ 1024 ]; int byteSize = 0 ; try { // バイト単位での読込 ByteArrayOutputStream out = new ByteArrayOutputStream(); while ((byteSize = is.read(line)) > 0 ) { out.write(line, 0 , byteSize); } // オプション BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 0 ; byte [] byteArray = out.toByteArray(); Log.v( "image" , "byteArray.length = " + byteArray.length); bmp = BitmapFactory.decodeByteArray(byteArray, 0 , byteArray.length, options); is.close(); } catch (Exception e) { e.printStackTrace(); } return bmp; } /** * 画像をストレージへ保存 * @param mBitmap */ public void saveBitmapToSd(Bitmap mBitmap) { try { // sdcardフォルダを指定 File root = Environment.getExternalStorageDirectory(); // 日付でファイル名を作成 Date mDate = new Date(); SimpleDateFormat fileName = new SimpleDateFormat( "yyyyMMdd_HHmmss" ); // 保存処理開始 FileOutputStream fos = null ; fos = new FileOutputStream( new File(root, fileName.format(mDate) + ".jpg" )); Log.v( "image" , ( new File(root, fileName.format(mDate) + ".jpg" ).toString())); // jpegで保存 mBitmap.compress(CompressFormat.JPEG, 100 , fos); // 保存処理終了 fos.close(); } catch (Exception e) { Log.e( "Error" , "" + e.toString()); } } } </string> |