我使用AAC
打开在线音频MediaPlayer
信息流。无线电服务器允许使用URL中的特殊参数收听广播存档。
http://extstreamer800.moskva.fm/stream/7881/1425837912.0?format=aac&hash=c4f64a41d00dafd3c0c7b989d12b3fec
(hash
即将过期,导致网址无效。可以通过http://moskva.fm的在线播放器获取新的
我的程序有一个文本字段,应该包含当前位置。我定期调用player.getCurrentPosition()
并将毫秒格式化为字符串。
我注意到当MediaPlayer正在播放持续时间未知的流时,getCurrentPosition()
始终返回0.我正在使用AVD 4.4.2进行测试
try {
final Handler handler = new Handler();
final MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), Uri.parse("http://extstreamer800.moskva.fm/stream/7881/1425837912.0?format=aac&hash=c4f64a41d00dafd3c0c7b989d12b3fec"));
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.e("x", "currentPosition = " + mediaPlayer.getCurrentPosition());
}
}, 10000);
}
});
mediaPlayer.prepareAsync();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
我会回答而不是评论,因为这不适合作为评论。 根据你使用onPrepared回调的问题,是吗? 如果从外部源流式传输,我会这样做:
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mediaPlayer.prepareAsync();
您似乎没有在此回调中使用mp
变量。
另一个原因可能是模拟器。您是否在真实设备上尝试过解决方案?