2014-04-07 50 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。这对我来说很有用。 –