【发布时间】:2019-08-13 06:03:39
【问题描述】:
奇怪的问题,我有一个 Android 6.0 华为和一个 9.0 三星设备,我正在这两个设备上测试以下代码:
String streamURL = radioObj.getString(RADIOSTATIONS_STREAM_URL) + "/stream";
Log.i(TAG, "STREAM URL: " + streamURL);
// prints: http://109.123.70.138:8136/stream
// Play selected station
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
playPauseButton.setBackgroundResource(R.drawable.play_icon);
}
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(streamURL);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}});
} catch (IOException e) { e.printStackTrace();
simpleAlert("Thers's something wrong with this stream's URL:" + e.getMessage(), ctx);
}
我知道该 URL 是有效的,因为我正在调用另一个检查 Artist 和 Current Song 的函数,并且通过在 Logcat 中打印该信息可以正常工作,但我的 Android 9 设备三星 A40 根本没有音乐。音量已满。
相反,在我的 6.0 设备上,音乐播放!
我也试图得到一些这样的 Logcat 消息:
public void onPrepared(MediaPlayer mp) {
Log.i(TAG, "MEDIA PLAYER: " + mp.getDuration());
mediaPlayer.start();
}});
但是什么都没有打印出来,就像我的代码忽略了 onPreparedListener 调用一样。
我还尝试将我的 mediaPlayer 分配给 mp,如下所示:
@Override
public void onPrepared(MediaPlayer mp) {
Log.i(TAG, "MEDIA PLAYER: " + mp.getDuration());
mediaPlayer = mp;
mp.start();
}});
再一次,完全没有成功。
我做错了什么?
【问题讨论】:
标签: android url streaming android-mediaplayer shoutcast