在我的应用程序中,我尝试使用intent将文件路径从一个 Activity 传递到另一个 Activity 。在我的接收 Activity 中,文件路径为“空”。但是当我在第一个 Activity 中打印文件时,它将打印路径。 Activity ,我使用Gmailsender将文件附加到邮件中。这是我尝试的代码,
private void startRecord()
{
File file = new File(Environment.getExternalStorageDirectory(), "test.pcm");
try
{
file.createNewFile();
OutputStream outputStream = new FileOutputStream(file);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);
int minBufferSize = AudioRecord.getMinBufferSize(8000,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
short[] audioData = new short[minBufferSize];
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
8000,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
minBufferSize);
audioRecord.startRecording();
while(recording)
{
int numberOfShort = audioRecord.read(audioData, 0, minBufferSize);
for(int i = 0; i < numberOfShort; i++)
{
dataOutputStream.writeShort(audioData[i]);
}
}
audioRecord.stop();
audioRecord.release();
dataOutputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
String audiofile;
audiofile=file.getAbsolutePath();
System.out.println("File Path::::"+audiofile);
}
目的是
Intent sigout=new Intent(getApplicationContext(),WeeklyendActivity.class);
sigout.putExtra("mnt/sdcard-test.pcm",audiofile);
startActivity(sigout);
在我的接收 Activity 中
String patty=getIntent().getStringExtra("mnt/sdcard-text.pcm");
System.out.println("paathhhy frfom ::"+patty);
它会输出null。有人可以帮助我获取文件路径吗?我不确定音频是否可以正确保存在该文件中?
请任何人帮助我!!谢谢!
最佳答案
根据您的信息,audioFile
是File
类型的变量,当您这样做时:
sigout.putExtra("mnt/sdcard-test.pcm",audiofile);
您将
File
对象放入extras Bundle
中。然后,当您尝试从Bundle
中获取更多内容时,请执行以下操作:String patty=getIntent().getStringExtra("mnt/sdcard-text.pcm");
但是,此额外对象的类型为
File
,而不是String
。这就是为什么您得到null
的原因。如果只想传递文件名,则将多余的内容输入如下:
sigout.putExtra("mnt/sdcard-test.pcm",audiofile.getAbsolutePath());
关于file - 从SD卡获取音频文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20652498/