Black screen when loading activity which contains mediaplayer (url) when internet is slow

Viewed 9

am getting a black screen when loading a new activity which contains mediaplayer with an mp3 from a URL. if internet is fast e.g 4G , everything is okay and it takes a few seconds to load. but if internet is slow. e.g 2g and 3g , it takes very long and brings a black screen . i need the activity to load without internet, without the black screen. please help me with what i can change on this code

Button download;


private ImageView imagePlayPause;
private TextView textCurrentTime, textTotalDuration;
private SeekBar playerSeekBar;
private MediaPlayer mediaPlayer;
private final Handler handler = new Handler();


@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ct);


    download = findViewById(R.id.download);



    download.setOnClickListener(view -> gotoUrl("https://www.facebook.com/davidsibandeRN"));


    ImageView imageView3=findViewById(R.id.ImageView3);
    String url ="https://dl.dropboxusercontent.com/s/ruo77t7o3dyggpd/parotitis.png?dl=1";

    Picasso.get().load(url).placeholder(R.drawable.ic_launcher_background).into(imageView3);




    imagePlayPause = findViewById(R.id.imagePlayPause);
    textCurrentTime = findViewById(R.id.textCurrentTime);
    textTotalDuration = findViewById(R.id.textTotalDuration);
    playerSeekBar = findViewById(R.id.playerSeekBar);
    mediaPlayer = new MediaPlayer();

    playerSeekBar.setMax(100);

    imagePlayPause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mediaPlayer.isPlaying()) {
                handler.removeCallbacks(updater);
                mediaPlayer.pause();
                imagePlayPause.setImageResource(R.drawable.ic_baseline_play_arrow_24);
            } else {
                mediaPlayer.start();
                imagePlayPause.setImageResource(R.drawable.ic_baseline_pause_24);
                updateSeekBar();
            }
        }
    });


    prepareMediaPlayer();

    playerSeekBar.setOnTouchListener(new View.OnTouchListener() {
        @SuppressLint("ClickableViewAccessibility")
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            SeekBar seekBar = (SeekBar)  view;
            int playPosition = (mediaPlayer.getDuration() / 100) * seekBar.getProgress();
            mediaPlayer.seekTo(playPosition);
            textCurrentTime.setText(milliSecondsToTimer(mediaPlayer.getCurrentPosition()));
            return false;
        }
    });

    mediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
        @Override
        public void onBufferingUpdate(MediaPlayer mediaPlayer, int i) {
            playerSeekBar.setSecondaryProgress(i);
        }
    });

    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            playerSeekBar.setProgress(0);
            imagePlayPause.setImageResource(R.drawable.ic_baseline_play_arrow_24);
            textCurrentTime.setText(R.string.zero);
            textTotalDuration.setText(R.string.zero);
            mediaPlayer.reset();
            prepareMediaPlayer();
        }
    });
}

private void gotoUrl(String s) {
    Uri uri = Uri.parse(s);
    startActivity(new Intent(Intent.ACTION_VIEW,uri));
}

private void prepareMediaPlayer() {
    try {
        mediaPlayer.setDataSource("https://dl.dropboxusercontent.com/s/tnl4o8isv74rcjb/5.%20parotitis.mp3?dl=1");
        mediaPlayer.prepare();
        textTotalDuration.setText(milliSecondsToTimer(mediaPlayer.getDuration()));
    } catch (Exception exception) {
        Toast.makeText(this, exception.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

private final Runnable updater = new Runnable() {
    @Override
    public void run() {
        updateSeekBar();
        long currentDuration = mediaPlayer.getCurrentPosition();
        textCurrentTime.setText(milliSecondsToTimer(currentDuration));
    }
};

private void updateSeekBar() {
    if (mediaPlayer.isPlaying()) {
        playerSeekBar.setProgress((int) (((float) mediaPlayer.getCurrentPosition() / mediaPlayer.getDuration()) * 100));
        handler.postDelayed(updater, 1000);
    }
}

private String milliSecondsToTimer(long milliSeconds) {
    String timerString = "";
    String secondString;

    int hours = (int) (milliSeconds / (1000 * 60 * 60));
    int minutes = (int) (milliSeconds % (1000 * 60 * 60)) / (1000 * 60);
    int seconds = (int) ((milliSeconds % (1000 * 60 * 60)) % (1000 * 60) / 1000);

    if (hours > 0) {
        timerString = hours + ":";
    }

    if (seconds < 10) {
        secondString = "0" + seconds;
    } else {
        secondString = "" + seconds;
    }

    timerString = timerString + minutes + ":" + secondString;
    return timerString;
}

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

}

0 Answers
Related