Моя панель поиска загружается внезапно, не дожидаясь окончания аудиофайла. Как сделать так, чтобы панель поиска медленно развивалась - PullRequest
0 голосов
/ 07 марта 2020

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

Вот моя играемая функция:

private void play_songs () {

     mediaPlayer = new MediaPlayer();

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        mediaPlayer.setAudioAttributes(new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_MEDIA)
                .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                .setLegacyStreamType(AudioManager.STREAM_MUSIC)
                .build());

    } else {
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); }

    try {
        // URL de test  : http://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3
        mediaPlayer.setDataSource(outputfile);
        elapsedMillis = SystemClock.elapsedRealtime()- chronometer.getBase();
        mediaPlayer.prepare();
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                bar.setMax(mp.getDuration());
                Log.d(" TAG DURATION", " VRIFIONS LA DUREE "+ mp.getDuration());
                mp.seekTo(mp.getCurrentPosition());
                mp.start();
               // PlayCycle();
            }
        });

        bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if(mediaPlayer != null && fromUser){
                    mediaPlayer.seekTo(progress);

                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    } catch (IOException e) {
        e.printStackTrace();
        Log.d("Prepare failed.: status", " ALORS"+ equals(e.getMessage()));
        Log.d("Catch De play song", "message " + e.getMessage());
    }
     elapsedMillis = SystemClock.elapsedRealtime()- chronometer.getBase();
}

public void PlayCycle(){
     mediaPlayer = new MediaPlayer();
     bar.setProgress(mediaPlayer.getCurrentPosition());
     Log.d(" POSITION ", "MEDIAPLAYER POSITION" + mediaPlayer.getCurrentPosition());
    if(mediaPlayer.isPlaying()){

        runnable = new Runnable() {
            @Override
            public void run() {
                PlayCycle();
            }
        };
        handler.postDelayed(runnable,1000);
    }

}

Любая вещь, которую я забыл

...