Android MediaPlayer:尝试从随机位置查找时的信息/警告(703,0),信息/警告(702,0),信息/警告(701,0),ProtocolException [英] Android MediaPlayer : info/warning (703, 0),info/warning (702, 0),info/warning (701, 0),ProtocolException when try to seek from a random position

查看:241
本文介绍了Android MediaPlayer:尝试从随机位置查找时的信息/警告(703,0),信息/警告(702,0),信息/警告(701,0),ProtocolException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过使用Mediaplayer从URL流式传输mp3音频,现在无法播放音乐,但是我在任意位置选择搜索栏时,音乐停止播放,并且发生以下异常和警告

Im streaming an mp3 audio from a url by using mediaplayer, Now im able to play music , But when i select seekbar at a random position, music getting stopped and the below exception and warning occurs

W/MediaPlayer: info/warning (703, 0)
W/MediaPlayer: info/warning (702, 0)
W/MediaPlayer: info/warning (701, 0)
W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException

.任何人都可以帮助我解决我的问题.谢谢.

. can anyone pls help me to resolve my issue. thank you.

我的代码是:

            private ImageView play, forward, backward;
            private MediaPlayer mediaPlayer;
            private boolean playing = false;
            private ProgressDialog dialog;
            private String mp3link;
            private SeekBar seekbar;
            private Handler handler = new Handler();
            private int mediaPos;
            private int mediaMax;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                final String url ="";
                initWidgets();

            }

        private void initWidgets() {
            mp3link = "http://loc8app.com/church/uploads/audio/749928ad6fcb7b1aceefdf03bd7a9465.mp3";
            play = (ImageView) findViewById(R.id.control);
            seekbar = (SeekBar) findViewById(R.id.seekBar);
    //        forward = (ImageView) findViewById(R.id.playeer_forward);
    //        backward = (ImageView) findViewById(R.id.playeer_back);
            mediaPlayer = new MediaPlayer();
            play.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    playFunction();
                }
            });

            seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    if(mediaPlayer != null && fromUser){
                        mediaPlayer.seekTo(progress);
                    }
                }
            });
        }


        private void playFunction() {
            if (!playing) {
                try {
                    dialog = ProgressDialog
                            .show(MainActivity.this,
                                    "",
                                    getString(com.root5solutions.music.R.string.buffering),
                                    true);
                    dialog.setCancelable(true);
                    dialog.show();
                    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mediaPlayer.setDataSource(mp3link);
                    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            play.setBackgroundResource(R.drawable.pause);
                            playing = true;
                            //this is new
                            mediaPos = mp.getCurrentPosition();
                            mediaMax = mp.getDuration();

                            seekbar.setMax(mediaMax);
                            seekbar.setProgress(mediaPos);
                            //this line is the error
                            handler.removeCallbacks(moveSeekBarThread);
                            handler.postDelayed(moveSeekBarThread, 100);

                            mp.start();
                            dialog.dismiss();
                        }
                    });
                    mediaPlayer.prepareAsync();

                } catch (Exception e) {
                    e.printStackTrace();
                    dialog.dismiss();
                }
            } else {
                play.setBackgroundResource(R.drawable.play);
                mediaPlayer.stop();
                mediaPlayer.release();
                playing = false;
            }
        }

        @Override
        public void onBackPressed() {
            super.onBackPressed();
            if (mediaPlayer.isPlaying()) {
                handler.removeCallbacks(moveSeekBarThread);
                mediaPlayer.stop();
                mediaPlayer.release();
            }
        }

        private Runnable moveSeekBarThread = new Runnable() {

            public void run() {
                if (mediaPlayer.isPlaying()) {
                    int mediaPos_new = mediaPlayer.getCurrentPosition();
                    int mediaMax_new = mediaPlayer.getDuration();
                    seekbar.setMax(mediaMax_new);
                    seekbar.setProgress(mediaPos_new);

                    handler.postDelayed(this, 1000); // Looping the thread after 1 second

                }

            }
        };
    }

Logcat显示:

 W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:48.343 23176-23236/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:48.974 23176-23192/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:49.384 23176-23700/com.root.music W/MediaPlayer: info/warning (703, 0)
11-15 14:15:49.384 23176-23700/com.root.music W/MediaPlayer: info/warning (701, 0)
11-15 14:15:49.584 23176-23394/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:50.375 23176-23193/com.root.music W/MediaPlayer: info/warning (703, 0)
11-15 14:15:50.375 23176-23236/com.root.music W/MediaPlayer: info/warning (702, 0)
11-15 14:15:51.176 23176-23700/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:51.777 23176-23236/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:52.387 23176-23192/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:52.988 23176-23394/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:53.588 23176-23193/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:54.189 23176-23700/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException
11-15 14:15:54.809 23176-23236/com.root.music W/MediaHTTPConnection: readAt 2230281 / 32768 => java.net.ProtocolException

推荐答案

尝试一下:

mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
    @Override
    public void onSeekComplete(MediaPlayer arg0) {
        Log.d(TAG, "onSeekComplete() current pos : " + arg0.getCurrentPosition());
        SystemClock.sleep(200);
        mediaPlayer.start();
    }
});

这篇关于Android MediaPlayer:尝试从随机位置查找时的信息/警告(703,0),信息/警告(702,0),信息/警告(701,0),ProtocolException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