java - 如何在我的媒体播放器中调整 setOnErrorListener 并在 textview 中将状态设置为 "offline"

标签 java android android-mediaplayer

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

lv_tracks.setOnItemClickListener(new 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(当我第一次选择时):

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$3.onItemClick(MainActivity.java:174)

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

最佳答案

你可以像这样在捕获中设置文本

    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();
                                    }

关于java - 如何在我的媒体播放器中调整 setOnErrorListener 并在 textview 中将状态设置为 "offline",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52773449/

相关文章:

java - 在文件中有效地存储 float 和 short 值的数组

Android 音频流太慢

java - 没有可用类型的合格 bean(Spring Data)

java - 如何使用 ScrollView ?

java - 切换 Android Activity 的最佳方式是什么?

android - 即使 forceLayout() 不起作用,我如何强制 requestLayout()?

java - 媒体播放器在完成第一首歌曲后播放下一首歌曲

java - 多个动物园管理员节点导致内存不足问题?

java - 我的应用程序中的 Google Now 服务

android - 无法使用 Gson 从另一个 Activity 的共享首选项中删除数据