Android avem un aparat de fotografiat în jos și sigiliu - de lucru cu camera

Android avem un aparat de fotografiat în jos și sigiliu - de lucru cu camera

Software-ul de aplicare comutator pentru

Puteți rula programul de la aplicarea sistemului de program „Camera“ (în acest caz, nu aveți nevoie de permisiuni suplimentare) prin intenție.

În general, utilizatorul poate fi diferite aplicații care pot face fotografii. Apoi, veți vedea o casetă de dialog cu o selecție de aplicația dorită. Toate au în componența lor o intrare manifestă (pentru dezvoltarea generală):

La Google, Google are un aparat de fotografiat. Pornește-l.

Când apelați getIntent () în loc de metoda de aplicare nouă intenție () să fie început imediat, în caz contrar - Concluzii din lista de dialog de selectare a programelor. De asemenea, trebuie să fie sigur că programul este instalat, nu există nici un control în exemplul de cod.

Ne face fotografii și de a salva rezultatele. Un exemplu simplu

Doar porniți aparatul foto nu este prea interesant. Să considerăm un exemplu practic, atunci când vom rula aplicația software „Camera“, iar imaginea rezultată salvată într-un dosar. Pentru a începe, să se concentreze pe sarcina principală, și apoi scrie o aplicatie mai complexa.

Utilizați ACTION_IMAGE_CAPTURE constantă statică de la obiect MediaStore pentru a crea o intenție, care apoi trebuie să treacă un startActivityForResult (). Plasați un buton de formă și ImageView. care va pune imaginea rezultată. Acest cod declanșează aplicația camerei foto implicit. S-a obținut din imaginea camerei poate fi procesată în onActivityResult () metoda:

Acest cod va începe activitatea pentru a controla aparatul foto, permițând utilizatorului să modifice setările de imagine, eliberandu de a avea pentru a crea propria aplicație pentru aceste nevoi.

Imaginea implicită este returnat sub forma unui obiect Bitmap. care conține miniatură. Acest obiect este situat în datele parametrilor. transmis în onActivityResult metoda (). Pentru a obține o miniatură sub forma unui obiect Bitmap. aveți nevoie pentru a apela getParcelableExtra () metoda de intenții, trecându-l datele de valoare șir.

Dacă specificați calea URI-ul de ieșire utilizând parametrul MediaStore.EXTRA_OUTPUT în stare de funcționare intenție, imagine de dimensiuni capturat de aparatul foto, va rămâne la locația specificată. În acest caz, onActivityResult () metoda nu va fi predat miniatura, iar planul final va demonstra nul.

Următorul exemplu arată cum să creați o imagine miniatură pentru a obține sau o imagine completă folosind intenția.

În Android 6.0 Marshmallow exemplu a încetat să funcționeze din cauza noilor reglementări cu permisiune. Noua variantă este prezentată în articolul corespunzător.

Înțeleagă elementele de bază, puteți complica un exemplu.

Să presupunem că ați creat un serviciu special, care urmărește și pisicile fără stăpân din organizația dumneavoastră să le aducă daruri, precum și mângâindu-le. Utilizatori care au descărcat aplicația dvs., aveți nevoie pentru a lua o imagine a unei pisici, iar apoi informația despre locul de filmare și alte setări pentru a ajunge la centrul de tratament. Fotografii ale pisicilor - este o parte a aplicației. Nu este neapărat inventa roata și să lucreze direct cu funcțiile camerei. Aveți deja o aplicație de sistem aparat de fotografiat, cu care puteți lua rapid o fotografie și pentru a obține rezultatul înapoi la cerere.

Mai întâi face gătit mici. Există o clasă de dispozitive care nu au aparate foto, cum ar fi e-cititori. Pentru utilizatorii acestor dispozitive nu este în zadar descărcări de aplicație, care va fi inutil să le prescrie cerința manifest pentru un aparat de fotografiat.

Vom emite o funcție separată pentru a lansa intenție.

Acest cod declanșează aplicația camerei foto implicit. S-a obținut din imaginea camerei poate fi procesată în onActivityResult metoda ().

În orice caz, a scrie o funcție pentru a verifica posibilitatea aplicației să se ocupe de intenția dumneavoastră:

