MediaPlayer损坏的URL问题

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

我在项目中使用简单的MediaPlayer收听音频。

如果音频链接断开或不正确,我的应用程序将冻结(一段时间后崩溃)。

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
    mediaPlayer.setDataSource("my audio link");
} catch (IOException e) {
    e.printStackTrace();
}
try {
    mediaPlayer.prepare();
} catch (IOException e) {
    e.printStackTrace();
}
mediaPlayer.start();

谢谢您的帮助。

更新:

logcat

2019-12-15 06:00:04.090 7692-7692/com.swipe.app W/MediaPlayer: Use of stream types is deprecated for operations other than volume control
2019-12-15 06:00:04.090 7692-7692/com.swipe.app W/MediaPlayer: See the documentation of setAudioStreamType() for what to use instead with android.media.AudioAttributes to qualify your playback use case
2019-12-15 06:00:34.824 7692-7806/com.swipe.app E/MediaPlayerNative: error (1, -2147483648)
2019-12-15 06:00:34.825 7692-7692/com.swipe.app W/System.err:     at android.media.MediaPlayer._prepare(Native Method)
2019-12-15 06:00:34.825 7692-7692/com.swipe.app W/System.err:     at android.media.MediaPlayer.prepare(MediaPlayer.java:1274)
2019-12-15 06:00:34.827 7692-7692/com.swipe.app E/MediaPlayerNative: start called in state 0, mPlayer(0xc68284a0)
2019-12-15 06:00:34.827 7692-7692/com.swipe.app E/MediaPlayerNative: error (-38, 0)
2019-12-15 06:00:34.836 7692-7692/com.swipe.app E/MediaPlayer: Error (-38,0)
android android-mediaplayer
1个回答
0
投票

尝试替换

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)

使用以下代码

final AudioAttributes audioAttributes =new AudioAttributes
            .Builder()
            .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
            .build();
mediaPlayer.setAudioAttributes(audioAttributes);

您可以将AudioAttributes类型更改为所需的类型。请参阅文档。https://developer.android.com/reference/android/media/AudioAttributes

原因为setAudioStreamType为折旧方法。参见https://developer.android.com/reference/android/media/MediaPlayer

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