Проблема заключается в загрузке и воспроизведении списка звуков с помощью AsyncTask - PullRequest
0 голосов
/ 04 апреля 2020

Часть программы - это серия звуков, которые воспроизводятся в следующем порядке:

. Иногда возникает проблема, связанная с тем, что она отклоняется, например, если она загружается поздно и быстро отклоняется, следующий звук воспроизводится и иногда случается так, что он быстро отбрасывает десять подряд и разыгрывается 11-е.

Дайте мне решение о том, как предотвратить его отклонение, и оставайтесь, пока он не выйдет в воздух после того, как следующий ягненок будет закончен.

Эта часть используется для приема и воспроизведения. При возникновении проблемы этот раздел быстро пройдет и будет откалиброван следующий звук. Иногда, например, их два или три, иногда больше, иногда первый воспроизводится правильно.

    private class mp3Play extends AsyncTask<String, Void, Boolean> {

    @Override
    protected void onPreExecute() {
        loading.setVisibility(View.VISIBLE);
    }

    @Override
    protected Boolean doInBackground(String... params) {
        Boolean prepared;
        try {
            mediaPlayer.reset();
            mediaPlayer.setDataSource(params[0]);
            mediaPlayer.prepare();
            prepared = true;
        } catch (Exception e) {
            Log.e("Audio Streaming", e.toString());
            prepared = false;
            loading.setVisibility(View.GONE);
        }

        return prepared;
    }

    @Override
    protected void onPostExecute(Boolean aBoolean) {
        if (aBoolean) {
            loading.setVisibility(View.GONE);
            mediaPlayer.start();
            initialStage = false;
            playPause = true;
            btn_play_pause.setImageResource(R.drawable.ic_pause);
            mediaFileLength = mediaPlayer.getDuration();
            seekbarUpdate();
        }
    }
}

и

    private boolean playSound(String link) {
    if (!isNetworkAvailable()) {
        dlgAlert.create().show();
        return true;
    } else {
        if (link != null) {
            if (!link.isEmpty()) {
                new mp3Play().execute(link);
                return true;
            } else {
                Toast.makeText(activity.this, "No sound", Toast.LENGTH_SHORT).show();
                return false;
            }
        } else {
            Toast.makeText(activity.this, "No sound", Toast.LENGTH_SHORT).show();
            return false;
        }
    }
}

Размер файлов небольшой и существует нет проблем с inte rnet и он не go внутри catch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...