【问题标题】:how can i use MediaPlayer at android 7.0?如何在 android 7.0 上使用 MediaPlayer?
【发布时间】:2018-02-07 03:10:08
【问题描述】:

我需要在我的项目中播放音频文件。

我试试这段代码,它在 android 5.0 上工作,但在 7.0 上不工作。

    String url = "http://sites.google.com/site/ubiaccessmobile/sample_audio.amr";

    MediaPlayer mediaPlayer = new MediaPlayer();

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mediaPlayer.setDataSource(url);
    mediaPlayer.prepare();

    mediaPlayer.start();

mediaPlayer.prepare() 抛出错误 java.io.IOException:准备失败。:状态=0x1

如果我在资源中使用音频文件,则此代码可以完美运行。 但流媒体没有。

我在另一个线程中尝试 prepareAsync()、prepare()。但同样的错误存在。 当然,我使用 try-catch。

我认为是运行时许可,但这个应用程序只需要 INTERNET。而且它不需要运行时权限。

我能做什么?? android 7.0 不能使用流音频???

请告诉我问题或其他库。

我解决了....? 我不知道这到底是什么,如果我使用另一种音频格式——比如 mp3、m4a——这段代码可以完美运行。 为什么android 7.0讨厌amr文件???

【问题讨论】:

  • 我认为你没有设置从Android 6.0引入的运行时权限。希望有帮助!
  • 我也认为许可。但是什么许可?我认为这个应用程序只需要 INTERNET 许可,它不需要运行时许可,不是吗?
  • “运行时权限”是从 Android 6.0 开始设置/启用权限的方式。检查此链接:developer.android.com/training/permissions/requesting.html
  • 我读过。但是“INTERNET”许可不是“危险”许可,因为它不需要运行时。不是吗?

标签: android audio streaming


【解决方案1】:

您可以将 mediaPlayer.prepare() 的 try catch 用作:

try { 
     mediaPlayer.prepare();
 } catch (IllegalStateException e) {
      e.printStackTrace();
 } catch (IOException e) {
      e.printStackTrace();
 }

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2012-07-02
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2020-10-27
    • 2011-07-30
    相关资源
    最近更新 更多