I'm building an app that produces a .wav sound file and saves it to the external storage:
/storage/emulated/0/speech.wav
The problem comes when I try to open and play the file. I'm getting this error:
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)
When I try to open the file on the phone it says "File not supported". But when I connect the phone to my pc(via USB) I can open the file on the computer and it plays just fine. I have the
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
permissions. Here is my code:
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();
}
}