Această caracteristică ne va ajuta la momentul descărcării aplicației pentru a verifica disponibilitatea intențiilor adecvate. În cazul în care cererea nu găsește un adecvat, atunci putem face un buton pentru fotografiere indisponibil.

Aplicație Sistemul de Camera codifică imagini pe intenția de întoarcere, care vine în metoda onActivityResult (), sub forma unui mic Bitmap în cheia de date. Codul de mai jos devine imaginea și o afișează într-un ImageView.

Pentru aplicarea aparatului foto sunt stocate fotografiile de dimensiune, trebuie să-i spun numele fișierului pentru a salva și calea completă.

În Android 2.2 și mai mare (API 8) are o metodă specială pentru a obține calea implicită pentru fotografii:

Pentru versiunile anterioare de Android, va trebui să introduceți numele directorului foto pe cont propriu:

PICTURES_DIR proprietate - este doar un dosar Poze / - locatie standard pentru fotografiile distribuite pe o memorie externă / partajat.

Ai nevoie să aibă grijă de numele de fișier unic, pentru a evita conflictele:

În exemplul nostru, numele fișierului este format de la data la care vă permite să nu fie frică de a crea duplicate.

Dacă avem un loc pentru a stoca imaginea, apoi lăsați camera de calea de aplicare prin intenție:

Adăugați fotografia în aplicația Galerie

La crearea unei imagini prin intenție trebuie să știe unde va fi amplasat imaginea, pentru că trebuie să specificați unde să-l salveze. Puteți merge în altă parte - de a face fotografia accesibile sistemului folosind Provider Media.

Următorul exemplu demonstrează metoda de asteptare scanerului mass-media de sistem pentru a adăuga fotografia în baza de date Provider Media, care va face vizibilă în aplicația Galerie și alte aplicații.

Decodificarea de scalare a imaginii

Scoateți și Trunchiați

Luați în considerare un alt exemplu, atunci când vom lansa aplicația Cameră foto, precum și, inclusiv modul de decupare. Vă rugăm să rețineți că cea mai mare parte a codului rămâne aceeași. Eu da în mod specific exemple diferite, cu modificări minore, astfel încât să puteți alege metodele potrivite pentru aplicația dumneavoastră. De asemenea, este recomandat pentru a verifica funcționarea camerei pe dispozitive reale, cât mai mulți producători înlocui metodele standard de anchetă de firmware și drivere lor. În special, cu intenția de a încadra o problemă și pe internet, mulți se plâng de lipsa de sprijin pentru acest proces.

Creați un aspect simplu de butoane pentru a porni aparatul foto și pentru a scoate ImageView trunchiate imagine.

Pentru mai multe frumusete va face fundal în ImageView cu colțuri rotunjite și accident vascular cerebral. Pentru acest atribut Android: fundal, am înregistrat un stil aparte. Creați res / dosar drawable. și background.xml fișier după cum urmează:

Acest pas este opțional și poate fi omis.

Când apăsați butonul pentru a lansa aplicația Camera și rezultatele așteptate.

Odată ce utilizatorul a făcut cadrul pe care doriți, programul se întoarce camera înapoi în aplicația noastră. Rezultatele prelucrate în onActivityResult () metoda:

După ce a primit imaginea completă încercăm trunchiate. Pentru a face acest lucru, creați metoda performCrop (). care declanșează un scop special conceput pentru aceste scopuri. Daca va avea succes, rezultatul vine înapoi în aplicația noastră, dar cu un alt PIC_CROP cod. Acum avem imaginea din dreapta care pot fi afișate.

Framing, specificăm mărimea dorită (cod metoda de mai jos). Dacă specificați prea mare (mai mult de 400), atunci rezultatul nu va fi returnat. Încercați să adăugați mai multe doi parametri:

Rezultatul aplicării, atunci când rulează intenția de încadrare și rezultatul final. Este recomandabil să se antreneze pe pisici.

Android avem un aparat de fotografiat în jos și sigiliu - de lucru cu camera

Android avem un aparat de fotografiat în jos și sigiliu - de lucru cu camera

Afișare cod (click)

Alte lecturi