【问题标题】:Android : Default audio recordingAndroid:默认录音
【发布时间】:2014-01-31 07:23:48
【问题描述】:

我正在尝试使用以下代码录制音频。

public void onClick(DialogInterface dialog, int id) {
    System.out.println("Inside Audio recording");
    File storageDir = new File(Environment.getExternalStorageDirectory()+ "/filetoupload/");
    if (!storageDir.exists()) {
        storageDir.mkdirs();
    }
    try {
            System.out.println("Inside Audio recording try block");
            imageToStore = new File(storageDir,"" + "audio.3gp");
            Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
            intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(imageToStore));
            System.out.println("Inside Audio recording path"+ imageToStore);
            startActivityForResult(intent,CAPTURE_AUDIO);
        } catch (Exception e) {
            e.printStackTrace();
            }
        }

}
}

它会打开默认的安卓录音播放器,让我录制音频文件。

所以基本上它会开始默认音频录制,并应在 SD 卡内创建文件夹名称 filetoupload 并将其存储为名称 audio.3gp 但它不是做同样的事情。它将录音存储在设备的默认录音文件夹中或使用其他名称,例如 recording-10555454545.3gp

那么我怎样才能将此音频存储在 SD 卡的特定文件夹中并使用 audio.3gp 名称请帮助。

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?

标签: android audio local-storage audio-recording android-sdcard


【解决方案1】:
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK) {

            if (requestCode == RQS_RECORDING) {
                try {

                    AssetFileDescriptor videoAsset = getContentResolver()
                            .openAssetFileDescriptor(data.getData(), "r");
                    FileInputStream fis;

                    fis = videoAsset.createInputStream();

                    File root = new File(Environment
            .getExternalStorageDirectory().getAbsolutePath() + "/Foldername/", "AUDIO"); // you
                    if (!root.exists()) {

                        root.mkdirs();
                    }
                    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                            .format(new Date());
                    File file;
                    file = new File(root.getPath() + "/" + "AUD_" + timeStamp
                            + ".mp3");
                    FileOutputStream fos = new FileOutputStream(file);

                    byte[] buf = new byte[1024];
                    int len;
                    while ((len = fis.read(buf)) > 0) {
                        fos.write(buf, 0, len);
                    }
                    fis.close();
                    fos.close();
                Uri fileuri = Uri.fromFile(file);
                        System.out.println("you Audio path"+fileuri.getpath)


                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }


}

【讨论】:

  • 这似乎不是问题的答案。
  • @Palak,你能简单解释一下吗?因为此代码还包含一些不需要的文件操作。那么我应该用这段代码改变什么。
  • @Palak,我只知道这个答案行不通,然后我也尝试过,但我仍然面临同样的问题。
  • 结果作为意图传入 onActivityResult:行:AssetFileDescriptor videoAsset=getContentResolver().openAssetFileDescriptor(data.getData(), "r");拥有 AssetFileDescriptor 后,您可以创建输入流并读取文件或输出流以将文件写入您想要的位置。
  • 你能写出你所面临的错误吗,因为这对我来说在音频和视频录制中都可以正常工作。
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 2012-10-11
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多