Cum să încărcați imagini în Firebase dintr-o aplicație Android

Firebase este o platformă de dezvoltare a aplicațiilor mobile și web, iar Firebase Storage oferă încărcări și descărcări de fișiere sigure pentru aplicațiile Firebase. În acest post, veți crea o aplicație Android cu capacitatea de a încărca imagini în Firebase Storage.

Configurarea Firebase

Dacă nu aveți încă un cont Firebase, puteți crea unul pe pagina de pornire Firebase.

După configurarea contului, accesați consola dvs. Firebase și faceți clic pe Adăugați un proiect pentru a adăuga un nou proiect.

Introduceți detaliile proiectului și faceți clic pe Creați un proiect butonul când este terminat. În pagina următoare, dați clic pe link către Adăugați Firebase în aplicația Android.

Introduceți numele pachetului de aplicații. Pachetul meu de aplicație este com.tutsplus.code.android.tutsplusupload. Rețineți că numele pachetului este numit cu un șir unic care vă identifică sau compania dvs. O modalitate ușoară de a găsi acest lucru este să vă deschideți Activitate principala fișier și copiați numele pachetului din partea de sus.

Când ați terminat, faceți clic pe Înregistrați aplicația. Pe pagina următoare, vi se va da o a google-services.json pentru a descărca pe computer. Copiați și lipiți acel fișier în dosarul aplicației din aplicația dvs. (Calea ar trebui să fie ceva de genul TutsplusUpload / app.)

Setați permisiunile Firebase

Pentru a permite accesului aplicației la Firebase Storage, trebuie să configurați permisiuni în consola Firebase. Din consola dvs., faceți clic pe Depozitare, apoi faceți clic pe reguli.

Inserați regula de mai jos și publicați. 

service firebase.storage match / b / bucket / o match / allPaths = ** permite citirea, scrie: if true; 

Acest lucru va permite citirea și scrierea accesului la spațiul de stocare Firebase.

Creați aplicația

Deschideți Android Studio și creați un nou proiect. Puteți să vă numiți proiectul oricând doriți. Am sunat pe a mea TutsplusUpload.

Înainte de a continua, va trebui să adăugați câteva dependențe. În panoul din partea stângă a aplicației Android Studio, faceți clic pe Scripturi de grad.

Deschis construi.gradle (Proiect: TutsplusUpload), și adăugați această linie de cod în blocul de dependențe.

 classpath 'com.google.gms: servicii Google: 3.0.0'

În continuare, deschideți-vă construi.gradle (Modul: app) pentru a adăuga dependențele pentru Firebase. Acestea merg și în blocul de dependențe. 

 compile 'com.google.firebase: firebase-storage: 9.2.1' compile 'com.google.firebase: firebase-auth: 9.2.1'

În cele din urmă, în afara blocurilor de dependență, adăugați pluginul pentru Serviciile Google.

 aplicați plugin-ul: 'com.google.gms.google-services'

Salvați când ați terminat și ar trebui să se sincronizeze.

Configurați Activitate principala schemă

Aplicația va avea nevoie de un aspect de activitate. Două butoane vor fi necesare - una pentru a selecta o imagine de pe dispozitiv și cealaltă pentru a încărca imaginea selectată. După selectarea imaginii pe care doriți să o încărcați, imaginea va fi afișată în aspect. Cu alte cuvinte, imaginea nu va fi setată din aspect, ci din activitate.

În tine Activitate principala layout, veți folosi două machete-cuibărind aspectul liniar în interiorul aspectului relativ. Începeți prin adăugarea codului pentru aspectul dvs. relativ.

  

RelativeLayout ocupă întreg spațiul furnizat de dispozitiv. LinearLayout va trăi în interiorul RelativeLayout, și va avea cele două butoane. Butoanele trebuie să fie plasate una lângă cealaltă, astfel încât orientarea să fie utilizată pentru LinearLayout va fi orizontală.

Iată codul pentru aspectul liniar.

  

