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