16d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezpage.title=Audio Capture 26d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezparent.title=Multimedia and Camera 36d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezparent.link=index.html 46d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez@jd:body 56d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 66d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <div id="qv-wrapper"> 76d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <div id="qv"> 86d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 96d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<h2>In this document</h2> 106d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<ol> 116d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<li><a href="#audiocapture">Performing Audio Capture</a> 126d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <ol> 136d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li><a href='#example'>Code Example</a></li> 146d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez </ol> 156d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</li> 166d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</ol> 176d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 186d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<h2>Key classes</h2> 196d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<ol> 206d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<li>{@link android.media.MediaRecorder}</li> 216d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</ol> 226d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 236d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<h2>See also</h2> 246d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<ol> 256d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li><a href="{@docRoot}guide/appendix/media-formats.html">Android Supported Media Formats</a></li> 266d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li><a href="{@docRoot}guide/topics/data/data-storage.html">Data Storage</a></li> 276d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li><a href="{@docRoot}guide/topics/media/mediaplayer.html">MediaPlayer</a> 286d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</ol> 296d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 306d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</div> 316d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</div> 326d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 336d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<p>The Android multimedia framework includes support for capturing and encoding a variety of common 346d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezaudio formats, so that you can easily integrate audio into your applications. You can record audio 356d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezusing the {@link android.media.MediaRecorder} APIs if supported by the device hardware.</p> 366d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 376d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<p>This document shows you how to write an application that captures audio from a device 386d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezmicrophone, save the audio and play it back.</p> 396d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 406d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<p class="note"><strong>Note:</strong> The Android Emulator does not have the ability to capture 416d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezaudio, but actual devices are likely to provide these capabilities.</p> 426d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 436d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<h2 id="audiocapture">Performing Audio Capture</h2> 446d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 456d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<p>Audio capture from the device is a bit more complicated than audio and video playback, but still 466d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezfairly simple:</p> 476d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<ol> 486d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>Create a new instance of {@link android.media.MediaRecorder android.media.MediaRecorder}.</li> 496d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>Set the audio source using 506d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez {@link android.media.MediaRecorder#setAudioSource MediaRecorder.setAudioSource()}. You will 516d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezprobably want to use 526d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <code>MediaRecorder.AudioSource.MIC</code>.</li> 536d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>Set output file format using 546d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez {@link android.media.MediaRecorder#setOutputFormat MediaRecorder.setOutputFormat()}. 556d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez </li> 566d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>Set output file name using 576d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez {@link android.media.MediaRecorder#setOutputFile MediaRecorder.setOutputFile()}. 586d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez </li> 596d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>Set the audio encoder using 606d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez {@link android.media.MediaRecorder#setAudioEncoder MediaRecorder.setAudioEncoder()}. 616d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez </li> 626d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>Call {@link android.media.MediaRecorder#prepare MediaRecorder.prepare()} 636d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez on the MediaRecorder instance.</li> 646d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>To start audio capture, call 656d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez {@link android.media.MediaRecorder#start MediaRecorder.start()}. </li> 666d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>To stop audio capture, call {@link android.media.MediaRecorder#stop MediaRecorder.stop()}. 676d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez <li>When you are done with the MediaRecorder instance, call 686d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez{@link android.media.MediaRecorder#release MediaRecorder.release()} on it. Calling 696d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez{@link android.media.MediaRecorder#release MediaRecorder.release()} is always recommended to 706d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezfree the resource immediately.</li> 716d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</ol> 726d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 736d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<h3 id="example">Example: Record audio and play the recorded audio</h3> 746d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<p>The example class below illustrates how to set up, start and stop audio capture, and to play the 756d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezrecorded audio file.</p> 766d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez<pre> 776d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez/* 786d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * The application needs to have the permission to write to external storage 796d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * if the output file is written to the external storage, and also the 806d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * permission to record audio. These permissions must be set in the 816d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * application's AndroidManifest.xml file, with something like: 826d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * 836d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 846d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * <uses-permission android:name="android.permission.RECORD_AUDIO" /> 856d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez * 866d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez */ 876d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezpackage com.android.audiorecordtest; 886d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 896d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.app.Activity; 906d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.widget.LinearLayout; 916d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.os.Bundle; 926d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.os.Environment; 936d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.view.ViewGroup; 946d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.widget.Button; 956d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.view.View; 966d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.view.View.OnClickListener; 976d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.content.Context; 986d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.util.Log; 996d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.media.MediaRecorder; 1006d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport android.media.MediaPlayer; 1016d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1026d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezimport java.io.IOException; 1036d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1046d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1056d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandezpublic class AudioRecordTest extends Activity 1066d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez{ 1076d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private static final String LOG_TAG = "AudioRecordTest"; 1086d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private static String mFileName = null; 1096d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1106d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private RecordButton mRecordButton = null; 1116d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private MediaRecorder mRecorder = null; 1126d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1136d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private PlayButton mPlayButton = null; 1146d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private MediaPlayer mPlayer = null; 1156d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1166d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private void onRecord(boolean start) { 1176d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez if (start) { 1186d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez startRecording(); 1196d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } else { 1206d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez stopRecording(); 1216d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1226d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1236d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1246d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private void onPlay(boolean start) { 1256d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez if (start) { 1266d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez startPlaying(); 1276d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } else { 1286d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez stopPlaying(); 1296d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1306d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1316d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1326d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private void startPlaying() { 1336d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer = new MediaPlayer(); 1346d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez try { 1356d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer.setDataSource(mFileName); 1366d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer.prepare(); 1376d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer.start(); 1386d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } catch (IOException e) { 1396d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez Log.e(LOG_TAG, "prepare() failed"); 1406d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1416d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1426d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1436d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private void stopPlaying() { 1446d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer.release(); 1456d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer = null; 1466d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1476d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1486d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private void startRecording() { 1496d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder = new MediaRecorder(); 1506d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 1516d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 1526d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.setOutputFile(mFileName); 1536d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 1546d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1556d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez try { 1566d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.prepare(); 1576d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } catch (IOException e) { 1586d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez Log.e(LOG_TAG, "prepare() failed"); 1596d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1606d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1616d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.start(); 1626d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1636d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1646d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez private void stopRecording() { 1656d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.stop(); 1666d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.release(); 1676d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder = null; 1686d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1696d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1706d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez class RecordButton extends Button { 1716d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez boolean mStartRecording = true; 1726d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1736d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez OnClickListener clicker = new OnClickListener() { 1746d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez public void onClick(View v) { 1756d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez onRecord(mStartRecording); 1766d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez if (mStartRecording) { 1776d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setText("Stop recording"); 1786d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } else { 1796d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setText("Start recording"); 1806d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1816d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mStartRecording = !mStartRecording; 1826d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1836d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez }; 1846d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1856d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez public RecordButton(Context ctx) { 1866d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez super(ctx); 1876d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setText("Start recording"); 1886d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setOnClickListener(clicker); 1896d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1906d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 1916d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1926d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez class PlayButton extends Button { 1936d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez boolean mStartPlaying = true; 1946d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 1956d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez OnClickListener clicker = new OnClickListener() { 1966d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez public void onClick(View v) { 1976d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez onPlay(mStartPlaying); 1986d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez if (mStartPlaying) { 1996d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setText("Stop playing"); 2006d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } else { 2016d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setText("Start playing"); 2026d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2036d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mStartPlaying = !mStartPlaying; 2046d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2056d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez }; 2066d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 2076d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez public PlayButton(Context ctx) { 2086d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez super(ctx); 2096d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setText("Start playing"); 2106d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setOnClickListener(clicker); 2116d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2126d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2136d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 2146d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez public AudioRecordTest() { 2156d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mFileName = Environment.getExternalStorageDirectory().getAbsolutePath(); 2166d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mFileName += "/audiorecordtest.3gp"; 2176d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2186d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 2196d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez @Override 2206d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez public void onCreate(Bundle icicle) { 2216d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez super.onCreate(icicle); 2226d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 2236d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez LinearLayout ll = new LinearLayout(this); 2246d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecordButton = new RecordButton(this); 2256d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez ll.addView(mRecordButton, 2266d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez new LinearLayout.LayoutParams( 2276d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez ViewGroup.LayoutParams.WRAP_CONTENT, 2286d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez ViewGroup.LayoutParams.WRAP_CONTENT, 2296d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 0)); 2306d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayButton = new PlayButton(this); 2316d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez ll.addView(mPlayButton, 2326d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez new LinearLayout.LayoutParams( 2336d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez ViewGroup.LayoutParams.WRAP_CONTENT, 2346d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez ViewGroup.LayoutParams.WRAP_CONTENT, 2356d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 0)); 2366d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez setContentView(ll); 2376d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2386d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 2396d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez @Override 2406d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez public void onPause() { 2416d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez super.onPause(); 2426d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez if (mRecorder != null) { 2436d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder.release(); 2446d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mRecorder = null; 2456d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2466d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez 2476d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez if (mPlayer != null) { 2486d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer.release(); 2496d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez mPlayer = null; 2506d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2516d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez } 2526d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez} 2536d78639868fba7c51aed39aa1029e4c7f86d26c9Joe Fernandez</pre>