Android 5+ 个文件已保存 "incorrect"

Android 5+ File saved "incorrect"

我写了一个小 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找不到文件,也找不到其他应用。


一些细节:

R.string.app_name 是在 R class 中分配给您的资源的 ID,int

要获取 String 资源,您可能需要使用 ContextgetString() 方法。

像这样的东西应该可以工作:

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 权限添加到您的清单中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />