2012-04-08 5 views
4

나는 ICS가 나올 때까지 오디오 스트리밍을 사용하여 장치에서 MP3 파일을 재생하고 아무런 문제가 없습니다. 그럼 필자는 다음과 같은 코드로 OGG 파일을 시도 그래서 포맷 지원 문제 될 줄 알았는데이 이전 OS 버전에서 작동하지만 ICS에 실패ICS에서 스트리밍 오디오 문제

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

. 또한 ATC하지만 여전히 같은 오류가 onPreparesListener 사용 setDataSource(this, uri)와 미디어 플레이어를 만드는 시도 :

 
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를를 사용하여 오디오 파일을 스트리밍하는 방법은? 누구나 작업 코드가 있거나 어쩌면 특정 파일 형식과 인코딩이 있어야합니까? 하지만 새로운 오스 버전은 뒤집지 않습니다.

답변

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

희망.