2017-08-05 117 views
0

我想音頻在我的應用程序 記錄上的一個按鈕按下錄製音頻使用錄音機,然後上傳在服務器上的Android

Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); 
    startActivityForResult(intent, ACTIVITY_RECORD_SOUND); 

但它給我的錯誤

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.provider.MediaStore.RECORD_SOUND } 

但是當我從Play商店安裝了任何錄音機,但這個錯誤消失了,但是在錄製完音頻後它不會返回任何東西。它留在記錄器窗口。

也是我必須寫來獲取音頻文件,並將其上傳到服務器

 @Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

} 

回答

0

但它給我的錯誤

有Android設備沒有要求有一個活動迴應該行動。

當我從Play商店安裝任何錄音機時,此錯誤消失,但錄製完音頻後它不返回任何內容。它留在記錄器窗口。

該應用程序有一個bug,顯然。

也是我必須寫來獲取音頻文件,並將其上傳到服務器

引用the documentation for RECORD_SOUND_ACTION,輸出是「如果記錄所錄製的聲音存儲媒體庫中的URI那是成功的」。 IOW,請致電getData()Intent發送至onActivityResult(),並假定爲指向錄製音頻的Uri。請注意,這不必在文件系統上表示文件,更不用說可以訪問的文件。

0

您可以使用下面的代碼。

MediaRecorder recorder = new MediaRecorder(); 
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     recorder.setOutputFile(path); 
//   recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);   for mp3 audio 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.prepare(); 
recorder.start(); 

並且路徑可以是文件存在的任何地方。

path = Environment.getExternalStorageDirectory() + "/Android/data/" + context.getApplicationContext().getPackageName() + "/files/" + "myrecording.m4a";