2015-10-19 43 views
0

我知道如何使用MediaRecorder錄製音頻文件。 我想上傳服務器上的音頻文件,但在此之前,我想壓縮它。Android:如何在錄製後壓縮音頻文件,然後保存它

注:我以.3gpp格式錄製音頻。 這是我的課:

package com.iotaconcepts.task3; 

import android.media.MediaPlayer; 
import android.media.MediaRecorder; 
import android.os.Environment; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 

import java.io.File; 
import java.io.IOException; 

public class MainActivity extends AppCompatActivity 
{ 

MediaPlayer mediaPlayer; 
MediaRecorder recorder; 
String OUTPUT_FILE; 

Button beginRecording, stopRecording, playRecording, stopPlayback; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    OUTPUT_FILE = Environment.getExternalStorageDirectory() + "/audiorecorder.3gpp"; 

    beginRecording = (Button)findViewById(R.id.bt_begin); 
    stopRecording = (Button)findViewById(R.id.bt_stop_recording); 
    playRecording = (Button)findViewById(R.id.bt_play_recording); 
    stopPlayback = (Button)findViewById(R.id.bt_stop_playback); 


    beginRecording.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       beginRecording(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

    stopRecording.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      stopRecording(); 
     } 
    }); 

    playRecording.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       playRecording(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

    stopPlayback.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      stopPlayback(); 
     } 
    }); 


} 



public void beginRecording() throws IOException { 
    // If media recorder is working ... stop it 
    ditchMediaRecorder(); 

    File outFile = new File(OUTPUT_FILE); 

    if(outFile.exists()) 
     outFile.delete(); 

    recorder = new MediaRecorder(); 
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    recorder.setOutputFile(OUTPUT_FILE); 
    recorder.prepare(); 
    recorder.start(); 
} 


public void stopRecording() 
{ 
    if (recorder != null) 
     recorder.stop(); 
} 


public void playRecording() throws IOException 
{ 
    ditchMediaPlayer(); 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setDataSource(OUTPUT_FILE); 
    mediaPlayer.prepare(); 
    mediaPlayer.start(); 
} 


public void stopPlayback() 
{ 
    if (mediaPlayer != null) 
    { 
     mediaPlayer.stop(); 
    } 
} 


public void ditchMediaRecorder() 
{ 
    if(recorder!=null) 
    { 
     recorder.release(); 
    } 
} 


public void ditchMediaPlayer() 
{ 
    if (mediaPlayer != null) 
    { 
     mediaPlayer.release(); 
    } 
    } 

} 

我已經列入清單所需的權限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 

回答

相關問題