我在从网址播放音频时遇到一些问题,即我得到以下两个例外:
E/MediaPlayer(3387): error (1, -2147483648)
E/MediaPlayer(3387): Error (1,-2147483648)
在我的代码中,我声明了一个MediaPlayer对象和带URL的String
MediaPlayer mMediaPlayer;
String url ="http://ciacho090.wrzuta.pl/audio/31h2JLMRCE7/eminem_soldier.mp3";
在我的MainActivity中,我通过默认构造函数初始化mMediaPlayer并设置流类型
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
然后我在url上设置source并通过以下代码请求异步准备捕获可能性异常:
try
{
mMediaPlayer.setDataSource(url);
mMediaPlayer.prepareAsync();
}
catch(IOException e)
{
e.printStackTrace();
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (IllegalStateException e)
{
e.printStackTrace();
}
最后我设置了onPreparedListener:
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
mp.start();
}
});
我超越了异常并且音乐没有播放。在Manifest中,我已将这些权限和min sdk版本声明为8
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> //i know- it's unneccesary
清单中的设置可能是问题或url链接到音乐文件的原因。我不知道它是否能够逐步下载。也许你能给我一些链接吗?为什么它不起作用?
答案 0 :(得分:2)
您的网址正在返回html。 MediaPlayer
对播放HTML网页一无所知。仅因为它以.mp3
结尾并不意味着它是一个mp3。
只需在浏览器中访问此页面即可轻松查看:
http://ciacho090.wrzuta.pl/audio/31h2JLMRCE7/eminem_soldier.mp3
这是一个你可以测试的“真正的”mp3:
http://ia700200.us.archive.org/1/items/testmp3testfile/mpthreetest.mp3
简而言之:确保您传递的是返回mp3或其他支持的音频格式的网址。