Android Media Player流技术-在模拟器中工作,在硬件上失败

问题描述 投票:2回答:1

我面临与Android,流媒体和媒体播放器有关的怪异问题。

实际的应用程序非常复杂,但是我已经提出了最简单的测试用例:“ Hello,World”活动启动带有硬编码URL的Media Player。这在Android模拟器(API级别7(这是实际应用程序的最低要求)和API级别17)中都可以正常运行。但是,同一应用程序在API级别为15的硬件设备上失败-Media Player在prepare()调用期间失败:

  • 如果使用阻止prepare(),它将失败,并出现IOException
  • 如果使用非阻塞prepareAsync(),它将失败并触发onErrorListener(不会引发异常)。>>
  • 总是失败(阻止和非阻止准备)显示“错误(1,-2147483648)”。 Media Player文档没有这样的错误代码-2147483648(0xffffffff)。

该应用具有访问Internet(android.permission.INTERNET)的适当权限,并且设备的Internet连接正在工作(同一应用可以从Internet下载文件)。

这不是编解码器问题-因为仿真器可以播放相同的流,并且因为任何其他流在硬件设备上都以相同的方式失败。

[尝试了许多其他事情却无济于事:

  • 使用pepareAsync()和onPreparedListener来调用start()
  • 在Media Player上调用reset()
  • 通过Uri.parse()设置数据源
  • 从音频管理器获得音频焦点
  • 硬件运行正常,因为同一设备可以使用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 ...

android media-player emulation hardware
1个回答
0
投票

这通常是因为您使用的设备不支持流类型。您是否尝试过简单的MP3流?


0
投票

我也有类似的问题,但是反过来!在仿真器上失败,但在硬件上工作。我也有错误(1,-2147483648),供您参考,它的errcode用于未知的err。

© www.soinside.com 2019 - 2024. All rights reserved.