在android中使用麦克风录制mp3格式的音频

在android中使用麦克风录制mp3格式的音频,android,audio,mp3,Android,Audio,Mp3,我想在android中使用麦克风录制mp3格式的音频。 我试着记录下面的代码, 但是当我检查sdcard(路径:sdcard/recording.mp3)时,该文件不起作用。 (文件大小为0kb) 如何在android中以mp3或wav格式录制麦克风音频。 请帮忙 private final int FREQUENCY = 11025; private final int CUSTOM_FREQ_SOAP = 1; private final int OUT_FREQUENCY = FREQUE

我想在android中使用麦克风录制mp3格式的音频。 我试着记录下面的代码, 但是当我检查sdcard(路径:sdcard/recording.mp3)时,该文件不起作用。 (文件大小为0kb)

如何在android中以mp3或wav格式录制麦克风音频。 请帮忙

private final int FREQUENCY = 11025;
private final int CUSTOM_FREQ_SOAP = 1;
private final int OUT_FREQUENCY = FREQUENCY * CUSTOM_FREQ_SOAP;
private final int CHANNEL_CONTIGURATION = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private final int AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;
======

try {
        mRecordingFile = File.createTempFile("recording", ".mp3", new File("/sdcard/"));


    } catch (IOException e) {
        throw new RuntimeException("Couldn't create file on SD card", e);
    }
private class RecordAudio extends AsyncTask<Void, Integer, Void> {
    @Override
    protected Void doInBackground(Void... params) {
        isRecording = true;
        try {
            DataOutputStream dos = new DataOutputStream(
                    new BufferedOutputStream(new FileOutputStream(
                            mRecordingFile, true)));

            int bufferSize = AudioRecord.getMinBufferSize(FREQUENCY,
                    CHANNEL_CONTIGURATION, AUDIO_ENCODING);

            AudioRecord audioRecord = new AudioRecord(
                    MediaRecorder.AudioSource.MIC, FREQUENCY,
                    CHANNEL_CONTIGURATION, AUDIO_ENCODING, bufferSize);

            short[] buffer = new short[bufferSize];
            audioRecord.startRecording();

            while (isRecording) {
                int bufferReadResult = audioRecord.read(buffer, 0,
                        bufferSize);
                int amplitude = 0;
                for (int i = 0; i < bufferReadResult; i++) {
                    dos.writeShort(buffer[i]);
                    amplitude += Math.abs((int) buffer[i]);
                }
                final int amp = amplitude;

            }

            audioRecord.stop();
                //dos.close();


        } catch (Throwable t) {
        }

        return null;
    }
======

try {
        mRecordingFile = File.createTempFile("recording", ".mp3", new File("/sdcard/"));


    } catch (IOException e) {
        throw new RuntimeException("Couldn't create file on SD card", e);
    }
private class RecordAudio extends AsyncTask<Void, Integer, Void> {
    @Override
    protected Void doInBackground(Void... params) {
        isRecording = true;
        try {
            DataOutputStream dos = new DataOutputStream(
                    new BufferedOutputStream(new FileOutputStream(
                            mRecordingFile, true)));

            int bufferSize = AudioRecord.getMinBufferSize(FREQUENCY,
                    CHANNEL_CONTIGURATION, AUDIO_ENCODING);

            AudioRecord audioRecord = new AudioRecord(
                    MediaRecorder.AudioSource.MIC, FREQUENCY,
                    CHANNEL_CONTIGURATION, AUDIO_ENCODING, bufferSize);

            short[] buffer = new short[bufferSize];
            audioRecord.startRecording();

            while (isRecording) {
                int bufferReadResult = audioRecord.read(buffer, 0,
                        bufferSize);
                int amplitude = 0;
                for (int i = 0; i < bufferReadResult; i++) {
                    dos.writeShort(buffer[i]);
                    amplitude += Math.abs((int) buffer[i]);
                }
                final int amp = amplitude;

            }

            audioRecord.stop();
                //dos.close();


        } catch (Throwable t) {
        }

        return null;
    }
私有类RecordAudio扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
isRecording=true;
试一试{
DataOutputStream dos=新的DataOutputStream(
新建BufferedOutputStream(新文件输出流(
mRecordingFile,true));
int bufferSize=AudioRecord.getMinBufferSize(频率,
信道连接、音频编码);
音频记录=新的音频记录(
MediaRecorder.AudioSource.MIC,频率,
通道连接、音频编码、缓冲区大小);
short[]buffer=新的short[bufferSize];
录音。开始录制();
while(isRecording){
int bufferReadResult=audioRecord.read(缓冲区,0,
缓冲区大小);
int振幅=0;
for(int i=0;i
我认为,在这种情况下,它不支持mp3格式(OutputFormat是MPEG_4)…TT