Android has a built in microphone through which you can capture audio and store it , or play it in your phone. There are many ways to do that but the most common way is through MediaRecorder class.
Android provides MediaRecorder class to record audio or video. In order to use MediaRecorder class ,you will first create an instance of MediaRecorder class. Its syntax is given below.
MediaRecorder myAudioRecorder = new MediaRecorder();
Now you will set the source , output and encoding format and output file. Their syntax is given below.
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); myAudioRecorder.setOutputFile(outputFile);
After specifying the audio source and format and its output file, we can then call the two basic methods perpare and start to start recording the audio.
myAudioRecorder.prepare(); myAudioRecorder.start();
Apart from these methods , there are other methods listed in the MediaRecorder class that allows you more control over audio and video recording.
Sr.No | Method & description |
---|---|
1 | setAudioSource() This method specifies the source of audio to be recorded |
2 | setVideoSource() This method specifies the source of video to be recorded |
3 | setOutputFormat() This method specifies the audio format in which audio to be stored |
4 | setAudioEncoder() This method specifies the audio encoder to be used |
5 | setOutputFile() This method configures the path to the file into which the recorded audio is to be stored |
6 | stop() This method stops the recording process. |
7 | release() This method should be called when the recorder instance is needed. |
Example
Create MainActivity.java
- public class MainActivity extends Activity {private MediaRecorder myAudioRecorder;private String outputFile = null;private Button start, stop, play, pause;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);start = (Button) findViewById(R.id.button1);stop = (Button) findViewById(R.id.button2);play = (Button) findViewById(R.id.button3);pause = (Button) findViewById(R.id.button4);stop.setEnabled(false);play.setEnabled(false);pause.setEnabled(false); outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myrecording.3gp";myAudioRecorder = new MediaRecorder();myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);myAudioRecorder.setOutputFile(outputFile);}public void start(View view) {try {myAudioRecorder.prepare();myAudioRecorder.start();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}start.setEnabled(false);stop.setEnabled(true);pause.setEnabled(false);Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show();}public void stop(View view) {myAudioRecorder.stop();myAudioRecorder.release();myAudioRecorder = null;stop.setEnabled(false);play.setEnabled(true);Toast.makeText(getApplicationContext(), "Audio recorded successfully", Toast.LENGTH_LONG).show();}public void pause(View view) throws IllegalArgumentException,SecurityException, IllegalStateException, IOException {MediaPlayer media = new MediaPlayer();media.setDataSource(outputFile);media.prepare();media.pause();Toast.makeText(getApplicationContext(), "Audio pause ", Toast.LENGTH_LONG).show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void play(View view) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException {MediaPlayer media = new MediaPlayer();if (media.isPlaying()) {media.setDataSource(outputFile);media.prepare();media.pause();} else {media.setDataSource(outputFile);media.prepare();media.start();}pause.setEnabled(true);Toast.makeText(getApplicationContext(), "Playing audio", Toast.LENGTH_LONG).show();}}
main.xml
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity" ><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_alignParentTop="true"android:layout_marginTop="32dp"android:text="Recording"android:textAppearance="?android:attr/textAppearanceMedium" /><ImageViewandroid:id="@+id/imageView1"android:layout_width="100dp"android:layout_height="100dp"android:layout_below="@+id/textView1"android:layout_centerHorizontal="true"android:layout_marginTop="37dp"android:scaleType="fitXY"android:src="@android:drawable/presence_audio_online" /><LinearLayoutandroid:id="@+id/linear"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/imageView1"android:orientation="horizontal" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/imageView1"android:layout_toLeftOf="@+id/imageView1"android:onClick="start"android:text="start" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/button1"android:layout_alignBottom="@+id/button1"android:layout_alignRight="@+id/textView1"android:onClick="stop"android:text="stop" /><Buttonandroid:id="@+id/button3"style="?android:attr/buttonStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/button2"android:onClick="play"android:text="play" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBottom="@+id/button2"android:layout_alignRight="@+id/textView1"android:onClick="pause"android:text="pause" /></LinearLayout></RelativeLayout>
No comments:
Post a Comment