Din codul de mai sus, puteți vedea că ambele butoane au atribuit ID-uri. ID-urile vor fi folosite pentru a direcționa butonul din activitatea principală, astfel încât atunci când se face clic pe buton, se inițiază o interacțiune. Veți vedea asta în curând.

Sub LinearLayout, adăugați codul pentru ImageView.

De asemenea, puteți vedea că ImageView are un id; veți utiliza acest lucru pentru a popula aspectul imaginii selectate. Acest lucru se va face în activitatea principală.

obține Activitate principala Sus

Navigați la dvs. Activitate principala, și începeți prin declararea câmpurilor. Aceste câmpuri vor fi utilizate pentru a inițializa vizualizările dvs. (butoanele și ImageView), precum și un URI care indică locul unde va fi selectată imaginea. Adăugați acest lucru la activitatea principală, deasupra onCreate metodă.

 butonul privat btnChoose, btnUpload; privat ImageView imageView; fișierul privat de fișiere Uri; final privat int PICK_IMAGE_REQUEST = 71;

PICK_IMAGE_REQUEST este codul de cerere definit ca o variabilă de instanță.

Acum puteți să vă inițializați opiniile așa:

 // Initializeaza vizualizarile btnChoose = (buton) findViewById (R.id.btnChoose); btnUpload = (buton) findViewById (R.id.btnUpload); imageView = (ImagineView) findViewById (R.id.imgView);

În codul de mai sus, creați noi instanțe de Buton și ImageView. Exemplele indică butoanele pe care le-ați creat în aspectul dvs..

Trebuie să setați un ascultător care ascultă interacțiunile pe butoane. Când se întâmplă o interacțiune, doriți să apelați o metodă care declanșează fie selectarea unei imagini din galerie, fie încărcarea imaginii selectate în Firebase.

Sub afișările inițializate, setați ascultătorul pentru ambele butoane. Ascultătorul arată astfel.

 btnChoose.setOnClickListener (noul View.OnClickListener () @Override public void onClick (Vizualizare v) chooseImage ();); btnUpload.setOnClickListener (noul View.OnClickListener () @Override public void onClick (Vizualizare v) uploadImage (););

Acest lucru ar trebui să fie în onCreate () metodă. După cum am menționat mai sus, ambele butoane numesc o altă metodă. Alege butonul cheamă chooseImage () metoda, în timp ce Încărcați butonul cheamă incarca imaginea() metodă. Să adăugăm aceste metode. Ambele metode ar trebui să fie puse în aplicare în afara onCreate () metodă.

Să începem cu metoda de a alege o imagine. Iată cum ar trebui să arate:

 void privat chooseImage () Intent intent = intenție nouă (); intent.setType ( "image / *"); intent.setAction (Intent.ACTION_GET_CONTENT); startActivityForResult (Intent.createChooser (intenție, "Selectare imagine"), PICK_IMAGE_REQUEST); 

Când se numește această metodă, o nouă metodă scop instanța este creată. Tipul de intenție este setat pe imagine, iar acțiunea sa este setată pentru a obține un anumit conținut. Intenția creează un dialog de selectare a imaginilor care permite utilizatorului să navigheze prin galeria dispozitivului pentru a selecta imaginea. startActivityForResult este folosit pentru a primi rezultatul, care este imaginea selectată. Pentru a afișa această imagine, veți utiliza o metodă numită onActivityResult.

onActivityResult primește un cod de solicitare, un cod de rezultat și datele. În această metodă, veți verifica dacă codul solicitării este egal PICK_IMAGE_REQUEST, cu rezultatul codului egal cu RESULT_OK și datele disponibile. Dacă toate acestea sunt adevărate, doriți să afișați imaginea selectată în ImageView.

Sub chooseImage () , adăugați următorul cod.

 @Override protejat void onActivityResult (int requestCode, int resultCode, date intenție) super.onActivityResult (requestCode, resultCode, data); dacă (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data! = null && data.getData ()! = null) filePath = data.getData (); încercați bitmap bitmap = MediaStore.Images.Media.getBitmap (getContentResolver (), filePath); imageView.setImageBitmap (bitmap);  captură (IOException e) e.printStackTrace (); 

