My code right now includes a mediarecorder that outputs a 3gp file into emulated storage. Is there any way to have the mediarecorder output a wav file instead? or maybe should I take the 3gp file and convert it to wav in the method?
package com.example.wesle.noisemachine;
import android.content.Intent;
import android.media.AudioTrack;
import android.media.MediaCodec;
import android.media.MediaFormat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.AppCompatDrawableManager;
import android.view.View;
import android.widget.Button;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Environment;
import android.widget.Toast;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ReceiveScreen extends AppCompatActivity {
private Button buttonStart, buttonStop, buttonPlay, buttonDecode;
private MediaRecorder mediaRecorder = new MediaRecorder();
private String outputFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receive_screen);
buttonStart = (Button) findViewById(R.id.buttonStart);
buttonStop = (Button) findViewById(R.id.buttonStop);
buttonPlay = (Button) findViewById(R.id.buttonPlay);
buttonDecode = (Button) findViewById(R.id.buttonDecode);
buttonStop.setEnabled(false);
buttonPlay.setEnabled(false);
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";
System.out.println(outputFile);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(outputFile);
buttonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IllegalStateException ise) {
System.out.println("ISE Catch");
} catch (IOException ioe) {
System.out.println("IO Catch");
}
buttonStart.setEnabled(false);
buttonStop.setEnabled(true);
Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show();
}
});
buttonStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mediaRecorder.stop();
mediaRecorder.release();
buttonStop.setEnabled(false);
buttonPlay.setEnabled(true);
buttonStart.setEnabled(true);
Toast.makeText(getApplicationContext(), "Recording Completed", Toast.LENGTH_LONG).show();
}
});
buttonPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(outputFile);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (Exception e) {
System.out.println("E Catch");
}
Toast.makeText(getApplicationContext(), "Recording Playing", Toast.LENGTH_LONG).show();
}
});
buttonDecode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
//Code for the back button
Button backbuttonR = (Button) findViewById(R.id.backbuttonR);
backbuttonR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(ReceiveScreen.this, MainActivity.class));
}
});
}
}
WAV is a raw audio format that uses PCM encoding. MediaRecorder
does not provide raw audio recording.
If you want to record WAV, use AudioRecord instead.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.