상세 컨텐츠

본문 제목

[Firebase + Android] Android App으로 Firebase Cloud Storage 이용하기(JAVA)

IT Convergence Engineering/AI 버섯 어플

by Soo_buglosschestnut 2020. 8. 9. 00:49

본문

Android App으로 Firebase Cloud Storage 이용하기(JAVA)


1. Firebase console 들어가기

 

 

→ 전에 만들어 두었던 Project가 생성되어 있음!

 

 

 

 

 

 

 

 

2. 왼쪽 Storage Click!!

 

 

 

 

 

 

 

 

 

 

 

 

3. 시작하기 Click

 

 

 

 

 

 

 

 

 

4. 완료 Click!!

 

 

 

 

 

 

 

 

 

5. 규칙 다음과 같이 수정!

 

 

 

 

 

 

6. Storage 만들기 성공


Android에서 Firebase Strage를 사용하는 방법

 

 

 

 

 

1. Adnroid Project 오픈 후, Tools의 Firebase Click!

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Storage를 이용할것이므로 형관펜 부분 Click!

 

 

 

 

 

 

 

 

 

 

 

 

3. Firebase와 Connected된 상태 --> 2번 Add Clooud Stroage to yout app을 Click --> Accept Changes를 Click

 

 

- 실행 결과

→ build.gradle(Module: app)에 firebase-storage:19.1.1이 추가됨을 확인!

 


Firebase Storage에 사진 Upload 해보기

  • 관련 JAVA code
private String currentDateFormat() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HH_mm_ss");

        String currentTimeStamp = dateFormat.format(new Date());
        return currentTimeStamp;
    }
Uri filePath = data.getData();

     if (filePath != null) {

        /*
         * firebase기반으로 한 cloud storage -> 사용자가 갤러리에서 Pick한 image를 cloud storage로 넘김
         */

        // image를 cloud로 넘길때 이름
        String filename = recog.getName() + recog.getConfidence() * 100 + "__" + currentDateFormat()+ ".jpg";

        // image를 넘길 폴더
        String foldername = recog.getName() + "/";

        // reference 생성
        FirebaseStorage storage = FirebaseStorage.getInstance();
        StorageReference storageRef = storage.getReferenceFromUrl("gs://######.appspot.com").child(foldername + filename);


        storageRef.putFile(filePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            // coloud storage에 image 업로드 성공시
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Toast.makeText(getApplicationContext(), "업로드 완료!", Toast.LENGTH_SHORT).show();
                Log.e("Firebase cloud storage","Upload Success!");
            }
        })
                //실패시
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(getApplicationContext(), "업로드 실패!", Toast.LENGTH_SHORT).show();
                        Log.e("Firebase cloud storage","Upload Fail!");
                    }
                })
                //진행중
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        Log.e("Firebase cloud storage","Loading!");
                    }
                });
    } else {
        Toast.makeText(getApplicationContext(), "파일을 먼저 선택하세요.", Toast.LENGTH_SHORT).show();
    }

→ 사용자가 Gallery에서 image Pick했을 경우에는 filePath = data.getData();로 storage에 upload하지만, 사용자가 Camera로 take the photo의 경우 실행 안되고 넘겨받은 저장 image의 uri를 작성해줘야함.(게시물 올릴 예정) 

 

  1.  Data의 경로를 Uri, filePath변수로 선언해준다. 
Uri filePath = data.getData();

 

  2. Cloud에 저장될 image의 이름을 선언해준다. && Cloud내에 어떤 folder로 image를 넘길지 folder명도 선언해준다.

// image를 cloud로 넘길때 이름
String filename = recog.getName() + recog.getConfidence() * 100 + "__" + currentDateFormat() + ".jpg";

// image를 넘길 폴더
String foldername = recog.getName() + "/";

 

  3. FirebaseStorage reference 선언 

// reference 생성
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("gs://######.appspot.com").child(foldername + filename);

  → #######에는 자신의 Storage Id(?)를 적어주면 된다.

  →.child(foldername + filename); --> foldername을가진 folder에 image의 이름을 filename으로 해서 저장하겠다.

 

  4. image나 video를 저장하기 위해 putFile() method 사용

storageRef.putFile(filePath).add~~~~

 → The simplest way to upload to your storage bucket is by uploading a local file, such as photos and videos from the camera, using the putFile() method. You can also upload raw data using putBytes() or from an InputStream using putStream().

 

→ raw data는 putBytes()나 putStream()이용해서 업로드 가능

 

  • 실행 결과

 

 

 

 

 

 

 

 

 

→ cloud에 upload가 완료되면 toast 메시지가 나온다.

 

→ cloud에 foldername을 버섯이름으로 해놨으므로 느타리버섯 폴더에 들어가야한다.

 

→ cloud에 filename을 이름 + 확률 + upload한 날짜 + 시,분,초

 

 

 

 

 

 

 

↓ 제대로 저장되었음을 확인!~

 


참고: firebase.google.com/docs/firestore/quickstart?hl=ko

 

Cloud Firestore 시작하기  |  Firebase

빠른 시작에서는 Cloud Firestore를 설정하고 데이터를 추가한 후 Firebase Console에서 방금 추가한 데이터를 확인하는 방법을 볼 수 있습니다. Cloud Firestore 데이터베이스 만들기 Firebase 프로젝트를 아직

firebase.google.com

 

ⓐ 안드로이드 camera로 찍은거 핸폰에 저장하기 & --> 이 사진 firebase에 업로드 하는거

bugloss-chestnut.tistory.com/entry/Firebase-Android-Android-App%EC%9C%BC%EB%A1%9C-Firebase-Cloud-Storage-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B8%B0JAVA

 

[Firebase + Android] Android App으로 Firebase Cloud Storage 이용하기(JAVA)

Android App으로 Firebase Cloud Storage 이용하기(JAVA) 1. Firebase console 들어가기 → 전에 만들어 두었던 Project가 생성되어 있음! 2. 왼쪽 Storage Click!! 3. 시작하기 Click 4. 완료 Click!!..

bugloss-chestnut.tistory.com

ⓑ app 전체 코드 간략히 보기쉽게 수정

github.com/buglossJisoo/AI_Mushroom_App

 

buglossJisoo/AI_Mushroom_App

AI Mushroom App final code(JAVA). Contribute to buglossJisoo/AI_Mushroom_App development by creating an account on GitHub.

github.com

 

관련글 더보기