- androiden app udvikling: håndtering af ekstra kamera kapacitet

i tidligere tutorials vi så skrive kode adgang til den indbyggede kamera, se skærmen, og redde et billede i en androide anvendelse.det er det grundlæggende, men moderne smartphones har ofte ret komplicerede kameraer med en række elementer – flash, hvid balance, en række scene transportformer forskellige instagram stil foto virkninger, selv over for anerkendelse (behandles kun i den seneste androide frigivelse og ikke er omfattet af denne forelæsning).tjekke kameraet. parametre api - dok til fuldt ud at høre alt om de elementer, du kan lege med.kameraet. parametre api - også giver dem mulighed for at finde ud af, hvad elementer, der støttes af hardware din app tilfældigvis løbe.når man ved, hvad man har til rådighed, parametre eller karakteristika, de er behandlet i en ret ens.læs om at finde ud af, hvordan vi håndterer dem.,, håndtering, flash, lad os starte med at se på flash, som formentlig er den mest anvendte kamera træk.vi vil skabe en, chooseflash(), en metode til at oprette flash valg muligheder:,, private tomrum chooseflash() (sidste kamera. parametre params = kamera. getparameters(); endelig liste < snor > flashmodelist = params. getsupportedflashmodes(); hvis (flashmodelist = = null) (//ingen blitz!tilbage;} endelige charsequence [] flashtext = flashmodelist. toarray (nye charsequence [flashmodelist. size()]); alertdialog. bygmester bygmester = nye alertdialog. bygmester (det), bygmester. settitle ("vælge flash - type"); bygmester. setsinglechoiceitems (flashtext - 1, nye dialoginterface. onclicklistener() (offentlige eller onclick (dialoginterface dialog, int som) (params. setflashmode (flashmodelist. kom (som) kamera. setparameters (params); dialog. dismiss();}}); endelig alertdialog alarm = bygmester. create(); alarm. show();},, før du gør noget andet, har vi behov for at kontrollere, om der er nogen støtte - alle transportformer, med getsupportedflashmodes(),.hvis den liste er tom, er der ingen lysglimt, og vi vender tilbage uden at gøre noget.,, hvis der er flash transportformer, ønsker vi, at de bruger til at vælge én.her bruger vi en alertdialog til at klare det, men du kan bruge en anden mulighed.vi vender den liste over flash transportformer (i streng form) i en charsequence system, består i alertdialog. bygmester, så brug den håndværker, metoder til at fastsætte titel og skabe en radio knap valg (, setsinglechoiceitems(), og du kan også skabe til galochka eller anvendelse setitems() for genetisk liste uden radio knapper).,,, efter at brugeren udvælger deres foretrukne flash - tilstand, vi bruger den dialog er onclicklistener at identificere indeks for de udvalgte punkt på dagsordenen, og det punkt på dagsordenen ud af snoren liste, flashmodelist, at fastsætte denne parameter.fordi vi har oversat, flashmodelist, direkte i charsequence system, der anvendes i alertdialog bygmester, indekset for den post, valgt i alertdialog vil være det samme som indeks for det punkt i, flashmodelist,.,, du skal ringe, kamera. setparameters() efter, params. setflashmode(), om at foretage denne ændring faktisk får virkning.vi må afslutte det, onclick(), metode ved at afvise dialogen og vende tilbage til hovedskærmen.endelig har bygget den dialog, vi skaber, og vise det.,, dynamisk layout,, det næste spørgsmål er, hvordan vi skal vise det til brugeren.vi kan bare køre det automatisk på app etablering, men det er ikke særligt brugervenlig.vi kunne tilføje en xml - i statisk opstilling, men det vil blive vist, selv om den ikke har noget, der er et stort spild af skærm rum og brugervenlige.i stedet kan vi anvende dynamisk udformning – layout, der forvaltes, afhængigt af, hvad der sker i programmet, til at gøre dette, så lad os tilføje denne kodeks ved slutningen af det, chooseflash(), metode, der erstatter, alarm. show(), linje, så vi viser kun udvælge flash - liste, hvis knappen er trykket.,, linearlayout lin = (linearlayout) findviewbyid (r.id.linearlayout) knap flashbutton = nye knap (dette). flashbutton. settext ("flash"); flashbutton. setlayoutparams (nye layoutparams (layoutparams.wrap_content, layoutparams. wrap_content)); lin.addview (flashbutton); flashbutton. setonclicklistener (ny mening. onclicklistener() (offentlige eller onclick (betragtning v) (alarm. show();}}), vil du ogsåer nødt til at tilføje en id - værdi for de stiftende linearlayout i xml:,, < linearlayout xmlns: androide = "http://schemas.android.com/apk/res/android" androide: id = "@ + id /linearlayout"...>,, koden tager en henvisning til den af forældrene, linearlayout, skaber et flash - knappen, og tilføjer, at det layout, så viser alertdialog når knappen er trykket.som du kan se her, kan du sætte den højde og bredde på en knap programmatically, bruger, setlayoutparams(),.(disse er viewgroup. layoutparams). et par atomkraftværker er til rådighed; det tager bredde og højde.du kan bruge en af de undergrupper af layoutparams at være lidt mere konkret i forbindelse med opførelse af en indretning). alle de andre egenskaber ved et tryk på en knap, kan også være programmatically.du kan for eksempel vil sætte den knap til at vise et billede, snarere end tekst ved hjælp af, setbackgrounddrawable(), i stedet for, settext() (eller anvende en imagebutton og setimageresource() i stedet). endelig mødes vi i vores setuplayout(), metode:,, private tomrum setuplayout() (//...som før chooseflash();}, udarbejde og køre på din hardware til at afprøve den.,, der, er der en masse andre kamera virkninger, der er til rådighed i androide, selv om hardware tilgængeligheden naturligvis varierer med hver håndsæt.disse omfatter zoom, antibanding, scene tilstand, fokusere tilstand, og så videre.tjek kameraet parameter, hvis værdi for en fuld liste.de er klar og behandles på samme måde, så lad os få et hurtigt kig på et andet eksempel sætter scenen tilstand.transportformer omfatter fest, portait, landskab, nat, osv. – se, getscenemode(), docs for flere muligheder.den aktuelle liste til rådighed vil variere med dit kamera.,, private tomrum choosescenemode() (sidste kamera. parametre params = kamera. getparameters(); endelig liste < snor > scenemodelist = params. getsupportedscenemodes(); hvis (scenemodelist = = null) (//ingen scene transport til rådighed.tilbage;} endelige charsequence [] scenemodetext = scenemodelist. toarray (nye charsequence [scenemodelist. size()]); alertdialog. bygmester bygmester = nye alertdialog. bygmester (det), bygmester. settitle ("vælge stedet mode"); bygmester. setsinglechoiceitems (scenemodetext - 1, nye dialoginterface. onclicklistener() (offentlige eller onclick (dialoginterface dialog, int som) (params. setscenemode (scenemodelist. kom (som) kamera. setparameters (params); dialog. dismiss();}}); endelig alertdialog alarm = bygmester. create(); linearlayout lin = (linearlayout) findviewbyid (r.id.linearlayout) knap scenemodebutton = nye knap (dette). scenemodebutton. settext ("scene mode"); scenemodebutton. setlayoutparams (nye layoutparams (layoutparams.wrap_content, layoutparams. wrap_content)); lin.addview (scenemodebutton); scenemodebutton. setonclicklistener (ny mening. onclicklistener() (offentlige eller onclick (betragtning v) (alarm. show();}})}, som du kan se, er dette dybest set er identisk med, chooseflash(),.(i så høj grad, at det ville være en god idé at faktor ud til, chooseeffect(), metode og bestå i form af effekt du sætter som parameter.prøv det som en nyttig øvelse, og se, hvad andre virkninger, de kan bruge i det.), ville du sikkert også vil se på at forbedre udformningen, som i øjeblikket ikke visuelt indbydende, og vil få mindre med flere knapper og virkninger).du kan f.eks. have en glidende menu, eller arrangere knapper i træk.i fremtidige tutorials, vil vi se mere detaljeret på både statisk og dynamisk layout, og på menuen, og de muligheder, der findes kun i visse tilfælde eller efter anmodning fra brugeren.

Android camera flash button



Previous:
Next Page: