Android Audio Capture Tutorial

Android har en innebygd mikrofon som du kan fange opp lyd og lagre det, eller spille det i telefonen. Det er mange måter å gjøre det, men den vanligste måten er gjennom MediaRecorder klasse.

Android gir MediaRecorder klasse å spille inn lyd eller video. For å kunne bruke MediaRecorder klassen, vil du først opprette en forekomst av MediaRecorder klasse. Syntaksen er gitt nedenfor
MediaRecorder myAudioRecorder = new MediaRecorder ();.

Nå vil du sette kilden, produksjon og koding format og output file. Deres syntaks er gitt below.
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);myAudioRecorder.setOutputFile(outputFile);

After angivelse av lydkilde og format og sin produksjon fil, kan vi da kalle de to grunnleggende metoder forberede og begynne å starte opptak av lyd
myAudioRecorder.prepare ();. myAudioRecorder.start ();

Bortsett fra disse metodene finnes det andre metoder som er oppført i MediaRecorder klassen som gir deg mer kontroll over lyd og video-opptak
Sr.NoMethod &.; description1 setAudioSource ()

Denne metoden angir kilden til lyd for å bli registrert
2 setVideoSource ()

Denne metoden angir kilden til videoen som skal tas opp
3 SetOutputFormat ()

Denne metoden angir lydformat som lyd skal lagres
4 setAudioEncoder ()

Denne metoden angir audio encoder til brukes
5 setOutputFile ()

Denne metoden konfigurerer banen til filen inn som innspilt lyd skal lagres
6 stop ()

Denne metoden stopper opptaksprosessen.
7 frigjøring ()

Denne metoden bør kalles når opptakeren instans.

Eksempel

Dette eksempel gir demonstrasjon av MediaRecorder klasse å fange lyd og deretter Mediaplayer klasse å spille som innspilt lyd.

For å eksperimentere med dette eksempelet, må du kjøre dette på en faktisk enhet.
StepsDescription1You vil bruke Android studio IDE å lage en Android-applikasjon, og gi det et navn som AudioCapture under en pakke com.example.sairamkrishna.myapplication;. Mens du oppretter dette prosjektet, må du Target SDK og kompilere med på den nyeste versjonen av Android SDK til å bruke høyere nivåer av APIs.2Modify src /MainActivity.java fil for å legge AudioCapture code3Modify layout XML fil res /layout /activity_main.xml legge noen GUI-komponent hvis required.4Modify AndroidManifest.xml å legge nødvendig permissions.5Run programmet og velge en som kjører Android-enhet, og installere programmet på den og verifisere resultatene.

