从sdcard获取音频文件的路径

时间:2013-12-18 07:54:47

标签: file audio android-intent path record

在我的应用程序中,我尝试使用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。任何人都可以帮助我如何获取文件路径。更多的事情我不确定音频是否会正确保存在该文件中?

请有人帮助我!!!提前致谢!

1 个答案:

答案 0 :(得分:0)

根据您的信息,audioFileFile类型的变量,当您执行此操作时:

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());