gradle :모듈앱 :기본 설정
plugins {
id 'com.google.gms.google-services'
}
dependencies {
//파이어베이스 core library
implementation platform('com.google.firebase:firebase-bom:32.2.3')
//파이어베이스 cloud Storage library
implementation("com.google.firebase:firebase-storage")
}
gradle : project설정
plugins {
id 'com.google.gms.google-services' version '4.3.15' apply false
}
<xml>ex70
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_load"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="load image from firebase storage"/>
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="select image"/>
<Button
android:id="@+id/btn_upload"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/black"
android:text="upload image to firebase storage"/>
</LinearLayout>
<java>
package com.eunji0118.ex70firebasestorage;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.eunji0118.ex70firebasestorage.databinding.ActivityMainBinding;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding;
Uri imguri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding=ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.btnLoad.setOnClickListener(view -> clickLoad());
binding.btnSelect.setOnClickListener(view -> clickSelect());
binding.btnUpload.setOnClickListener(view -> clickUpload());
}
void clickSelect(){
Intent intent=new Intent(MediaStore.ACTION_PICK_IMAGES);
//3
resultLauncher.launch(intent);
}
ActivityResultLauncher<Intent> resultLauncher=registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),result -> {
if (result.getResultCode()==RESULT_CANCELED) return;
//데이타 인텐트, uri 2
imguri= result.getData().getData();
Glide.with(this).load(imguri).into(binding.iv);
});
void clickUpload(){
FirebaseStorage firebaseStorage= FirebaseStorage.getInstance();
//.jpg 꼭 안써도됨. 새로운거 생길때
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
String name= "IMG_"+sdf.format(new Date());
StorageReference imgRef= firebaseStorage.getReference("uplooads"+name);
//폴더가 없으면 만들어줌. 폴더를..
imgRef.putFile(imguri).addOnSuccessListener(taskSnapshot -> {
Toast.makeText(this, "success upload", Toast.LENGTH_SHORT).show();
});
}
void clickLoad(){
//Firebase Storage 관리객체 소환하기
FirebaseStorage firebaseStorage= FirebaseStorage.getInstance();
//저장소의 특정 위치를 참조하는 참조객체
StorageReference rootref= firebaseStorage.getReference(); //최상위 root위치를 참조
//읽어오길 원하는 파일의 참조객체를 얻어오기
StorageReference imgRef= rootref.child("paris.jpg"); //파일이름
imgRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Glide.with(MainActivity.this).load(uri).into(binding.iv);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i("Ex70",e.getMessage());
}//fail일때 확인 가능
});
}
}
'AndroidStudio' 카테고리의 다른 글
Firebase :google 클라우드 백엔드 플랫폼: firebasefirestoreDB (0) | 2023.09.07 |
---|---|
Firebase : google 클라우드 백엔드 플랫폼 *실시간 채팅창만들기 (0) | 2023.09.07 |
Uri를 절대경로로 바꿔서 리턴시켜주는 메소드 (0) | 2023.09.06 |
웹 서비스 HTTP 통신 : 글씨랑 이미지 둘 다 가져오기* (0) | 2023.09.06 |
웹 서비스 HTTP통신 : 이미지만 올리기* (1) | 2023.09.06 |