Android MediaPlayer无法在API 26+上播放音乐

罗恩·埃斯金德

我有一个可以为用户播放音乐的应用,当我在运行API 25或更高版本的设备上进行测试时,此代码在运行Android的设备上可以正常运行,但音乐无法播放且不会显示错误消息,附件为我在使用API​​ 28设备时的日志。

我试过的

  • MediaPlayer.setAudioStreamType(int streamtype)已弃用,因此我为26以上的API实现了AudioAttributes
  • 不同类型的mp3文件,但它们在api 25及以下版本中都发挥相同的作用,当我尝试使用API​​ 26在设备或仿真器上进行任何操作
  • 搜索文档和示例,但是看起来都一样,我的代码也没什么不同

    private void playMusic() {
    try {
        mMediaPlayer.reset();
    
        // For Android API 26 (Android 8 Oreo) and newer, specify AudioAttributes.
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            Log.d("Record", "setAudioAttributes()");
            AudioAttributes.Builder builder = new AudioAttributes.Builder();
            builder.setUsage(AudioAttributes.USAGE_MEDIA);
            builder.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC);
            AudioAttributes attributes = builder.build();
            mMediaPlayer.setAudioAttributes(attributes);
    
        } else {
            Log.d("Record", "setAudioStreamType()");
            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        }
    
        mMediaPlayer.setDataSource(String.format("http://www.server.com/mp3/%s.mp3", mp3File));
        mMediaPlayer.prepareAsync();
        mMediaPlayer.start();
    
    } catch (IOException e) {
        Log.d("Record", "error playing mp3");
        e.printStackTrace();
    }
    }
    

日志记录

2019-04-04 17:51:38.911 2947-24864/com.roneskinder.karaoke 
V/MediaPlayer: resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
2019-04-04 17:51:38.911 2947-24864/com.roneskinder.karaoke V/MediaPlayer: cleanDrmObj: mDrmObj=null mDrmSessionId=null
2019-04-04 17:51:38.913 2947-3054/com.roneskinder.karaoke D/EGL_emulation: eglMakeCurrent: 0xe830ce20: ver 3 0 (tinfo 0xe8315bd0)
2019-04-04 17:51:38.915 2947-24864/com.roneskinder.karaoke V/MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@aa03fa3): Cookies: null
2019-04-04 17:51:38.920 2947-4147/com.roneskinder.karaoke V/MediaHTTPService: makeHTTPConnection: CookieHandler (java.net.CookieManager@ead45b3) exists.
2019-04-04 17:51:38.920 2947-4147/com.roneskinder.karaoke V/MediaHTTPService: makeHTTPConnection(android.media.MediaHTTPService@aa03fa3): cookieHandler: java.net.CookieManager@ead45b3 Cookies: null
马丁·齐特勒

您需要定义一个res/xml/network_security_config.xml并允许HTTP该主机:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">server.com</domain>
    </domain-config>
</network-security-config>

network_security_config.xml也需要在中引用Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest
    ...>
    <application
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
            ...
    </application>
</manifest>

SDK文档对此进行了详细说明-这适用于应用创建的所有网络流量。

与其降低安全标准,不如将连接升级为HTTPS


关于不推荐使用的方法.setAudioStreamType(),请改用.setAudioAttributes()-正如您的代码已经执行的那样。这似乎不是这里的“主要问题”。验证了这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MediaPlayer服务无法播放音乐

来自分类Dev

为什么我的Android MediaPlayer需要获得权限才能直接从设备播放音乐

来自分类Dev

VLC无法播放音乐

来自分类Dev

如何使用Spotify SDK或Web API在Android应用中播放音乐?

来自分类Dev

当活动处于前台时如何在Android上播放音乐

来自分类Dev

使用Phonegap在Android上无法播放音频,但在iOS上可以正常播放

来自分类Dev

当我的应用程序最小化时,使用Android中的Youtube API播放音乐视频中的音频

来自分类Dev

Android API 26 及以上媒体播放器问题

来自分类Dev

