2014-04-07 46 views
1

MediaPlayer出現了一些問題。 問題出現在Android 4.0.3 - 4.0.4上。 發生了什麼事是我的onPrepare()方法在這兩個版本上根本沒有被觸發。 測試4.3和4.4,沒有問題。MediaPlayer onPrepared未解僱

我不知道什麼可能是它不起作用的原因。所以任何想法,想法等都是受歡迎的。

PLAY CODE:

 try { 
      if (!player.isPlaying()) { 
       player.reset(); 
       player.setOnPreparedListener(this); 
       player.setOnCompletionListener(mFragment); 
       player.setDataSource(String.valueOf(tmpUri)); 
       player.prepareAsync(); 
      } 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

start()被在製備方法。

logcat的錯誤:

ERROR/MediaPlayer(10830): Error (1,-2147483648) 
    ERROR/MediaPlayer(10830): mOnErrorListener is null. Failed to send MEDIA_ERROR message. 
+0

發送日誌貓請 –

+0

添加logcat的錯誤 – JakubW

+0

訪問http://stackoverflow.com/questions/10795388/android-mediaplayer-error-mediaplayer-error1-2147483648-on-stream-from-inte –

回答

1

香港專業教育學院找到了答案,我的問題,所以我想分享我的信息。

無論如何,問題是在Android 4.0.4和4.0.3上從 讀取mp3文件時設備內存setDataSource()沒有讀取文件權限的長度。 這使MediaPlayer變得心理惡劣,並致電Error(1,-2147483648)。

Android給出的所有文件長度= 0x7ffffffffffffffL。

爲什麼?我不知道;)

修復:

File file = new File(uri); 
long length = file.getTotalSpace() 
FileInputStream is = new FileInputStream(file); 
player.setDataSource(is.getFD(), 0l, length); 
player.prepareAsync(); 

這就是它! 希望它會幫助有類似問題的人,和平!

+0

大thx。這對我來說很有用。 –