Reputation: 165
When my url is not working i need to adjust an Error listener which sets the offline status in textview . I don't know how to adjust this exactly . Or what does return false means? Any help will be gratefull . Here is my media player:
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 (when i first 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$3.onItemClick(MainActivity.java:174)
It crashes sometimes and took time for about 20secs to display offline status.
Upvotes: 3
Views: 894
Reputation: 753
You can set text in a catch like
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();
}
Upvotes: 1