在我的应用程序中,我尝试使用intent将文件路径从一个活动传递到另一个活动。在我的接收活动中,我将文件路径设置为“null”。但是当我在第一个活动中打印文件时,它会打印路径。从我的第二个活动开始,我使用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);
在我的接收活动中,
String patty=getIntent().getStringExtra("mnt/sdcard-text.pcm");
System.out.println("paathhhy frfom ::"+patty);
它打印null。任何人都可以帮助我如何获取文件路径。更多的事情我不确定音频是否会正确保存在该文件中?
请有人帮助我!!!提前致谢!
答案 0 :(得分:0)
根据您的信息,audioFile
是File
类型的变量,当您执行此操作时:
sigout.putExtra("mnt/sdcard-test.pcm",audiofile);
您将File
个对象放在附加内容Bundle
中。然后,当您尝试从Bundle
获取额外费用时:
String patty=getIntent().getStringExtra("mnt/sdcard-text.pcm");
但是,此附加内容中的对象是File
类型,而不是类型String
。这就是您获得null
。
如果您只想传递文件的名称,那么请加上额外的内容:
sigout.putExtra("mnt/sdcard-test.pcm",audiofile.getAbsolutePath());