,,, een moderne mobiele telefoon over de grote dingen steeds beter aan boord van de camera.Geef je androïde toepassing van andere toepassingen van de naadloze toegang tot, genoeg voor je, met het oog op de verbetering van de bestaande toepassingen of voor het scheppen van nieuwe, zijn er twee fundamentele manieren om toegang te krijgen tot de: je kunt gebruik maken van een voornemen een beroep doen op de standaard camera 's van toepassing is, of je kan het gebruik van grondstoffen voor drugs voor je eigen de activiteiten van de camera' s.De tweede is flexibeler en meer werk te reguleren.Meestal gebruik te maken van de standaard van toepassing is goed, dit is wat we in deze handleiding, ons voorbeeld toepassing zal zeer fundamentele, maar ter illustratie van dit idee.We hebben een druk op de knop, klikte het lanceren van een camera 's bedoelingen, dan zullen we dat de foto' s terug.In de vorige handleiding wordt uitgelegd, met de bedoeling gebruik te maken van de activiteiten binnen de androïde via e - mail en modules.Hier, in onze bedoeling om een boodschap van camera 's, en aan boord, die, als je die het je project, en voordat je begint met codering moet je redacteur je lijst (AndroidManifest. XML) de toevoeging van het toestaan van het gebruik van camera' s en de opslag van gegevens, en de toevoeging van een aanvraag, het gebruik van de kenmerken van de camera 's:,, < weerspiegelt.> < toestemming voor het gebruik van de naam "de androïde = androïde. Vergunningen. Camera 's /> < toestemming voor het gebruik van de naam" de androïde = androïde toestemming. Write_external_storage "/> < gebruik van de naam van de functie van de androïde: =" androïde hardware. Camera' s />,, en ten tweede het creëren van XML - blijkt dat de in de activity_call_camera (. XML) om blijk te geven van een druk op de knop en een beeld:,, < xmlns:Android = "(schema http://schemas.android.com/apk/res/android" > < knopen Android:ID = "+ ID /button_callcamera" androïde:layout_width = "wrap_content" Android:layout_height = "wrap_content" Android:layout_alignparenttop = "waar" - layout_centerhorizontal = "waar". Generaal Zhou: layout_margintop = "18dp" androïde: tekst = "@ string /get_photo" /> < ImageView Android:id = "+ ID /photo_image" Android:contentdescription = "variëren; uit de camera beelden:" de androïde layout_width = "wrap_content" Android:layout_height = "" "" wrap_content Android:layout_below = + ID /button1 "- layout_centerhorizontal =" waar "- layout_margintop =" 80dp "Android:src=" /"- /ic_launcher" /> < /(schema >,, de bedoeling van de camera, en nu, de totstandbrenging van de interne activiteiten: activiteiten callcamera, cursussen, uitbreiding van de particuliere statisch touw {etiket = "callcamera"; particuliere statische laatste int capture_image_activity_req = 0; uri fileuri = nul; ImageView beeld = nul; - de beschermde nietig oNcreate (straal savedinstancestate {-). OnCreate (savedinstancestate); setContentView (r.layout. Activity_call_camera); - = (ImageView) findViewById (r.id.photo_image); de knop callcamerabutton = (knop) findViewById (r.id.button_callcamera); callcamerabutton. Setonclicklistener (nieuwe horizon. Onclicklistener () {de leegte onclick (overzicht) {bedoelingen ik = nieuwe (mediastore bedoelingen. Action_image_capture); de file = getoutputphotofile (); fileuri = Uri. Te maken van de fromfile (getoutputphotofile ()); i.putextra (mediastore.extra_output, fileuri startActivityForResult (); ik capture_image_activity_req);}});}}, we gebruiken, omdat startactivityforresult (),We willen de resultaten (foto 's dossier) terug naar onze activiteiten, de camera is.Dit betekent dat we nodig hebben om een plaats voor de opslag van foto 's van de uri voor camera' s.(zie verder punt, waarom, fileuri, vervelende, de noodzaak van een soort variabelen.),,, getoutputphotofile (), de methode is die persoonlijke bestanden:,, getoutputphotofile () {bestandsmap = nieuwe documenten (milieu. Getexternalstoragepublicdirectory (milieu, getpackagename. Directory_pictures) () (); of!De catalogus bestaat). () {als.De gids. Mkdirs () {logboek. E (etikettering, "niet voor het creëren van een gids voor de opslag van."); terug van nul;}} = nieuwe snaren ("niet yyymmdd_hhmmss" plaats. Het Verenigd Koninkrijk). Het formaat van de formulieren (nieuwe (')); is het nieuwe document (catalogus. Getpath () + file.separator + "img_" + + "g");}, dat geef je foto' s van een verstandig en normen (tijd) naam, en het gebruik van de systemen van de voorkeur van de gids voor de opslag van de apparatuur voor Je foto 's. En Ten slotte moeten wij, wanneer de resultaten van de behandeling van het terug op.Dit is van ons, onactivityresult ():,, beschermde nietig onActivityResult (int, int requestCode, ResultCode, met de bedoeling de gegevens) {als (requestCode = = = = = = = capture_image_activity_req) {als (ResultCode = = = = = = = result_ok) {uri photouri = nul; als de gegevens (= = nul) (///////een bekende fout hier.!Het beeld moet worden bewaard in de fileuri Toast. Maketext (het "imago redden succes. Length_long). De show (); photouri = fileuri;} {photouri = gegevens anders. Getdata (); de Toast. Maketext (het" imago redden met succes: "+ gegevens. Getdata (), Proost. Length_long) (de) ///////;). De show showphoto (photouri);} anders als (ResultCode = = = = = = = result_canceled) {geroosterd brood. Maketext (het" af ", Proost. Length_short). De show ();} of {geroosterd brood. Maketext (Het" mark, beeld niet vangen. ", geroosterd brood. Length_long). De show ();}}}, opmerkingen, vindt u een bekende insect.Wat zou moeten gebeuren is het beeld moeten door de bedoeling uri 's terug.Echter, een oude apparatuur (met inbegrip van mijn) op verzoek van de positie van het behoud van de bestanden, maar terug te sturen naar een lege bedoelingen.De oplossing is behoud van de locatie (, fileuri,), als we een "goede" resultaten van de code, maar geen beeld van de positie van de gegevens.Als je de code, het zou moeten werken, maar je krijgt alleen brood op het nieuws, weer en afbeeldingen, nu, laten we de beelden terug.De afschaffing van showphoto (toelichting), en op de wijze, de toevoeging van een, showphoto (). De methode:,, particuliere nietig showphoto (uri photouri) (documenten voor de nieuwe documenten in het dossier (photouri); als (fotobestanden. Bestaat () {bitmap = BitmapFactory. Decodefile (dossier getabsolutepath ().); BitmapDrawable - = nieuwe BitmapDrawable (dit). Getresources bitmap beeld (,);. Setscaletype (ImageView. Schaal vormen. Fit_center); beeld. Setimagedrawable (was);}}, van de code, die moet je zien in "foto 's" knop, als je de foto' s van camera 's, terug., de verbetering en de Bug, als je op de knop een bloem, een seconde, foto' s, die oude foto 's in je moet worden vervangen door een nieuwe.Maar eigenlijk, als je het probeert, volgens uw apparatuur, je zou met een OutOfMemoryError.Om dit probleem op te lossen, bij de zaak, showphoto (): particuliere nietig showphoto (uri photouri) {als (fotobestanden. Bestaat () {(BitmapDrawable) beeld. Getdrawable ()). Getbitmap () (). 循环使用; ///////...Net als in de "), en, ten slotte, misschien is het je opgevallen, toen je de start code, je krijgt een kleine robot beeld zou moeten zijn.Om dit op te lossen is niets te zien, toe te voegen aan de lijn, oncreate ():,,, - = (ImageView) findViewById (r.id.photo_image); beeld. Setimagedrawable (lucht);,, je moet wat veranderen, showphoto (), om te voorkomen dat een nullpointerexception:,, particuliere nietig showphoto (uri photouri) - als (fotobestanden. Bestaat () {- olddrawable = beeld. Getdrawable (); als (olddrawable!= nul) (((BitmapDrawable) olddrawable). Getbitmap () (). 循环使用}}}; ///////rusten voor de laatste vraag van de apparatuur, volgens uw beeld, ook op je scherm draaien.Helaas, het is een beetje ingewikkeld herstellen, vooral omdat de kosten van opslag en roterende bitmap, buiten het toepassingsgebied van deze richtsnoeren.Als je wil kan je het verder onderzoeken, het gebruik van roterende en BitmapFactory exif informatie vinden om de behandeling van de kosten).In deze serie is een beetje te laat, ik zal eens kijken of manipulatie bitmap beeld; in de volgende les, maar zorgvuldig zal kijken naar de camera van de API, bij de opbouw van hun toepassing, de camera 's.
Hoe noemen de camera 's in de toepassing ervan, de ontwikkeling van
Previous:- hoe is hij 15 (Olivia)