2012-04-08 8 views
4

Ich benutze Audio-Streaming, um MP3-Dateien auf einem Gerät zu spielen und hatte keine Probleme, bis ICS herauskam. Dann dachte ich, es könnte ein Format Support-Problem sein, so IVE versucht, OGG-Dateien mit dem folgenden Code:Streaming-Audio-Problem auf ICS

MediaPlayer mmp= MediaPlayer.create(context, 
         Uri.parse("http://vorbis.com/music/Epoq-Lepidoptera.ogg")); 
mmp.start(); 

Diese früheren OS-Versionen funktioniert auf, aber nicht auf ICS.

 
04-08 09:52:12.459: D/MediaPlayer(541): Couldn't open file on client side, trying server side 
04-08 09:52:12.489: E/MediaPlayer(541): Unable to to create media player 
04-08 09:52:12.529: D/MediaPlayer(541): create failed: 
04-08 09:52:12.529: D/MediaPlayer(541): java.io.IOException: setDataSource failed.: status=0x80000000 
04-08 09:52:12.529: D/MediaPlayer(541):  at android.media.MediaPlayer._setDataSource(Native Method) 
04-08 09:52:12.529: D/MediaPlayer(541):  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:844) 
04-08 09:52:12.529: D/MediaPlayer(541):  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:806) 
04-08 09:52:12.529: D/MediaPlayer(541):  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:761) 
04-08 09:52:12.529: D/MediaPlayer(541):  at android.media.MediaPlayer.create(MediaPlayer.java:695) 
04-08 09:52:12.529: D/MediaPlayer(541):  at android.media.MediaPlayer.create(MediaPlayer.java:676) 

Also meine Frage ist, wie zum Streamen von Audio-Dateien mit Mediaplayer auf ICS: Ich habe auch Media-Player mit setDataSource(this, uri) mit onPreparesListener atc, aber immer noch den gleichen Fehlern versucht, zu schaffen? Hat jemand Arbeitscode oder vielleicht muss es ein bestimmtes Dateiformat und Kodierung geben? Aber es ist saugt, dass die neue OS-Version nicht rückwärtskompatibel ist ...

Antwort

0

Ich hatte ebenfalls das gleiche Problem, also habe ich Zahnräder geschaltet und tat dies stattdessen, was für mich gut funktioniert hat. Sie müssen Ihre Sounddateien jedoch in einem Ordner res/assets aufbewahren.

 try { 
      AssetFileDescriptor afd = getAssets().openFd("mysound.mp3"); 
      mPlayer = new MediaPlayer(); 
      mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); 
      mPlayer.prepare(); 
      mPlayer.start(); 
     } 
     catch (IllegalStateException e) { 
      Log.d(TAG, "IllegalStateException: " + e.getMessage()); 
     } 
     catch (IOException e) { 
      Log.d(TAG, "IOException: " + e.getMessage()); 
     } 
     catch (IllegalArgumentException e) { 
      Log.d(TAG, "IllegalArgumentException: " + e.getMessage()); 
     } 
     catch (SecurityException e) { 
      Log.d(TAG, "SecurityException: " + e.getMessage()); 
     } 

Und dann würden Sie die Ressourcen freigeben auf die übliche Weise:

 if(mPlayer != null) { 
      if(mPlayer.isPlaying()) mPlayer.stop(); 
      mPlayer.release(); 
      mPlayer = null; 
     } 

Hoffnung auch dies für Sie arbeitet.