Her er innholdet i src /MainActivity.java
pakken com.example.sairamkrishna.myapplication, import android.app.Activity, import android.media.MediaPlayer, import android.media.MediaRecorder, import android.os.Bundle, import android.os.Environment; import android.view.Menu, import android.view.MenuItem, import android.view.View, import android.view.animation.Animation, import android.view.animation.AnimationUtils, import android.widget.Button; import android.widget .ImageView, import android.widget.Toast, import java.io.IOException; public class MainActivity strekker Aktivitet {Button play, stopp, rekord; private MediaRecorder myAudioRecorder; private String utdatafil = null; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); spille = (Button) findViewById (R.id.button3); slutte = (Button) findViewById (R.id.button2); record = (Button) findViewById (R.id.button); stop.setEnabled (false); play.setEnabled (false); utdatafil = Environment.getExternalStorageDirectory (). getAbsolutePath () + "/recording.3gp";; myAudioRecorder = new MediaRecorder (); myAudioRecorder.setAudioSource (MediaRecorder.AudioSource.MIC); myAudioRecorder.setOutputFormat (MediaRecorder.OutputFormat.THREE_GPP); myAudioRecorder.setAudioEncoder (MediaRecorder.OutputFormat.AMR_NB); myAudioRecorder.setOutputFile (utdatafil); record.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {try {myAudioRecorder.prepare (); myAudioRecorder.start ();} catch (IllegalStateException e) {//TODO Auto-generert catch-blokken e.printStackTrace ();} catch (IOException e) {//TODO Auto-generert catch-blokken e.printStackTrace ();} record.setEnabled (false); stop.setEnabled (true); Toast.makeText (getApplicationContext () "Recording i gang", Toast.LENGTH_LONG) .vis ();}}); stop.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {myAudioRecorder.stop (); myAudioRecorder.release (); myAudioRecorder = null; stop.setEnabled (false); play.setEnabled (true); Toast.makeText (getApplicationContext (), "Audio innspilt hell", Toast.LENGTH_LONG) .vis ();}}); play.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) kaster IllegalArgumentException, SecurityException, IllegalStateException {Mediaplayer m = new Mediaplayer (); try {m.setDataSource (utdatafil);} catch (IOException e) {e.printStackTrace ();} try {m.prepare ();} catch (IOException e) {e.printStackTrace ();} m.start (); Toast.makeText (getApplicationContext (), "Spille av lyd", Toast .LENGTH_LONG) .vis ();}}); }Override Public boolean onCreateOptionsMenu (Meny menyen) {//Blås menyen; dette legger til elementer i handlingsfeltet hvis det er til stede. . getMenuInflater () blåse (R.menu.menu_main, menyen); return true; }Override Public boolean onOptionsItemSelected (MENUITEM element) {//Håndtak handlingen bar varen klikk her. Handlingsfeltet vil //automatisk håndtere klikker på Hjem /Opp-knappen, så lenge //som du angir en forelder aktivitet i AndroidManifest.xml. int id = item.getItemId (); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) {return true; } Returnere super.onOptionsItemSelected (element); }}

Her er innholdet i activity_main.xml
< RelativeLayout xmlns: Android = "http://schemas.android.com/apk/res/android~~number=plural" xmlns: verktøy = "http://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent" android: paddingLeft = "@ dimen /activity_horizontal_margin" android: paddingRight = "@ dimen /activity_horizontal_margin" android: paddingTop = "@ dimen /activity_vertical_margin" android: paddingBottom = "@ dimen /activity_vertical_margin" verktøy: kontekst = ". MainActivity" > < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Android Audio Recording" android: id = "+ id /textView" android: Tekststørrelse = "30dp" android: layout_alignParentTop = "true "android: layout_alignParentRight =" true "android: layout_alignParentEnd =" true "/> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Tutorialspoint" android: id = "+ id /textView2" android: textcolor = "# ff3eff0f" android: Tekststørrelse = "35dp" android: layout_below = "+ id /textView" android: layout_centerHorizontal = "true" /> < Imageview android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /bildeVis" android: src = "@ teikne /logo" android: layout_below = "+ id /textView2" android : layout_alignLeft = "+ id /textView2" android: layout_alignStart = "+ id /textView2" android: layout_alignRight = "+ id /textView2" android: layout_alignEnd = "+ id /textView2" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Record" android: id = "+ id /knapp" android: layout_below = "+ id /bildeVis" android: layout_alignParentLeft = "true" android: layout_alignParentStart = "true" android: layout_marginTop = "59dp" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Stopp" android: id = "+ id /knappen2" android: layout_alignTop = "+ id /knapp" android: layout_centerHorizontal = "true" /> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "play" android: id = "+ id /Button3" android: layout_alignTop = "+ id /knappen2" android: layout_alignRight = "+ id /textView" android: layout_alignEnd = "+ id /textView" /> < /RelativeLayout >

Her er innholdet i strings.xml
< resources > < string name = "APP_NAME" > My Application < /string > < string name = "hello_world" > Hei, verden <! /string > < string name = "action_settings" > Innstillinger < /string > < /ressurser >

Her er innholdet i AndroidManifest.xml
<? xml version = "1.0" encoding = "utf-8" > < manifest xmlns:? android = "http://schemas.android.com/apk/res/android" pakken = "com.example.audiocapture" android: version = "1" android : versjon = "1.0" > < bruker-tillatelse android: name = "android.permission.ACCESS_NETWORK_STATE" /> < bruker-tillatelse android: name = "android.permission.RECORD_AUDIO" /> < søknad android: allowBackup = "true" android: icon = "@ teikne /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: name = "com.example.audiocapture.MainActivity" android: label = "@ streng /APP_NAME" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < /søknad > < /manifest >

La oss prøve å kjøre programmet. Jeg antar at du har koblet den faktiske Android Mobile-enhet med datamaskinen. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Før du starter programmet, vil Android studio vise følgende Images

Nå som standard vil du se stoppe og spille knappen deaktivere. Bare trykk på opptaksknappen, og søknaden vil starte opptak av lyd. Det vil vise følgende skjermbilde.

Nå bare trykke stopp-knappen, og det vil spare innspilt lyd til eksterne SD-kortet. Når du klikker på stoppknappen, vil følgende skjerm vises.

Nå bare trykke på play-knappen og og innspilt lyd vil bare begynne å spille på enheten. Følgende melding vises når du klikker på avspillingsknappen. Anmeldelser