安装了Android 5+文件"错误"

时间:2016-08-12 10:58:19

标签: java android storage record voice

我写了一个小型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无法找到该文件而没有其他应用程序。

一些细节:

  • Android 6
  • 文件名错误(2131099680ggj.3gp而不是ggj.3gp)
  • 文件保存在内部存储设备中,而不是外部存储设备(SD卡在智能手机中),位于名为" TrueCapture"
  • 的新文件夹中
  • 除了智能手机的资源管理器应用程序外,没有其他应用程序似乎知道此文件

1 个答案:

答案 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