2017-03-16 17 views
0

我已經設置了一項活動,名爲說句,當按下「開始說話」按鈕時錄製用戶的音頻,然後在按下「停止說話」按鈕時停止錄製。然後將該文件保存在名爲的Say目錄的子目錄中,該目錄位於主應用程序的文件夾中。我設法讓我的代碼正常工作,以便它可以保存一個名爲saysentence.3gpp的音頻文件,並在用戶每次再次記錄時替換它。錄製和存儲多個音頻文件

不過,我想有它設置,使用戶可以記錄多個文件,也許它們命名類似saysentence001.3gpp,saysentence002.3gpp等

這是我目前的活動:

public class SaySentence extends AppCompatActivity { 

    private MediaRecorder recorder; 
    private String OUTPUT_FILE; 
    private TextView mStatus; 
    private TextView mRecorded; 

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

     String sep = File.separator; 
     String newFolder = "SaySentence"; 
     String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
     File myNewFolder = new File(extStorageDirectory + sep + "AudioRecordingTest" + sep + newFolder); 
     myNewFolder.mkdir(); 

     OUTPUT_FILE = Environment.getExternalStorageDirectory().toString()+ sep + "AudioRecordingTest" + sep + newFolder + sep + "saysentence.3gpp"; 
     mStatus = (TextView) findViewById(R.id.txtStatus); 
     mRecorded = (TextView) findViewById(R.id.txtRecorded); 

    } 

    public void startSpeaking(View view) { 
     try { 
      beginRecording(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public void stopSpeaking(View view) { 
     try { 
      stopRecording(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void beginRecording() { 
     ditchMediaRecorder(); 
     File outFile = new File(OUTPUT_FILE); 

     mStatus.setText("Recording"); 

     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); 

     try { 
      recorder.prepare(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     recorder.start(); 

    } 

    private void stopRecording() { 
     mStatus.setText("Recording Stopped"); 
     mRecorded.setText("Audio file saved to: " + OUTPUT_FILE); 

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

    } 

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

如何輕鬆實現該功能以允許我的應用程序記錄和存儲多個音頻文件?

回答

0

您有2個選項從

  1. 檢查來選擇第一您的文件夾中的文件。計算文件數量和計數結果+1將成爲您的新文件名。

  2. 使用SharedPreferences。跟蹤您的共享首選項中的文件數量。

+0

如何使用SharedPreferences? – FlameDra