Download - Android Audio Capture Example _ Examples Java Code Geeks

Transcript
  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 1/13

    HomeAndroidcoremediaMediaRecorderAndroidAudioCaptureExample

    ABOUT KATERINA ZAMANIKaterinahasgraduatedfromtheDepartmentofInformaticsandTelecommunicationsinNationalandKapodistrianUniversityofAthens(NKUA)andsheattendsMSccoursesinAdvancedInformationSystemsatthesamedepartment.Currently,hermainacademicinterestsfocusonwebapplications,mobiledevelopment,softwareengineering,databasesandtelecommunications.

    Android Audio Capture Example Postedby:KaterinaZamani inMediaRecorder January3rd,2014

    Androiddevicesareequippedwithhardwareinputdevicessuchasmicrophone,cameraetc,fromwhichwecancaptureaudioorvideoinourapplications.ThemostcommonclassthatisusedisMediaRecorder

    ,whichrecordsaudioandvideo.

    Inthisexample,wearegoingtocaptureaudiofromthedevicesmicrophone,storeittothedeviceandthenplayitbackand/orstopplayingit.

    Forthistutorial,wewillusethefollowingtoolsinaWindows64bitplatform:

    1. JDK1.7

    2. Eclipse4.2Juno

    3. AndroidSDK4.4

    1.CreateaNewAndroidApplicationProjectOpenEclipseIDEandgotoFileNewProjectAndroidApplicationProject.

    Specifythenameoftheapplication,theprojectandthepackage.Also,set10APIorlargerastheminimumRequiredSDK,inordertosupporttheclasseswearegoingtouse.ThenpressNextbutton.

    NEWSLETTER

    104082insidersarealreadyenjoyingweeklyupdatesandcomplimentarywhitepapers!JointhemnowtogainexclusiveaccesstothelatestnewsintheJavaworld,aswellasinsightsaboutAndroid,Scala,Groovyandotherrelatedtechnologies.

    Emailaddress:

    Youremailaddress

    Signup

    JOIN US

    ANDROID CORE JAVA DESKTOP JAVA ENTERPRISE JAVA JAVA BASICS

    Search... News KnowledgeBase JobBoard About

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 2/13

    Inthenextwindow,theCreateActivityoptionshouldbechecked.Thenewcreatedactivitywillbethemainactivityofyourproject.ThenclickNext.

    InConfigureLauncherIconwindowyoushouldchoosetheiconyouwanttohaveinyourapp.Wewillusethedefaulticonofandroid,soclickNext.

    With 1,240,600uniquevisitorsandover500 authorsweareplacedamongthetopJavarelatedsitesaround.Constantlybeingonthelookoutforpartnersweencourageyoutojoinus.SoIfyouhaveablogwith

    uniqueandinterestingcontentthenyoushouldcheckoutourJCGpartnersprogram.YoucanalsobeaguestwriterforJavaCodeGeeksandhoneyourwritingskills!

    CAREER OPPORTUNITIES

    What:

    title,keywords

    Where:

    city,state,orzip

    FindJobs

    Sr.SoftwareEngineerCEIVABurbank,CA

    JavaDeveloperInnerWorkingsChicago,IL

    JavaportalaccessingsqlDBHouston,TX

    FederalJavaWebDeveloper,Analyst...AccentureArlington,VA

    SoftwareEngineerJavaGoDaddyScottsdale,AZ

    TechnologyControllersTechnology...GoldmanSachsJerseyCity,NJ

    SoftwareEngineer(Java)TrustwaveGreenwoodVillage,CO

    ITAnalyst/ProgrammerJobMayoClinicRochester,MN

    JavaApplicationDeveloperUniversityofCalifornia...Irvine,CA

    JavaDeveloper/EngineerCoWellsFargoNewYork,NY12345678910Next

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 3/13

    SelecttheBlankActivityoptionandpressNext.

    YouhavetospecifyanameforthenewActivityandanameforthelayoutdescriptionofyourapp.The.xmlfileforthelayoutwillautomaticallybecreatedintheres/layout

    folder.Finally,pressFinish.

    jobsby

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 4/13

    Youcanseethefinalstructureofthecreatedprojectintheimagebelow.

    2.CreatethelayoutoftheMainActivityInthisapplication,wewanttostartandstoprecording,aswellasstartandstopplayingtherecordingsound.ForthisreasonwearegoingtoaddfourdifferentButtons

    inthelayout,whereeachoneenablestheappropriatefunctionality.Also,aTextView

    willbeusedtoshowusthecurrentsituation.

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 5/13

    Openres/layout/activity_main.xml

    gotothexmltabandpastethefollowing.

    activity_main.xml:

    NoticethatweaddedanImageView

    whereitscontentisapictureofaudiorecording,thatAndroidprovideusthroughthedrawable.

    3.CodetheMainActivityForaudiorecord,weshouldcreateaninstanceofMediaRecorder

    classandsetsomeinformationaboutthesourceandtheoutputfile.WeuseMediaRecorder.AudioSource.MIC

    inordertosetthemicrophoneofthedeviceastheaudiosource.Inaddition,wehavetosettheformatandthenameoftheoutputfile,as

    01 06 07 14 15 23 24 30 31 36 37 44 45 46 47 53 54 60 61 68 69 70

    MasterJBossWildFlywithaFREEPackteBook!

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 6/13

    wellastheaudioencoderfortheoutputfileinordertocontainanaudiotrack.Noticethatinourexample,wealsosetthepaththattheoutputfilewillbelocated.

    Beforestartingtherecordingisveryimportanttopreparecapturingandencodingdata.Forthisreason,prepare()

    andstart()

    methodsarecalled.Itisimportanttomentionthatprepare()

    methodmustbecalledbeforestart()

    method,butafterthesettingofsource,formatandencodinginformation.Incontrast,tostopsoundrecordingstop()

    methodshouldbecalled.Afterthat,iftheinstanceofMediaRecorder

    isnotusedanymore,itisrecommendedtofreetheresource,bycallingrelease()

    method.Ifyounoticeinthecodebelow,appropriateExceptions

    arecalledforthespecificmethods.

    Inourexample,wewanttoplaybackthesoundwejustrecorded,sowecreateaninstanceofMediaPlayer

    class.Afterspecifyingthesourcefilethatwewanttouse,prepare()

    andstart()

    methodsarecalledinordertostartplayingtheaudiotrack.Respectively,stop()

    andrelease()

    methodsarecalledtostoptheplaybackandtofreetheMediaPlayer

    objectresources.

    Opensrc/com.javacodegeeks.android.audiocapturetest/MaainActivity.java

    fileandpastethecodebelow.

    MainActivity.java:

    001 packagecom.javacodegeeks.android.audiocapturetest;002 003 importjava.io.IOException;004 importandroid.media.MediaPlayer;005 importandroid.media.MediaRecorder;006 importandroid.os.Bundle;007 importandroid.os.Environment;008 importandroid.app.Activity;009 importandroid.view.View;010 importandroid.view.View.OnClickListener;011 importandroid.widget.Button;012 importandroid.widget.TextView;013 importandroid.widget.Toast;014 015 publicclassMainActivityextendsActivity{016 017 privateMediaRecordermyRecorder;018 privateMediaPlayermyPlayer;019 privateStringoutputFile=null;

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 7/13

    020 privateButtonstartBtn;021 privateButtonstopBtn;022 privateButtonplayBtn;023 privateButtonstopPlayBtn;024 privateTextViewtext;025 026 @Override027 protectedvoidonCreate(BundlesavedInstanceState){028 super.onCreate(savedInstanceState);029 setContentView(R.layout.activity_main);030 031 text=(TextView)findViewById(R.id.text1);032 //storeittosdcard033 outputFile=Environment.getExternalStorageDirectory().034 getAbsolutePath()+"/javacodegeeksRecording.3gpp";035 036 myRecorder=newMediaRecorder();037 myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);038 myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);039 myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);040 myRecorder.setOutputFile(outputFile);041 042 startBtn=(Button)findViewById(R.id.start);043 startBtn.setOnClickListener(newOnClickListener(){044 045 @Override046 publicvoidonClick(Viewv){047 //TODOAutogeneratedmethodstub048 start(v);049 }050 });051 052 stopBtn=(Button)findViewById(R.id.stop);053 stopBtn.setOnClickListener(newOnClickListener(){054 055 @Override056 publicvoidonClick(Viewv){057 //TODOAutogeneratedmethodstub058 stop(v);059 }060 });061 062 playBtn=(Button)findViewById(R.id.play);063 playBtn.setOnClickListener(newOnClickListener(){064 065 @Override066 publicvoidonClick(Viewv){067 //TODOAutogeneratedmethodstub068 play(v);069 }070 });071 072 stopPlayBtn=(Button)findViewById(R.id.stopPlay);073 stopPlayBtn.setOnClickListener(newOnClickListener(){074 075 @Override076 publicvoidonClick(Viewv){077 //TODOAutogeneratedmethodstub078 stopPlay(v);079 }080 });081 }082 083 publicvoidstart(Viewview){084 try{085 myRecorder.prepare();086 myRecorder.start();087 }catch(IllegalStateExceptione){088 //start:itiscalledbeforeprepare()089 //prepare:itiscalledafterstart()orbeforesetOutputFormat()090 e.printStackTrace();091 }catch(IOExceptione){092 //prepare()fails093 e.printStackTrace();094 }095 096 text.setText("RecordingPoint:Recording");097 startBtn.setEnabled(false);098 stopBtn.setEnabled(true);099 100 Toast.makeText(getApplicationContext(),"Startrecording...",101 Toast.LENGTH_SHORT).show();102 }103 104 publicvoidstop(Viewview){105 try{106 myRecorder.stop();107 myRecorder.release();108 myRecorder=null;109 110 stopBtn.setEnabled(false);111 playBtn.setEnabled(true);112 text.setText("RecordingPoint:Stoprecording");113 114 Toast.makeText(getApplicationContext(),"Stoprecording...",115 Toast.LENGTH_SHORT).show();116 }catch(IllegalStateExceptione){117 //itiscalledbeforestart()118 e.printStackTrace();119 }catch(RuntimeExceptione){120 //novalidaudio/videodatahasbeenreceived121 e.printStackTrace();122 }123 }

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 8/13

    4.SetthepermissionsWehavetodeclarethepermissionsintheAndroidManifest.xml

    fileofourproject.WRITE_EXTERNAL_STORAGE

    istowritetheoutputfileintotheexternalstorageofourdevice(sdcard).RECORD_AUDIO

    isnecessaryforMediaRecorder

    classtocaptureaudio.

    OpenAndroidManifest.xml

    fileandpastethefollowingcode.

    AndroidManifest.xml:

    124 125 publicvoidplay(Viewview){126 try{127 myPlayer=newMediaPlayer();128 myPlayer.setDataSource(outputFile);129 myPlayer.prepare();130 myPlayer.start();131 132 playBtn.setEnabled(false);133 stopPlayBtn.setEnabled(true);134 text.setText("RecordingPoint:Playing");135 136 Toast.makeText(getApplicationContext(),"Startplaytherecording...",137 Toast.LENGTH_SHORT).show();138 }catch(Exceptione){139 //TODOAutogeneratedcatchblock140 e.printStackTrace();141 }142 }143 144 publicvoidstopPlay(Viewview){145 try{146 if(myPlayer!=null){147 myPlayer.stop();148 myPlayer.release();149 myPlayer=null;150 playBtn.setEnabled(true);151 stopPlayBtn.setEnabled(false);152 text.setText("RecordingPoint:Stopplaying");153 154 Toast.makeText(getApplicationContext(),"Stopplayingtherecording...",155 Toast.LENGTH_SHORT).show();156 }157 }catch(Exceptione){158 //TODOAutogeneratedcatchblock159 e.printStackTrace();160 }161 }162 163 }

    01 02 06 07 10 11 12 13 14 19 22 23 24 25 26 27 28

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 9/13

    5.RuntheapplicationInthisexample,wecantusetheandroidemulatortorunourapplication,becauseishasnttheabilitytocaptureaudio.ForthisreasonwehavetoconnectEclipsewithourAndroiddeviceandruntheapplicationthroughit.

    So,connectyourAndroiddevicewithyourpcthroughUSB.DontforgettoenableUSBdebuggingoption,byfollowingSettingsApplicationsDevelopmentpath.

    ThengotoEclipse,rightclickonourprojectRunasRunConfigurations.

    Inthepopupwindowchoosethecurrentproject,gototheTarget

    tabandchooseAlwaysprompttopickdeviceoption.ThenclickNext.

    FinallychoosetherunningAndroiddeviceandpressOK,asshowninthenextpicture.

    TheappwillbeloadedinyourAndroiddevice,asyoucanseeintheimagebelow.

    29 30

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 10/13

    Letspressstartbuttoninordertostartaudiorecording.Asyoucanseeinthepicturebelow,aToast

    appearsandtheTextView

    issettoRecording.

    Nowclickstopbutton.Theaudiotrackwillautomaticallybestoredintoyourexternalcard.Noticethatstopbuttonisnotclickableanymore.

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 11/13

    Ifyouwanttolistentotheaudioyoujustrecorded,pressplaybutton.TheTextView

    willchangeagainandaToast

    messagewillbeenabled.

    Finally,pressstopplayingbuttonbeforetheaudiotrackends.Thismove,willstoptheaudioandwillenableplaybuttonagain,inordertolistentoitagain.

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 12/13

    DownloadEclipseProjectThiswasanexampleofAudioCaptureinAndroid.DownloadtheEclipseProjectofthisexample:AudioCaptureTest.zip

    Taggedwith: MEDIAPLAYER

    DoyouwanttoknowhowtodevelopyourskillsettobecomeaJavaRockstar?

    SubscribetoournewslettertostartRockingrightnow!TogetyoustartedwegiveyouourbestsellingeBooksforFREE!1.JPAMiniBook2.JVMTroubleshootingGuide3.JUnitTutorialforUnitTesting4.JavaAnnotationsTutorial5.JavaInterviewQuestions6.SpringInterviewQuestions7.AndroidUIDesign

    andmanymore....

    Emailaddress:

    Youremailaddress

    Signup

  • 7/5/2015 AndroidAudioCaptureExample|ExamplesJavaCodeGeeks

    http://examples.javacodegeeks.com/android/core/media/mediarecorder/androidaudiocaptureexample/ 13/13

    KNOWLEDGE BASE

    Academy

    Library

    News

    Resources

    Tutorials

    Whitepapers

    THE CODE GEEKS NETWORK

    .NETCodeGeeks

    JavaCodeGeeks

    WebCodeGeeks

    HALL OF FAME

    AndroidAlertDialogExample

    AndroidOnClickListenerExample

    HowtoconvertCharactertoStringandaStringtoCharacterArrayinJava

    JavaInheritanceexample

    JavawritetoFileExample

    java.io.FileNotFoundExceptionHowtosolveFileNotFoundException

    java.lang.arrayindexoutofboundsexceptionHowtohandleArrayIndexOutOfBoundsException

    java.lang.NoClassDefFoundErrorHowtosolveNoClassDefFoundError

    JSONExampleWithJersey+Jackson

    SpringJdbcTemplateExample

    ABOUT JAVA CODE GEEKS

    JCGs(JavaCodeGeeks)isanindependentonlinecommunityfocusedoncreatingtheultimateJavatoJavadevelopersresourcecentertargetedatthetechnicalarchitect,technicalteamlead(seniordeveloper),projectmanagerandjuniordevelopersalike.JCGsservetheJava,SOA,AgileandTelecomcommunitieswithdailynewswrittenbydomainexperts,articles,tutorials,reviews,announcements,codesnippetsandopensourceprojects.

    DISCLAIMER

    AlltrademarksandregisteredtrademarksappearingonExamplesJavaCodeGeeksarethepropertyoftheirrespectiveowners.JavaisatrademarkorregisteredtrademarkofOracleCorporationintheUnitedStatesandothercountries.ExamplesJavaCodeGeeksisnotconnectedtoOracleCorporationandisnotsponsoredbyOracleCorporation.

    ExamplesJavaCodeGeeksandallcontentcopyright20102015,ExelixisMediaP.C.|TermsofUse|PrivacyPolicy|Contact