Android Mediaplayer: problème de setDataSource pour le fichier multimédia téléchargé

J'ai une application qui vous permettra d'enregistrer et de lire des fichiers audio. Certains des fichiers audio sont téléchargés à l'aide d'un simple standard http téléchargements à l'aide httpclient. Il a travaillé comme un charme pendant un long moment. Maintenant, tout d'un coup, je ne peut pas lire les fichiers téléchargés. Il ne fonctionne pas avec cette pile. - Je stocker les fichiers sur la carte sd et j'ai de l'expérience à la fois le problème sur un combiné et d'un port USB de l'appareil.

J'ai vérifié que le fichier téléchargé est cool sur le serveur, et je peux y jouer sans aucun problème.

Ce sont les extraits de code que j'utilise ( je sais que recordingFile est un chemin d'accès valide pour le fichier).

    //inside the activity class
    private void playRecording() throws IOException{
        File recordingFile = new File(recordingFileName);
        FileInputStream recordingInputStream = new FileInputStream(recordingFile); 
        audioMediaPlayer.playAudio(recordingInputStream);
    }

Ici est le media player code:

    //inside my media player class which handles the recordings
    public void playAudio(FileInputStream audioInputStream) throws IOException {
        mediaPlayer.reset();
        mediaPlayer.setDataSource(audioInputStream.getFD());
        mediaPlayer.prepare();
        mediaPlayer.start();
}

Ici est l'exception:

E/MediaPlayerService(  555): offset error
E/MediaPlayer(  786): Unable to to create media player
W/System.err(  786): java.io.IOException: setDataSourceFD failed.: status=0x80000000
W/System.err(  786):    at android.media.MediaPlayer.setDataSource(Native Method)
W/System.err(  786):    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:632)
W/System.err(  786):    at net.xxx.xxx.AudioMediaPlayer.playAudio(AudioMediaPlayer.java:69)
W/System.err(  786):    at net.xxx.xxx.Downloads.playRecording(Downloads.java:299)
W/System.err(  786):    at net.xxx.xxx.Downloads.access$0(Downloads.java:294)
W/System.err(  786):    at net.xxx.xxx.Downloads$1.onClick(Downloads.java:135)

J'ai essayé de solliciter une réponse de l'erreur de décalage, mais pas vraiment clair ce que ce problème pourrait être.

PS j'ai télécharger le fichier avec ce code:

    public FileOutputStream executeHttpGet(FileOutputStream fileOutputStream) throws ClientProtocolException, IOException{
        try {     
            //Execute HTTP Post Request  
            httpResponse = httpClient.execute(httpPost, localContext);
            int status = httpResponse.getStatusLine().getStatusCode();

            //we assume that the response body contains the error message
            if (status != HttpStatus.SC_OK) {
                ByteArrayOutputStream ostream = new ByteArrayOutputStream();
                httpResponse.getEntity().writeTo(ostream);
                fileOutputStream = null;
            } else {
                InputStream content = httpResponse.getEntity().getContent();

                byte[] buffer = new byte[1024];
                int len = 0;
                while ( (len = content.read(buffer)) > 0 ) {
                    fileOutputStream.write(buffer,0, len);
                }
                fileOutputStream.close();
                content.close(); //this will also close the connection
            }

        } catch (ClientProtocolException e1) {  
            //TODO Auto-generated catch block 
            e1.printStackTrace();
            fileOutputStream = null;
        } catch (IOException e2) {  
            //TODO Auto-generated catch block  
            e2.printStackTrace();
            fileOutputStream = null;
        }
        return fileOutputStream;
    }

source d'informationauteur Erik | 2010-05-09