简体   繁体   English

Android:如何使用MediaPlayer播放WAV文件

[英]Android:How to play a WAV file using MediaPlayer

When I try to play wav files using MediaPlayer , this causes a NullPointerException at player.start() . 当我尝试使用MediaPlayer播放wav文件MediaPlayer ,这会在player.start()处导致NullPointerException

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath().toString()+"/Notate/"+MainActivity.filepath);
MainActivity.filepath,Toast.LENGTH_LONG).show();
Uri uri=Uri.fromFile(file);
MediaPlayer player=MediaPlayer.create(getActivity(),uri);
try {
    player.prepare();
    player.start();
}
catch(IOException e){
    e.printStackTrace();
}

Below are the methods that you can used for Record,Stop and Play functionality of .wav file formats in Android,i added all the necessary checks: Use this import: 以下是可用于Android中.wav文件格式的记录,停止和播放功能的方法,我添加了所有必要的检查:使用此导入:

Recording in .wav file format: 以.wav文件格式记录:

public class AudioRecord {
private void record() {
    if (isExternalStorageWritable() == true) {

        File sampleDir = Environment.getExternalStorageDirectory();
        File dir = new File(sampleDir, "/VoiceRecorder");
        if (!dir.isDirectory())
            dir.mkdirs();
        try {
            audiofile = File.createTempFile("Recording", ".wav", dir);
        } catch (IOException e) {
            Log.e(TAG, "sdcard access error");
            return;
        }

        // set up media recorder
        if (mediarecorder == null) {
            mediarecorder = new MediaRecorder();
            mediarecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mediarecorder
                    .setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);
            mediarecorder
                    .setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
            mediarecorder.setOutputFile(audiofile.getAbsolutePath());

            // prepare media recorder
            try {
                mediarecorder.prepare();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                // start media recorder
                mediarecorder.start();
            } catch (Exception e) {
                stopTask();
                Toast.makeText(
                        this.getActivity(),
                        "  Audio Recorder not Available,Try some other time",
                        Toast.LENGTH_LONG).show();

            }

        }
    } else {
        Toast.makeText(this.getActivity(),
                "  Unable to Access External Storage!", Toast.LENGTH_LONG)
                .show();

    }
}

Stop Recording: 停止记录:

private void stopRecord() {

    // stop media recorder
    mediarecorder.stop();
    mediarecorder.reset();
    // reset media recorder
    mediarecorder.release();
    mediarecorder = null;

}

Start Playing: 开始播放:

 import java.io.IOException;
    import android.content.Context;
    import android.media.AudioManager;
    import android.media.MediaPlayer;
    import android.os.AsyncTask;


    public class PlayMedia extends AsyncTask<Void, Void, Void>
        implements MediaPlayer.OnPreparedListener {


    private MediaPlayer mediaPlayer;

    @Override
    protected Void doInBackground(Void... params) {
        mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(FilePath);
            mediaPlayer.setOnPreparedListener(this);
            mediaPlayer.prepareAsync();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {

        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        // TODO Auto-generated method stub
        mediaPlayer.start();

    }
}
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM