Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaPlayer.getCurrentPosition()在播放internet广播时始终返回0_Android_Android Mediaplayer - Fatal编程技术网

Android MediaPlayer.getCurrentPosition()在播放internet广播时始终返回0

Android MediaPlayer.getCurrentPosition()在播放internet广播时始终返回0,android,android-mediaplayer,Android,Android Mediaplayer,我用MediaPlayer打开一个在线音频AAC流。无线电服务器允许收听URL中带有特殊参数的广播存档 http://extstreamer800.moskva.fm/stream/7881/1425837912.0?format=aac&hash=c4f64a41d00dafd3c0c7b989d12b3fec (hash将很快过期,导致URL无效。可以从以下位置的在线播放器获取新的URL) 我的程序有一个文本字段,应该包含当前位置。我定期调用player.getCurrentPos

我用
MediaPlayer
打开一个在线音频
AAC
流。无线电服务器允许收听URL中带有特殊参数的广播存档

http://extstreamer800.moskva.fm/stream/7881/1425837912.0?format=aac&hash=c4f64a41d00dafd3c0c7b989d12b3fec
hash
将很快过期,导致URL无效。可以从以下位置的在线播放器获取新的URL)

我的程序有一个文本字段,应该包含当前位置。我定期调用
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();
        }

我将回答而不是评论,因为这不适合作为评论。 根据问题,您正在使用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
变量


另一个原因可能是模拟器。您是否在真实设备上尝试了解决方案?

您是否可以共享媒体播放器的初始化?您是否也尝试了真实设备?