The android.media.AudioRecord class manages the audio resources for Java applications to record audio from the audio input hardware of the platform.
record.xml:
AndroidAudioRecordActivity:
Click here for more ref Link:
record.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="HB-Record
Audio" />
<Button
android:id="@+id/startrec"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start
Recording" />
<Button
android:id="@+id/stoprec"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Stop
Recording" />
<Button
android:id="@+id/playback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Play
Back" />
</LinearLayout>
AndroidAudioRecordActivity:
public class
AndroidAudioRecordActivity extends Activity
{
Button
startRec, stopRec, playBack;
Boolean
recording;
@Override
public void onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.record);
startRec =
(Button)findViewById(R.id.startrec);
stopRec =
(Button)findViewById(R.id.stoprec);
playBack =
(Button)findViewById(R.id.playback);
startRec.setOnClickListener(startRecOnClickListener);
stopRec.setOnClickListener(stopRecOnClickListener);
playBack.setOnClickListener(playBackOnClickListener);
}
OnClickListener
startRecOnClickListener = new OnClickListener()
{
@Override
public void onClick(View
arg0)
{
Thread
recordThread = new Thread(new Runnable()
{
@Override
public void run()
{
recording = true;
startRecord();
}
});
recordThread.start();
}};
OnClickListener
stopRecOnClickListener = new
OnClickListener()
{
@Override
public void onClick(View
arg0)
{
recording = false;
}};
OnClickListener
playBackOnClickListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
playRecord();
}
};
private void startRecord()
{
File
file = new File(Environment.getExternalStorageDirectory(), "test.pcm");
try
{
file.createNewFile();
OutputStream
outputStream = new FileOutputStream(file);
BufferedOutputStream
bufferedOutputStream = new BufferedOutputStream(outputStream);
DataOutputStream
dataOutputStream = new DataOutputStream(bufferedOutputStream);
int minBufferSize =
AudioRecord.getMinBufferSize(11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
short[] audioData = new short[minBufferSize];
AudioRecord
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
minBufferSize);
audioRecord.startRecording();
while(recording)
{
int numberOfShort =
audioRecord.read(audioData, 0, minBufferSize);
for(int i = 0; i <
numberOfShort; i++)
{
dataOutputStream.writeShort(audioData[i]);
}
}
audioRecord.stop();
dataOutputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
void playRecord()
{
File
file = new File(Environment.getExternalStorageDirectory(), "test.pcm");
int
shortSizeInBytes = Short.SIZE/Byte.SIZE;
int
bufferSizeInBytes = (int)(file.length()/shortSizeInBytes);
short[] audioData = new short[bufferSizeInBytes];
try {
InputStream
inputStream = new FileInputStream(file);
BufferedInputStream
bufferedInputStream = new BufferedInputStream(inputStream);
DataInputStream
dataInputStream = new DataInputStream(bufferedInputStream);
int i = 0;
while(dataInputStream.available()
> 0)
{
audioData[i]
= dataInputStream.readShort();
i++;
}
dataInputStream.close();
AudioTrack
audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSizeInBytes,
AudioTrack.MODE_STREAM);
audioTrack.play();
audioTrack.write(audioData,
0, bufferSizeInBytes);
}
catch (FileNotFoundException
e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Permission:
<uses-permission android:name="android.permission.RECORD_AUDIO"
/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>
Click here for more ref Link:
I
will be happy if you will provide your feedback or follow this blog. Any suggestion
and help will be appreciated.
Thank
you :)
I'm getting a white noise in the background of recording. How do I get rid of this?
ReplyDelete