如何在我的媒体播放器中调整 setOnErrorListener 并在文本视图中将状态设置为 "offline"

How to adjust setOnErrorListener in my mediaplayer and set status as "offline" in textview

当我的 url 不工作时,我需要调整一个在 textview 中设置离线状态的错误侦听器。我不知道如何精确调整。或者 return false 是什么意思?任何帮助将不胜感激。 这是我的媒体播放器:

lv_tracks.setOnItemClickListener(新AdapterView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {


        if (isNetworkAvailable()) {
            mSelectedTrackTitle.setText(stations[position]);
            // mSelectedTrackImage.setImageResource(images[position]);
            nowplaying.setText("Now Playing");
            mPlayerControl.setImageResource(R.drawable.ic_pause_circle_filled);
            Resources res = getResources();
            String[] links = res.getStringArray(R.array.links);
            String url = links[position];
            // Toast.makeText(MainActivity.this,url,Toast.LENGTH_SHORT).show();

            if (mMediaPlayer.isPlaying()) {
                Log.d("abc", "playing and now going to reset : " + url);
                try {
                    mMediaPlayer.pause();
                    mMediaPlayer.stop();
                    mMediaPlayer.release();
                    mMediaPlayer = new MediaPlayer();
                    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mMediaPlayer.setDataSource(url);
                    mMediaPlayer.prepare();
                    mMediaPlayer.start();
                } catch (IOException e) {
                    nowplaying.setText("Offline");
                    Toast.makeText(MainActivity.this,"SERVER IS DOWN",Toast.LENGTH_SHORT).show();
                    //mMediaPlayer.release();
                    e.printStackTrace();
                }

            } else {
                try {
                    Log.d("abc", "in else part :" + url);
                    mMediaPlayer = new MediaPlayer();
                    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mMediaPlayer.setDataSource(url);
                    mMediaPlayer.prepare();
                    mMediaPlayer.start();

                } catch (IOException e) {
                    nowplaying.setText("Offline");
                    Toast.makeText(MainActivity.this,"SERVER IS DOWN",Toast.LENGTH_SHORT).show();
                    //mMediaPlayer.release();
                    e.printStackTrace();
                }
                return;
            }
        } else {
            Toast.makeText(MainActivity.this, "No Internet Connection", Toast.LENGTH_SHORT).show();
        }

    }
});

Logcat(当我第一次 select):

10-12 17:07:54.426 20080-20091/indusradio.pk W/MediaPlayer-JNI: MediaPlayer finalized without being released 10-12 17:07:54.426 20080-20091/indusradio.pk I/MediaPlayerNative: Pid:20080 MediaPlayer destructor 10-12 17:08:29.478 20080-20096/indusradio.pk D/MediaPlayerNative: Message: MEDIA_ERROR(100), ext1=MEDIA_ERROR_UNKNOWN(1), ext2=0x80000000 10-12 17:08:29.480 20080-20096/indusradio.pk E/MediaPlayerNative: error (1, -2147483648) 10-12 17:08:29.480 20080-20096/indusradio.pk D/MediaPlayerNative: [notify] : [1204] callback app listenerNotNull=1, send=0 10-12 17:08:29.487 20080-20080/indusradio.pk D/HwRTBlurUtils: check blur style for HwToast-Toast, themeResId : 0x7f0900b4, context : com.example.maham.indusradio.MainActivity@77db462, Nhwext : 6, get Blur : disable with , android.graphics.drawable.NinePatchDrawable@c363c7 10-12 17:08:29.505 20080-20080/indusradio.pk W/System.err: java.io.IOException: Prepare failed.: status=0x1 10-12 17:08:29.506 20080-20080/indusradio.pk W/System.err: at android.media.MediaPlayer._prepare(Native Method) 10-12 17:08:29.507 20080-20080/indusradio.pk W/System.err: at android.media.MediaPlayer.prepare(MediaPlayer.java:1313) 10-12 17:08:29.507 20080-20080/indusradio.pk W/System.err: at com.example.maham.indusradio.MainActivity.onItemClick(MainActivity.java:174)

有时会崩溃,大约需要 20 秒才能显示离线状态。

您可以像

这样在 catch 中设置文本
    mMediaPlayer = new MediaPlayer();

    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                                        mMediaPlayer.setDataSource(url);

    mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                     mMediaPlayer.start();
                }
            });

    mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                                            @Override
                                            public boolean 
    onError(MediaPlayer mp, int what, int extra) {

                                                return false;
                                            }
                                        });

        mMediaPlayer.prepareAsync();
                                    } catch (IOException e) {
                                      nowplaying.setText("OFFLINE")
                                        e.printStackTrace();
                                    }