, in de vorige les, kijken we naar de code te schrijven aan boord van een voorproefje van toegang tot de camera 's, en het behoud van het beeld.De camera 's ook veel hulpmiddelen om de video, maar dit vereist een complexe code voor het beheer van een,,,,, hoe de ontwikkeling van toepassingen in de robot, camera, hoe in de androïde - Deel 2: een camera voor koolstofafvang en - opslag, foto' s, een eerste, mediarecorder, open, XML, toe te voegen aan de audio - opname in de machtigingen voor de camera, de les: de autoriteit, < 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 "/> < toestemming voor het gebruik van de naam" de androïde = androïde toestemming. Record_audio "/> < gebruik van de androïde. Naam van de androïde =" hardware. Camera' s />,, schrijven we wel in de mycameraactivity.java video voor de scheiding.De eerste stap is op de camera 's, en het creëren van een nieuwe mediarecorder.We moeten deze methode juist of fout, toen we begonnen terug te registreren, kunnen we het succes van de controles is vastgesteld voor het registreren van alle (om te voorkomen dat mogelijke fouten, Mr mediarecorder): particuliere; bescherming van booleaanse prepareforvideorecording () {camera 's. Unlock (); de heer = nieuwe mediarecorder (mr.setcamera (camera' s););}, zet de camera moet worden toegestaan in de media, de camera 's.Als je gewoon met rust, foto 's, camera' s van de API - en verwerking van dit alles voor je auto, je hoeft alleen maar video.), de volgende, moeten we alle aspecten van de bron: mediarecorder (audio - en video -), de toewijzing van de documenten, de productie van documenten, en dat de op de privé - statische laatste:,, media_type_video = 1; de bescherming van booleaanse prepareforvideorecording () {camera 's. Unlock (); de heer = nieuwe mediarecorder (); mr.setcamera (camera' s); mr.setaudiosource (mediarecorder. Audiosource. Camera 's); mr.setvideosource (mediarecorder. Video Bron. Camera' s); mr.setprofile (camcorderprofile. (camcorderprofile. Quality_high)); mr.setoutputfile (getoutputmediafile (media_type_video). Tostring () mr.setpreviewdisplay (toekomstige);W getholder () ()). Getsurface;}, de bron, audiosource en video wat je verwacht.Veel van de audio - optie (met inbegrip van de beschikbare voice_call,, MIC), maar we gebruiken hier camera 's (met camera' s, indien beschikbaar, of anders door de microfoon).Je enige optie is de video camera, of de schending,,,,, setprofile () (alleen voor snelle functie van API - 8) kan je voorzien van een reactor van de video en audio - code, als vorm van informatie.Als je dit wilt doen met de hand of de werking van in het begin van de API, of omdat je wil een verfijning van de controle, hier zijn een aantal monsters (mediarecorder lijn:,, mr.setoutputformat. OUTPUTFORMAT. Standaard); mr.setaudioencoder (mediarecorder. Audioencoder. Amr_nb); mr.setvideoencoder (mediarecorder, video - code h264.);,,, meer opties mediarecorder API - gegevens, en camcorderprofile API - gegevens is automatisch als je de informatie gebruik maken van deze mogelijkheid.,,, Samsung aandacht, een Samsung, en dat betekent dat ze meer nodig om goed te kunnen functioneren van de instellingen.Kijk naar deze StackOverflow draad en xda draad voor meer details.,, vind je getoutputmediafile () telefoon, de aanwijzing van een video, we de bestaande methode niet kan worden behandeld.Dit is de code voor het beheer van extra particuliere documenten getoutputmediafile,,, (int) {///////- en tijdstempel voor de catalogus als (type = = media_type_image) {terug te keren naar de nieuwe documenten (catalogus. Getpath () + file.separator + "img_" + + ".");} anders als (type = = = = = = = media_type_video) {terug te keren naar de nieuwe documenten (catalogus. Getpath () + file.separator + "vid_" + +. "Gp");}} {} anders terug van nul;,, je zou zijn als je de code geven een Andere wijziging van de uitkomst van het dossier nodig. En, ten slotte, de preview preview van vroeger we noemen de desbetreffende methoden worden gebruikt mediarecorder oppervlak kan praten dus dat gezicht, registratie, L.,,Wat is klaar voor de opname van AST vóór mediarecorder:,, de bescherming van booleaanse prepareforvideorecording () {///////meer proberen {voorbereiden (); de heer} vangst (e) {logboek. E (label ", bij de voorbereiding van mediarecorder" + E getmessage ()); e getstacktrace () (); releasemediarecorder; terugkeer valse;} vangst (ioexception e) {logboek. E (etikettering, "de middelen bij de voorbereiding van mediarecorder" + E getmessage ()); e getstacktrace () (); releasemediarecorder; terugkeer valse;} terug waar;} particuliere nietig releasemediarecorder () {als Mr.= nul) (opnieuw); de heer de vrijlating van Mr ((); de heer = nul; de camera. Lock ();}},, het is eenvoudig. We hebben maar de API, bereiden we mediarecorder (), de methode en de behandeling van onregelmatigheden.Dat is belangrijk, de vrijlating van mediarecorder en vals, als er geen afwijkingen.- laat mediarecorder, moeten we ook sluit de camera kan de toepassing van het onder controle te houden.Onthoud, je moet in de pauze laten de camera!We hebben met deze code in de vorige les.), te beginnen met opnemen, moeten we nog een knop om de preview ruit, zet de knop te stoppen en start de opname, privé - recordvideobutton:,; particuliere booleaanse isrecording = vals; particuliere nietig setuplayout () {///////in de Vorige les setupvideobutton (}); particuliere nietig setupvideobutton () {knop recordvideobutton = (knop) findViewById (r.id.button_video); setupbutton (recordvideobutton, "een video"); recordvideobutton. Setonclicklistener (nieuwe horizon. Onclicklistener () {de leegte onclick (overzicht) {als (isrecording) {) () (); de heer; releasemediarecorder lock (camera 's). Recordvide;Obutton. SetText ("video"); isrecording = vals;} {(of als prepareforvideorecording () () () {Mr; recordvideobutton. SetText ("stop"); isrecording = waar} {///////; anders is verkeerd!Laat de camera 's releasemediarecorder (); de Toast. Maketext (mycameraactivity.this, "het spijt me: niet beginnen de video", Proost. Length_long). De show ();}}}});}, moet je ook nog een knoop van XML - je moet een beetje meer de XML - redacteur van Het hele gebeuren uiterlijk).,, deze code is geschreven, we gebruiken dezelfde knop start en stop de opname.Dit betekent ook dat de knop zelf, of je nu het opnemen of niet, dit is een van de grootste afnemers van informatie met een minimum van onroerend goed van de eenvoudige methode voor het gebruik van het scherm.Als de aanvraag is geregistreerd, als de knop klikt, dat de gebruiker de opname gestopt.Dus we stoppen en de vrijlating van mediarecorder, sluit de camera, de knop van de tekst, en de vermindering van isrecording,,.,, indien de aanvraag niet geregistreerd, moeten we beginnen met opnemen.Als de installatie van methoden (d.w.z. mediarecorder terug waar succes werd voorbereid, we beginnen met opnemen), de knop van de tekst, en de vermindering, isrecording,.Als het niet de succesvolle voorbereiding van mediarecorder, nogmaals, we geven en laten zien dat het een toast van de gebruiker te laten weten dat de dingen slecht nieuws,,, de aandacht en de camera 's foto' s zijn opgeslagen, en mediarecorder opslag, overdracht van documenten automatisch aan het redden van video, je hoeft dit niet te doen is jezelf redden.Maar dit alles is voor het behoud van de naam, die je door de browser onderzocht, op dit punt), als je wilt doen wat andere video 's (zoals die voor de gebruiker of om hen in staat te stellen opmaak) moet je uitbreiden van uw aanvraag te doen, in een stap in de richting van training, we de camera' s nemen een aantal facultatieve functies en het gebruik van de dynamische toewijzing van gebruikers van opties, wanneer ze worden.