У меня есть приложение для голосовой почты. Мне бы хотелось, чтобы при прослушивании вокала поисковая панель развивалась постепенно до конца. Но при рендеринге, который у меня есть, панель поиска вообще не ждет конца звука, как только мы начинаем слушать аудио, панель поиска внезапно заряжается. пожалуйста, посмотрите на мой код.
Вот моя играемая функция:
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);
}
}
Любая вещь, которую я забыл