case R.id.record_sound:
// 錄音檔案名稱
final File recordFile = configFileName("R", ".mp3");
// 如果已經有錄音檔,詢問播放或重新錄製
if (recordFile.exists()) {
// 詢問播放還是重新錄製的對話框
AlertDialog.Builder d = new AlertDialog.Builder(this);
d.setTitle(R.string.title_record)
.setCancelable(false);
d.setPositiveButton(R.string.record_play,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// 播放
Intent playIntent = new Intent(
EditActivity.this,PlayActivity.class);
playIntent.putExtra("fileName",
recordFile.getAbsolutePath());
startActivity(playIntent);
}
});
d.setNeutralButton(R.string.record_new,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
goToRecord(recordFile);
}
});
d.setNegativeButton(android.R.string.cancel, null);
// 顯示對話框
d.show();
}
// 如果沒有錄音檔,啟動錄音元件
else {
goToRecord(recordFile);
}
break;
- 創建錄音檔名稱。
- 如果檔案存在,則跳出Dialog,詢問是否要播放或者重新錄製,以及取消按鈕
- 播放則進PlayActivity。
- 取消就關閉而已沒啥。
- 重新錄製就進goToRecord這個方法,下面來explain這個function。
private void goToRecord(File recordFile) {
// 錄音
Intent recordIntent = new Intent(this, RecordActivity.class);
recordIntent.putExtra("fileName", recordFile.getAbsolutePath());
startActivityForResult(recordIntent, START_RECORD);
}
- 傳入檔案位置,並且開啟RecordActivity,存入相對入徑。
- 使用startActivityForResult。
case START_RECORD:
// 設定錄音檔案名稱
item.setFileName(fileName);