我想在现有文件中再次播放录音

时间:2015-04-27 07:02:07

标签: android playback voice-recording

我是新手 我正在开发一个Android(4.2)应用程序来录制一些音频。

代码似乎第一次运行正常,它甚至将文件保存在SD卡上 但是,如果我再次尝试录制,我的应用程序会崩溃。

这是我的代码:

StringVoiceFile = PathImagePage + "/"+book_id+"-"+pagenumber+".mp3";
myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(StringVoiceFile);

这是我的功能

public void start(){

    String PathImagePage = AppDirectory+"/content/"+userid+"/books/"+book_id+"/";
    StringVoiceFile = PathImagePage + "/"+book_id+"-"+pagenumber+".mp3";
    File VoiceFile = new File(PathImagePage, +"-"+pagenumber+".mp3");
    MediaPlayer m = new MediaPlayer();

    if (VoiceFile.exists()){    

        try {

            myAudioRecorder.prepare();
        } catch (IllegalStateException e) {

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

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

            m.setDataSource(StringVoiceFile);
        } catch (IllegalArgumentException e) {

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

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

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

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

            myAudioRecorder.start();
        } catch (IllegalStateException e) {

            Log.e(TAG, "start() failed = " + e );
        }
        stop.setEnabled(true);
        stop.setVisibility(View.VISIBLE);
        time.setEnabled(true);
        time.setVisibility(View.VISIBLE);
        time.setText(formatTime(m.getDuration()));
        play.setEnabled(false);
        play.setVisibility(View.INVISIBLE);
        long now = System.currentTimeMillis();
        startRecordingTimer(now);
        Alert.ToastAlert(FlipActivity.this, getResources().getString(R.string.record_start_again));
    } else {

        try {

            myAudioRecorder.prepare();
            myAudioRecorder.start();
        } catch (IllegalStateException e) {

            Alert.ToastAlert(FlipActivity.this, getResources().getString(R.string.record_nostart));
        } catch (IOException e) {

            Alert.ToastAlert(FlipActivity.this, getResources().getString(R.string.record_nostart));
        }
        stop.setEnabled(true);
        stop.setVisibility(View.VISIBLE);
        time.setVisibility(View.VISIBLE);
        time.setText(formatTime(m.getDuration()));
        play.setEnabled(false);
        play.setVisibility(View.INVISIBLE);
        long now = System.currentTimeMillis();
        startRecordingTimer(now);

        Alert.ToastAlert(FlipActivity.this, getResources().getString(R.string.record_start));
    }
}

请帮我解决这个问题

0 个答案:

没有答案