Încărcarea fișierului în Firebase

Acum putem implementa metoda de încărcare a imaginii în Firebase. În primul rând, declarați câmpurile necesare pentru Firebase. Faceți acest lucru sub celelalte câmpuri pe care le-ați declarat pentru clasă.

 Firebase FirebaseStorage storage; StorageReference storageReference;

depozitare va fi folosit pentru a crea un FirebaseStorage instanță, în timp ce storageReference va indica fișierul încărcat. În interiorul tău onCreate () metoda, adăugați codul pentru a face acest lucru - creați un FirebaseStorage instanță și obțineți referința de stocare. Referințele pot fi văzute ca indicatori unui fișier din cloud.

 storage = FirebaseStorage.getInstance (); storageReference = storage.getReference ();

Iată ce este incarca imaginea() metoda ar trebui să arate ca.

 void privat uploadImage () if (filePath! = null) final ProgressDialog progressDialog = ProgressDialog nou (aceasta); progressDialog.setTitle ("Încărcarea ..."); progressDialog.show (); StorageReference Ref = StorageReference.child ("imagini /" + UUID.randomUUID (). ToString ()); ref.putFile (filePath) .addOnSuccessListener (noul OnSuccessListener() @Override public void onSuccess (sarcina UploadTask.TaskSnapshotSnapshot) progressDialog.dismiss (); Toast.makeText (MainActivity.this, "Încărcat", Toast.LENGTH_SHORT) .show (); ) .addOnFailureListener (noul OnFailureListener () @Override public void onFailure (@NonNull excepție e) progressDialog.dismiss (); Toast.makeText (MainActivity.this, "Failed" + e.getMessage (), Toast.LENGTH_SHORT ) .show ();) .addOnProgressListener (noul OnProgressListener() @Override public void peProgress (UploadTask.TaskSnapshot taskSnapshot) double progress = (100.0 * taskSnapshot.getBytesTransferred () / taskSnapshot .getTotalByteCount ()); progressDialog.setMessage ("Încărcat" + (int) progres + "%"); ); 

Cand incarca imaginea() se numește metoda, o nouă instanță ProgressDialog este inițializată. Se afișează o notificare text care indică faptul că utilizatorul este încărcat. Apoi, o referință la imaginea încărcată, storageReference.child (), este folosit pentru a accesa fișierul încărcat în imagini pliant. Acest director este creat automat atunci când imaginea este încărcată. Se adaugă și ascultători, cu mesaje de paine. Aceste mesaje se afișează în funcție de starea încărcării.

Setați permisiunea în aplicație

În cele din urmă, trebuie să solicitați permisiunea pe care o va utiliza aplicația dvs. Fără aceasta, utilizatorii aplicației dvs. nu vor putea naviga în galeria dispozitivelor și nu se pot conecta la internet cu aplicația dvs. Făcând acest lucru este ușor - pur și simplu lipiți următoarele în dumneavoastră AndroidManifest fişier. Lipiți-o chiar deasupra cerere element tag.

  

Această solicitare de permisiune de a utiliza internetul și a citi spațiul de stocare extern.

Testarea aplicației

Acum mergeți mai departe și rulați aplicația! Ar trebui să puteți selecta o imagine și să o încărcați cu succes în Firebase. Pentru a confirma încărcarea imaginii, reveniți la consolă și verificați Fișiere parte din spațiul de stocare.

Concluzie

Firebase oferă dezvoltatorilor multe beneficii, iar încărcarea fișierelor cu stocare este una dintre ele. Încărcarea imaginilor din aplicația dvs. Android necesită să lucrați cu Activități și intenții. Urmând împreună cu acest tutorial, înțelegerea dvs. de activități și intenții sa aprofundat. sper ca ti-a placut!

!

Cod