哪个是使用目标 sdk 26 在 Android 应用程序上播放 RTSP 视频的最佳 API?

来自分类Dev

当其他应用播放音乐时,停止MediaPlayer

来自分类Dev

需要制作一个按钮在Android上播放音乐文件,但应用程序不起作用

来自分类Dev

如何在Android Studio中播放音乐?

来自分类Dev

Android API 26 SecurityException 问题

来自分类Dev

无法使用STREAM_VOICE_CALL在Android Java中通过MediaPlayer播放音频

来自分类Dev

Phonegap / Cordova-代码无法在android上播放音频(不是路径问题)

来自分类Dev

无法使用蓝牙扬声器播放音乐

来自分类Dev

在后台播放音乐,在Ruby上播放音乐

来自分类Dev

当我的Android应用正在播放音乐时,如何关闭所有其他音乐?

来自分类Dev

当我的Android应用正在播放音乐时,如何关闭所有其他音乐?

来自分类Dev

Android Mediaplayer无法在Android 2.3上运行

来自分类Dev

Delphi Android 文件打开失败,API 26

来自分类Dev

解析传入的短信 Android (API 26)

来自分类Dev

当应用程序在后台运行时,freestreamer无法在通话结束后继续播放音乐(实际上没有声音)

来自分类Dev

在背景上播放音乐/声音的方法

来自分类Dev

当我第二次按下按钮播放音乐时,Android挂起

来自分类Dev

AES-256 可以在 API 级别为 26+ 的 Android 设备上使用吗?

来自分类Dev

无法在Android的WebView中使用JavaScript播放音频

来自分类Dev

无法从sdcard Android播放音频文件

来自分类Dev

iOS快速流应用程序无法在后台模式下播放音乐

Related 相关文章

  1. 1

    MediaPlayer服务无法播放音乐

  2. 2

    为什么我的Android MediaPlayer需要获得权限才能直接从设备播放音乐

  3. 3

    VLC无法播放音乐

  4. 4

    如何使用Spotify SDK或Web API在Android应用中播放音乐?

  5. 5

    当活动处于前台时如何在Android上播放音乐

  6. 6

    使用Phonegap在Android上无法播放音频,但在iOS上可以正常播放

  7. 7

    当我的应用程序最小化时,使用Android中的Youtube API播放音乐视频中的音频

  8. 8

    Android API 26 及以上媒体播放器问题

  9. 9

    哪个是使用目标 sdk 26 在 Android 应用程序上播放 RTSP 视频的最佳 API?

  10. 10

    当其他应用播放音乐时,停止MediaPlayer

  11. 11

    需要制作一个按钮在Android上播放音乐文件,但应用程序不起作用

  12. 12

    如何在Android Studio中播放音乐?

  13. 13

    Android API 26 SecurityException 问题

  14. 14

    无法使用STREAM_VOICE_CALL在Android Java中通过MediaPlayer播放音频

  15. 15

    Phonegap / Cordova-代码无法在android上播放音频(不是路径问题)

  16. 16

    无法使用蓝牙扬声器播放音乐

  17. 17

    在后台播放音乐,在Ruby上播放音乐

  18. 18

    当我的Android应用正在播放音乐时,如何关闭所有其他音乐?

  19. 19

    当我的Android应用正在播放音乐时,如何关闭所有其他音乐?

  20. 20

    Android Mediaplayer无法在Android 2.3上运行

  21. 21

    Delphi Android 文件打开失败,API 26

  22. 22

    解析传入的短信 Android (API 26)

  23. 23

    当应用程序在后台运行时,freestreamer无法在通话结束后继续播放音乐(实际上没有声音)

  24. 24

    在背景上播放音乐/声音的方法

  25. 25

    当我第二次按下按钮播放音乐时,Android挂起

  26. 26

    AES-256 可以在 API 级别为 26+ 的 Android 设备上使用吗?

  27. 27

    无法在Android的WebView中使用JavaScript播放音频

  28. 28

    无法从sdcard Android播放音频文件

  29. 29

    iOS快速流应用程序无法在后台模式下播放音乐

热门标签

归档