2012-04-08 1 views
4

私はデバイスでMP3ファイルを再生するためにオーディオストリーミングを使用しており、ICSが出るまで問題はありませんでした。これは、以前のバージョンのOS上で動作しますが、ICSに失敗しICSのストリーミングオーディオに関する問題

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

:それから私は、IVEは、次のコードでOGGファイルを試してみましたので、それは形式のサポートの問題かもしれないと思いました。

 
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) 

だから私の質問は、ICS上のMediaPlayerを使用してオーディオファイルをストリーミングする方法である:私はまた、ATCが、それでも同じエラーをonPreparesListener使用setDataSource(this, uri)とメディアプレーヤーを作成しようとしましたか?誰かが作業コードを持っているのでしょうか、あるいは特定のファイルフォーマットとエンコーディングが必要なのでしょうか? しかし、それは新しいosのバージョンは逆互換ではありません...

答えて

0

私は同様に同じ問題を抱えていましたので、私はギアを切り替えて、代わりにこれを行いました。しかし、サウンドファイルはres/assetsフォルダに入れておく必要があります。

 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()); 
     } 

そして、あなたは、通常の方法でリソースを解放します:これはあまりにもあなたのために働く

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

ホープ。