Web画像ブラウザ
2445 ワード
Androidではどのようにしてネット上の画像を取得しますか?
手順:
1.画像の経路URLを特定する
2.urlによるhttpリクエストの送信
3.要求方式の設定
4.サーバから返されるレスポンスコードを取得する
5.入力フローを取得してリソースを取得します.
具体的なコードは以下の通りです.
手順:
1.画像の経路URLを特定する
2.urlによるhttpリクエストの送信
3.要求方式の設定
4.サーバから返されるレスポンスコードを取得する
5.入力フローを取得してリソースを取得します.
具体的なコードは以下の通りです.
public class MainActivity extends Activity{
protected static final int CHANGE_UI = 1;
protected static final int ERROR = 2;
private EditText et_path;
private ImageView iv;
//1.
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what == CHANGE_UI){
Bitmap bitmap = (Bitmap) msg.obj;
iv.setImageBitmap(bitmap);
}else if(msg.what == ERROR){
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_SHORT).show();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path = (EditText) findViewById(R.id.et_path);
iv = (ImageView) findViewById(R.id.iv);
}
public void click(View v){
final String path = et_path.getText().toString().trim();
if(TextUtils.isEmpty(path))
Toast.makeText(this, " !", Toast.LENGTH_SHORT).show();
else{
new Thread(){
public void run() {
// get
try {
URL url = new URL(path);
// url http
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setRequestProperty("User-Agent:", " Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0)");
//
int code = conn.getResponseCode();
if(code==200){
InputStream is = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(is);
//iv.setImageBitmap(bitmap);
//TODO: , :bitmap
Message msg = new Message();
msg.what = CHANGE_UI;
msg.obj = bitmap;
handler.sendMessage(msg);
}else{
Message msg = new Message();
msg.what = ERROR;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = ERROR;
handler.sendMessage(msg);
}
};
}.start();
}
}
}