我写了一个小型Android应用程序来录制音频并将其保存在智能手机的磁盘上。现在我遇到的问题是它用错误的名字保存在错误的位置,我不明白为什么。 (我对Android编程比较陌生)
public void startRecording(View view) {
File folder = new File(Environment.getExternalStorageDirectory() + "/" + R.string.app_name);
file_name = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + R.string.app_name;
if(!folder.exists()) {
boolean created = folder.mkdirs();
if(!created) { Log.i(LOG_TAG, "Could not create folder/s."); return; }
}
if(editText.getText() != null)
file_name += editText.getText() + ".3gp";
else
file_name += Calendar.getInstance().getTime() + ".3gp";
outputFile = new File(file_name);
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setOutputFile(file_name);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
Toast.makeText(CaptureActivity.this, R.string.toast_recording_start, Toast.LENGTH_SHORT).show();
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
Toast.makeText(CaptureActivity.this, R.string.toast_recording_failed, Toast.LENGTH_LONG).show();
mediaRecorder = null;
}
}
该文件应保存在名为TrueCapture的文件夹中,文件本身应称为ggj.3gp。 但该文件以2131099680ggj.3gp的名称保存在内部存储器中。 接下来的问题是,我只能从智能手机中找到带有资源管理器应用程序的文件。 PC无法找到该文件而没有其他应用程序。
一些细节:
答案 0 :(得分:1)
R.string.app_name
是在R
课程中分配给您资源的ID,int
。
要获取String
资源,您可能需要使用getString()
的{{1}}方法。
这样的事情应该有效:
Context
您还需要向您的Manifest添加String ext = ".3gp";
File folder = new File(Environment.getExternalStorageDirectory() + "/" + getString(R.string.app_name));
if(!folder.exists()) {
folder.mkdirs();
}
file_name = folder.getAbsolutePath() + "/";
if(editText.getText().length() > 0) {
file_name += editText.getText().toString() + ext;
} else {
file_name += Calendar.getInstance().getTimeInMillis() + ext;
}
File outputFile = new File(file_name);
// ...
权限:
WRITE_EXTERNAL_STORAGE