当前位置: 首页 > 知识库问答 >
问题:

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

柴飞扬
2023-03-14

当我的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(当我第一次选择时):

10-12 17:07:54.426 20080-20091/indusradio。pk W/MediaPlayer JNI:MediaPlayer定稿,未发布10-12 17:07:54.426 20080-20091/indusradio。pk I/MediaPlayerActive:Pid:20080 MediaPlayer析构函数10-12 17:08:29.478 20080-20096/indusradio。pk D/MediaPlayerActive:消息:MEDIA\u ERROR(100),ext1=MEDIA\u ERROR\u UNKNOWN(1),ext2=0x8000000 10-12 17:08:29.480 20080-20096/indusradio。pk E/MediaPlayerActive:错误(1,-2147483648)10-12 17:08:29.480 20080-20096/indusradio。pk D/MediaPlayerActive:[通知]:[1204]回调应用程序listenerNotNull=1,发送=0 10-12 17:08:29.487 20080-20080/行业Radio。pk D/hwrtbluutils:检查hwtoost Toast的模糊样式,themeResId:0x7f0900b4,context:com。实例马哈姆。印度船级社。MainActivity@77db462,Nhwext:6,get Blur:disable with,android。图样可抽出式。NinePatchDrawable@c363c710-12 17:08:29.505 20080-20080/indusradio。带系统的pk。错误:java。io。IOException:准备失败:状态=0x1 10-12 17:08:29.506 20080-20080/工业无线电。带系统的pk。错误:在android上。媒体MediaPlayer_制备(本地方法)10-12 17:08:29.507 20080-20080/工业雷达。带系统的pk。错误:在android上。媒体MediaPlayer。准备(MediaPlayer.java:1313)10-12 17:08:29.507 20080-20080/indusradio。带系统的pk。错误:位于com。实例马哈姆。印度船级社。主要活动3美元。onItemClick(MainActivity.java:174)

它有时会崩溃,大约需要20秒才能显示脱机状态。

共有1个答案

穆展鹏
2023-03-14

您可以在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();
                                    }
 类似资料:
  • 我正在开发一个包含两个活动的应用程序,一个是媒体播放器,另一个是要播放的歌曲列表,mp3播放器工作正常,从活动列表中我传递歌曲的名称和播放器工作正常。我有两个问题,如果用户播放一首歌并离开应用程序(这首歌一直在后台播放,这就是假设的工作方式),然后用户返回应用程序,搜索栏设置为0,计时器设置为0,有没有办法“保存”活动......也是如果一首歌正在播放,用户试图播放另一首歌,这首歌在前一首歌的顶部

  • 我正在一个在线广播流媒体项目中工作,在那里我正在使用来自 URL 的媒体播放器播放音频。音乐正在播放并且工作正常。但是我坚持播放,暂停有关玩家活动状态的功能。我希望当应用程序通过按主页按钮退出时,音乐将继续播放,但是当电话响起时,音乐将暂停,在语音通话后,音乐将恢复。此外,当用户打开另一个应用程序时,音乐将继续在后台播放。(作为Android的默认音乐播放器工作) 但我的所作所为几乎实现了我想要的

  • 在这里,我正试图将整个图像作为卡片视图的背景。但如图所示,它占用了一些空间。我尝试了和以及其他方法,但它没有响应。在附加的图像中,紫色表示占用的空空间。我需要的空间需要占用与背景图像。这是我的代码。 这是我的代码输出的图像

  • 我已经创建了一个使用媒体播放器播放音频的应用程序,但即使其他应用程序(如youtube)开始播放视频,我的播放器也不会停止。 如何停止音频,如果其他应用程序开始播放音频。 我用过mediaPlayer。start();播放音频。 任何帮助都将不胜感激。

  • 我们有一个使用AU graph - CoreAudio API的工作应用程序来播放音频。图形始终在运行,各种源素材的播放/暂停状态在图形渲染回调函数中管理。我们成功地响应了UIEventTypeRemoteControl事件,并使用MPNowPlayingInfoCenter使用当前播放内容的元数据成功地更新了锁定屏幕。 缺少的一点是更新iOS多任务处理栏中播放/暂停按钮的状态。它始终处于“暂停”

  • 我正在尝试向seekbar添加一个音频文件,该文件将由seekbar控制,而无需向我的应用程序添加任何按钮。音频文件将附加到seekbar,通过seekbar进程,音量将增加或减少。下面是我的代码,我的应用程序正在崩溃,一次又一次,我不知道为什么。请在这方面帮助我。 下面是我的日志错误