안드로이드 - HTTP로 이미지 받아오기 (Firebase 버전이 아니다.)
Firebase 버전도 만들어봐야 할것이다.
- HTTP나 통신으로 무언가를 할려면, 메인 쓰레드말고
- 새로운 쓰레드 Thread나 AsyncTask가 필요하다.
- 이미지 데이터를 통신으로 다 받아올때까지 기다려야 한다.
- 인터넷 관련 작업시 INTERNET permission도 필요하다.
- 실제 이미지를 불러오는 응답속도는 빠르다.
이 과정들이 소스도 길고 번거롭기 때문에,
FIREBASE나 Glide로 대신하게 된다.
물론 해당 API를 자세히 들여다보면,
Thread나 통신이 가려져 있다.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/liner1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"></LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package com.nocean.httpimgtest;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import static java.lang.Thread.*;
public class MainActivity extends AppCompatActivity {
LinearLayout linear;
Bitmap mybitmap;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//==================== 적용할 레이아웃 불러오기, 신규 이미지 생성하기 ==================
linear = (LinearLayout) findViewById (R.id.liner1);
ImageView img= new ImageView(this);
Thread mThread = new Thread ()
{
@Override
public void run()
{
try
{
URL url1 = new URL("http://noceantest.cafe24.com/android_server/my_image.jpg");
try
{
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
conn.setDoInput(true);
conn.connect();
//==================== 이미지 파일 읽어오기 =============================
InputStream is= conn.getInputStream();
mybitmap = BitmapFactory.decodeStream(is);
}
catch (IOException e)
{
e.printStackTrace();
}
}
catch (MalformedURLException e)
{
e.printStackTrace() ;
}
}
};
mThread.start();
try
{
mThread.join();
img.setImageBitmap(mybitmap);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
linear.addView(img);
Toast.makeText(getApplicationContext(),"이미지를 불러왔습니다.", Toast.LENGTH_LONG).show();
}
}
'APP DEVELOPER > Android 안드로이드' 카테고리의 다른 글
안드로이드 - 부분 슬라이드 좌우 스와이프 My Pager (0) | 2019.10.01 |
---|---|
안드로이드 - 구글음성인식 활용, 클래스 하나로 쉽게 구현하기 (0) | 2019.09.11 |
Android/안드로이드 - 어플백업방법 (0) | 2019.09.09 |
Android/안드로이드 - 휴대폰 전화번호 추출 (0) | 2019.09.09 |
JAVA/안드로이드 - 파이어베이스(FIREBASE) 시작하기 (0) | 2019.09.08 |