不喜歡這樣的方式,
Intent i = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
i.putExtra(MediaStore.EXTRA_OUTPUT, myAudio);
然後創建onActivityResult
並添加以下代碼。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case CAPTURE_AUDIO:
Uri audioUri = data.getData();
String absolutepath = getRealPathFromURI(audioUri);
String path2 = Environment.getExternalStorageDirectory()
+ "/Ringtone/";
File file = new File(absolutepath);
File file2 = new File(path2 + "RecordedAudio.3gpp");
file.renameTo(file2);
break;
default:
break;
}
}
}
這裏是你的getRealPathFromURI
方法。
public String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Audio.Media.DATA };
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
cursor.moveToFirst();
System.out.println("absolutepath audiopath in getRealPathFromURI : "
+ cursor.getString(column_index));
return cursor.getString(column_index);
}
肯定這會爲你工作。
由於您正在刪除目錄myAudioFile.delete();'刪除此行,您就完成了。 – InnocentKiller
已刪除,但仍未解決 – Sun
因爲您正在使用Intent錄製默認錄音機的音頻,因此無論您提供什麼路徑,它都會將錄製的音頻存儲到默認目錄。解決方案是您必須獲取上次錄製音頻的路徑,然後您必須將該文件移動或複製到目標位置。 – InnocentKiller