我写了一个小的 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 找不到文件,也找不到其他应用程序。
一些细节:
- 安卓 6
- 文件名错误(2131099680ggj.3gp 而不是 ggj.3gp)
- 文件保存在没有特定文件夹的内部存储器中,而不是保存在名为“TrueCapture”的新文件夹中的外部存储器(SD 卡在智能手机中)
- 除了智能手机的资源管理器应用程序外,似乎没有其他应用程序知道此文件
最佳答案
R.string.app_name
是分配给您在 R
类中的资源的 ID,一个 int
。
要获取 String
资源,您可能需要使用 Context
的 getString()
方法。
像这样的东西应该可以工作:
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
权限添加到您的 list :
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
关于java - Android 5+ 文件已保存 "incorrect",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38916342/