Java Android:尝试使用MediaPlayer播放.wav声音时出现IOException(准备失败)

Java Android:尝试使用MediaPlayer播放.wav声音时出现IOException(准备失败),java,android,android-mediaplayer,android-studio-2.1,Java,Android,Android Mediaplayer,Android Studio 2.1,我正在构建一个生成.wav声音文件并将其保存到外部存储器的应用程序: /存储/模拟/0/speech.wav 当我试图打开并播放文件时,问题就出现了。我得到了这个错误: V/MediaPlayer-JNI: native_setup V/MediaPlayer: constructor V/MediaPlayer: setListener E/MediaPlayer-JNI: QCMediaPlayer mediaplayer NOT present V/

我正在构建一个生成.wav声音文件并将其保存到外部存储器的应用程序:

/存储/模拟/0/speech.wav

当我试图打开并播放文件时,问题就出现了。我得到了这个错误:

    V/MediaPlayer-JNI: native_setup
    V/MediaPlayer: constructor
    V/MediaPlayer: setListener
    E/MediaPlayer-JNI: QCMediaPlayer mediaplayer NOT present
    V/MediaPlayer-JNI: setAudioStreamType: 3
    V/MediaPlayer: MediaPlayer::setAudioStreamType
    V/MediaPlayer-JNI: setDataSourceFD: fd 55
    V/MediaPlayer: setDataSource(55, 0, 576460752303423487)
    V/MediaPlayer: setVideoSurfaceTexture
    V/MediaPlayer: prepare
    V/MediaPlayer: message received msg=300, ext1=0, ext2=0
    V/MediaPlayer: Received SEC_MM_PLAYER_CONTEXT_AWARE
    V/MediaPlayer: callback application
    V/MediaPlayer: back from callback
    V/MediaPlayer: message received msg=100, ext1=1, ext2=-2147483648
    E/MediaPlayer: error (1, -2147483648)
    V/MediaPlayer: signal application thread
    V/MediaPlayer: prepare complete - status=1
    W/System.err: java.io.IOException: Prepare failed.: status=0x1
    W/System.err:     at android.media.MediaPlayer._prepare(Native Method)
    W/System.err:     at android.media.MediaPlayer.prepare(MediaPlayer.java:1307)
    W/System.err:     at com.gdoldurov.lorapersonalweatherassistant.MainActivity$SynthesizeSpeech.onPostExecute(MainActivity.java:262)
    W/System.err:     at com.gdoldurov.lorapersonalweatherassistant.MainActivity$SynthesizeSpeech.onPostExecute(MainActivity.java:197)
    W/System.err:     at android.os.AsyncTask.finish(AsyncTask.java:636)
    W/System.err:     at android.os.AsyncTask.access$500(AsyncTask.java:177)
    W/System.err:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
    W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
    W/System.err:     at android.os.Looper.loop(Looper.java:135)
    W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5910)
    W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)
当我试图在手机上打开文件时,它会显示“文件不受支持”。 但是,当我将手机连接到电脑(通过USB)时,我可以打开电脑上的文件,它就可以正常播放了。我有

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

我认为数据源存在问题,您能否提供数据源的示例(即任何示例链接)?堆栈的第4行显示此消息
e/MediaPlayer JNI:QCMediaPlayer MediaPlayer NOT present
,您可能需要检查MediaPlayer是否确实存在
      protected void onPostExecute(File f){
        try {
            String fn = f.getAbsolutePath();
            //AssetManager am = getAssets();
           // AssetFileDescriptor afd = am.openFd(fn);
            final MediaPlayer player = new MediaPlayer();
            FileInputStream fis = null;
            fis = new FileInputStream(f);
            player.setAudioStreamType(AudioManager.STREAM_MUSIC);
            player.setDataSource(fis.getFD());
            player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    player.start();
                }
            });
            //player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
            player.prepare();
            //player.start();
            player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    mp.release();

                }
            });
            player.setLooping(false);

        }catch(Exception e){
            e.printStackTrace();
        }

    }