我面临与Android,流媒体和媒体播放器有关的怪异问题。
实际的应用程序非常复杂,但是我已经提出了最简单的测试用例:“ Hello,World”活动启动带有硬编码URL的Media Player。这在Android模拟器(API级别7(这是实际应用程序的最低要求)和API级别17)中都可以正常运行。但是,同一应用程序在API级别为15的硬件设备上失败-Media Player在prepare()调用期间失败:
总是失败(阻止和非阻止准备)显示“错误(1,-2147483648)”。 Media Player文档没有这样的错误代码-2147483648(0xffffffff)。
该应用具有访问Internet(android.permission.INTERNET)的适当权限,并且设备的Internet连接正在工作(同一应用可以从Internet下载文件)。
这不是编解码器问题-因为仿真器可以播放相同的流,并且因为任何其他流在硬件设备上都以相同的方式失败。
[尝试了许多其他事情却无济于事:
硬件运行正常,因为同一设备可以使用Android内置的默认音频播放器应用播放其存储中的音频文件。
我不太相信鬼,但是我有点没办法了。有人看到过这样的东西吗?该应用程序可以在模拟器中运行,但不能在硬件上运行吗?
任何人都可以在硬件设备(我只有1个Android设备)上尝试此代码吗?
public class MainActivity extends Activity {
private MediaPlayer mediaPlayer;
private String listen_url = "http://stream15.top-ix.org:80/radiojukebox-low";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer = new MediaPlayer();
//mediaPlayer.reset();
try {
mediaPlayer.setDataSource(listen_url);
//mediaPlayer.setDataSource(this, Uri.parse(listen_url));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
// We fail here!
e.printStackTrace();
}
mediaPlayer.start();
}
}
我面临与Android,流媒体和媒体播放器有关的怪异问题。实际的应用程序非常复杂,但是我已经提出了最简单的测试用例:“ Hello,World”活动启动了Media ...
这通常是因为您使用的设备不支持流类型。您是否尝试过简单的MP3流?
我也有类似的问题,但是反过来!在仿真器上失败,但在硬件上工作。我也有错误(1,-2147483648),供您参考,它的errcode用于未知的err。