Android MediaPlayer won't play music on API 26+

后端 未结 3 1671
死守一世寂寞
死守一世寂寞 2021-01-12 09:37

I have an app that streams music for the user, this code works fine ok on devices running Android up to API 25, when i test in a device running API 26 or greater the Music w

相关标签:
3条回答
  • 2021-01-12 10:02

    Please use this code.

    MediaPlayer player = new MediaPlayer();
    
    player.setDataSource("http://www.server.com/mp3/%s.mp3");
    player.setLooping(false);
    player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    player.prepareAsync();
    
    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    
                    @Override
                    public void onPrepared(MediaPlayer player) {
                        player.start();
    
                    }
    
                });
    
    0 讨论(0)
  • 2021-01-12 10:11

    You need to define a res/xml/network_security_config.xml and permit HTTP for that host:

    <?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>
    

    That network_security_config.xml also needs to be referenced in the Manifest.xml:

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

    The SDK documentation explains it all in detail - and this applies to all network traffic an app creates.

    Instead of lowering the security standards, upgrading the connection to HTTPS should be preferred.


    And concerning that one deprecated method .setAudioStreamType(), use .setAudioAttributes() instead - as your code already does. It does not seem to be the "main problem" here; verified that.

    0 讨论(0)
  • 2021-01-12 10:15

    Just Add one line in application Tag

    <application
            .......
            android:usesCleartextTraffic="true"
            .......>
            .......
        </application>
    
    0 讨论(0)
提交回复
热议问题