[Firebase + Android] Android App으로 Firebase Cloud Storage 이용하기(JAVA)
1. Firebase console 들어가기
→ 전에 만들어 두었던 Project가 생성되어 있음!
2. 왼쪽 Storage Click!!
3. 시작하기 Click
4. 완료 Click!!
5. 규칙 다음과 같이 수정!
6. Storage 만들기 성공
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이 추가됨을 확인!
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를 작성해줘야함.(게시물 올릴 예정)
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
ⓐ 안드로이드 camera로 찍은거 핸폰에 저장하기 & --> 이 사진 firebase에 업로드 하는거
ⓑ app 전체 코드 간략히 보기쉽게 수정
github.com/buglossJisoo/AI_Mushroom_App
[Android] imageView 사진 회전 현상 해결하기 & 사진의 절대경로명 찾기(JAVA) (4) | 2020.08.22 |
---|---|
[Firebase + Android + Tensorflow] tflite모델을 이용해 Camera로 찍은 사진을 분류, Firebase Cloud Storage에 Upload하기(JAVA) (2) | 2020.08.14 |
[SplashActivity] How to Create a Splash Screen(Java) (0) | 2020.07.31 |
[Image] Image resize & convert(python) (0) | 2020.07.30 |
[Web crawling] Image web crawling (python) (0) | 2020.07.30 |