1、出现类似error(-38, 0)或(-19, 0)的原因主要包括以下几个方面:
- 采用new MediaPlayer()方式创建的对象,prepare同步操作没有结束就执行start操作
- 采用new MediaPlayer()方式创建的对象,prepare同步操作没有结束就执行getDuration操作
- 采用MediaPlayer.create方式创建的对象,执行了prepare操作
- setDataSource方法中,uri错误
2、正确的做法如下:
官方推荐创建MediaPlayer方式: Consider using one of the create() methods for synchronously instantiating a MediaPlayer from a Uri or resource.
尽量采用MediaPlayer.create方式创建对象,如果非要用new MediaPlayer方式创建的话,start方法或getDuration要放在prepare结束执行。