Хорошо, я собрал минимальную реализацию Mediaplayer в приложении / деятельности «песочница», которую я всегда оставляю для тестирования.
Я могу ошибаться, но если вы транслируете эти песни по сети, выВам нужно будет префикс URL с http: //.
Я попробовал URL с Winamp и Chrome дословно (без строки префикса протокола), и они работали нормально, хотя, вероятно, оба эти приложения будут использовать некоторую формуинтеллект, чтобы понять, как подключиться / поток.
Если я попробовал это в своем коде mediaPlayer, я получу то же исключение, что и вы, но если я добавлю префиксы URL-адресов к http: //, песни будут воспроизводиться нормально.
Пример ...
// Activity scope
Button button;
CheckBox checkBox;
String url = "";
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//button declared in my activity
button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
if (!checkBox.isChecked())
url = getString(R.string.url_song1);
else
url = getString(R.string.url_song2);
mediaPlayer = new MediaPlayer();
}
@Override
public void onClick(View arg0) {
try {
Log.i(TAG, "onClick() entered...");
mediaPlayer.setDataSource(url);
Log.i(TAG, "Preparing mediaplayer...");
mediaPlayer.prepare();
Log.i(TAG, "Starting mediaplayer...");
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "bad stream");
}
}
Если я скопирую песни на мою SD-карту, они будут воспроизводиться нормально и до тех пор, пока строки интернет-URL имеют префикс 'http://', тогда они также работают.