Android:默认音频录制
我正在尝试用以下代码录制音频Android:默认音频录制,android,audio,local-storage,audio-recording,android-sdcard,Android,Audio,Local Storage,Audio Recording,Android Sdcard,我正在尝试用以下代码录制音频 public void onClick(DialogInterface dialog, int id) { System.out.println("Inside Audio recording"); File storageDir = new File(Environment.getExternalStorageDirectory()+ "/filetoupload/"); if (!storageDir.exists()) {
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();
}
}
}
}
它将打开默认的android录音播放器,让我录制音频文件
因此,基本上,它将启动默认音频录制,并应在SD卡内创建文件夹名filetoupload,并应将其存储为名称audio.3gp,但它没有这样做。它将录制存储在设备的默认录制文件夹中,或使用其他名称,如录制-105554545.3gp
因此,我如何将此音频存储在SD卡特定文件夹中,并使用audio.3gpname请提供帮助 这似乎不是对所问问题的回答。@Palak,你能简单解释一下吗。因为此代码还包含一些不需要的文件操作。那么,我应该用这段代码做些什么改变。@帕拉克,我只知道这个答案行不通,然后我也尝试了同样的问题,我仍然面临着同样的问题。结果作为intent:onActivityResult(int requestCode,int resultCode,intent data)传入到activityresult中,以将该intent数据转换成我可以读取的文件,我使用以下行将其转换为AssetFileDescriptor:AssetFileDescriptor videoAsset=getContentResolver().openAssetFileDescriptor(data.getData(),“r”);一旦你有了AssetFileDescriptor,你就可以创建一个inputstream并读取文件或outputstream将文件写入你想要的位置。你能写下你所面临的错误吗,因为这对我来说在音频和视频录制方面都很好。这似乎不是对所问问题的回答。@Palak,你能简单地解释一下吗。因为此代码还包含一些不需要的文件操作。那么,我应该用这段代码做些什么改变。@帕拉克,我只知道这个答案行不通,然后我也尝试了同样的问题,我仍然面临着同样的问题。结果作为intent:onActivityResult(int requestCode,int resultCode,intent data)传入到activityresult中,以将该intent数据转换成我可以读取的文件,我使用以下行将其转换为AssetFileDescriptor:AssetFileDescriptor videoAsset=getContentResolver().openAssetFileDescriptor(data.getData(),“r”);一旦你有了AssetFileDescriptor,你就可以创建一个inputstream并读取文件或outputstream将文件写入你想要的位置。你能写下你所面临的错误吗,因为这对我来说在音频和视频录制方面都很好。这似乎不是对所问问题的回答。@Palak,你能简单地解释一下吗。因为此代码还包含一些不需要的文件操作。那么,我应该用这段代码做些什么改变。@帕拉克,我只知道这个答案行不通,然后我也尝试了同样的问题,我仍然面临着同样的问题。结果作为intent:onActivityResult(int requestCode,int resultCode,intent data)传入到activityresult中,以将该intent数据转换成我可以读取的文件,我使用以下行将其转换为AssetFileDescriptor:AssetFileDescriptor videoAsset=getContentResolver().openAssetFileDescriptor(data.getData(),“r”);一旦你有了AssetFileDescriptor,你就可以创建一个inputstream并读取文件或outputstream将文件写入你想要的位置。你能写下你所面临的错误吗,因为这对我来说在音频和视频录制方面都很好。这似乎不是对所问问题的回答。@Palak,你能简单地解释一下吗。因为此代码还包含一些不需要的文件操作。那么,我应该用这段代码做些什么改变。@帕拉克,我只知道这个答案行不通,然后我也尝试了同样的问题,我仍然面临着同样的问题。结果作为intent:onActivityResult(int requestCode,int resultCode,intent data)传入到activityresult中,以将该intent数据转换成我可以读取的文件,我使用以下行将其转换为AssetFileDescriptor:AssetFileDescriptor videoAsset=getContentResolver().openAssetFileDescriptor(data.getData(),“r”);一旦你有了AssetFileDescriptor,你可以创建一个inputstream并读取文件或outputstream将文件写入你想要的位置。你能写下你所面临的错误吗,因为这对我在音频和视频录制方面都很好。我也面临同样的问题,你找到解决办法了吗?我面临同样的问题,你找到解决办法了吗?我面临同样的问题,你找到解决办法了吗?我面临同样的问题,你找到解决办法了吗?
@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();
}
}
}