Animate Progressbar obteniendo la amplitud de mediaPlayer

Hola he leído algoenviar con la misma pregunta pero no puedo encontrar la respuesta exacta o debo decir la respuesta que estaba buscando. Bueno, solo quiero saber cómo puedo obtener el nivel de reproducción del archivo de audio que está configurado en el reproductor multimedia. Ya probé elint volume_level = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); pero por lo que veo. Solo obtengo el volumen actual configurado en mi dispositivo. Bueno, lo que quiero lograr es agregar una animación que siga con el nivel de audio que se está reproduciendo. Aquí está mi código hasta ahora:

Antes de la llamada del método de reproducción de audio:

audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

el método de reproducción:

public void playAudio(String record_path) throws IOException{
        if(audioPlayer!=null && mpStatus == State.Paused){
            /*play from paused state*/
            audioPlayer.start();
            mpStatus = State.Playing;
        }
        else
        {
            /*play from start of recording*/
            setMediaPlayer(record_path);
            audioPlayer.start();
            mpStatus = State.Playing;
        }
    }

y el hilo:

private class playBackRunnable extends Thread {
        final long start_time = System.currentTimeMillis();

        public void run() {
            while(chk_play.isChecked()){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    return;
                } catch (Exception e) {
                    return;
                }

                final long elapsed = System.currentTimeMillis() - start_time;
                final String elapsed_time = util.getAsTime((int) elapsed);

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        int volume_level = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

                        int amp = (int)(volume_level * 100.f)/100;
                        Log.v("Volume Level", String.valueOf(amp));

                        if(chk_play.isChecked()){
                            prog_volume.setProgress(amp);
                            //txt_rectime.setText(elapsed_time);

                            if(amp <= 40 ){
                                prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_green));
                            }else if(amp <= 60){
                                prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_yellow));
                            }else if(amp <= 80){
                                prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_orange));
                            }else {
                                prog_volume.setProgressDrawable(getResources().getDrawable(R.drawable.progress_red));
                            }
                        }

                    }
                });
            }
        }
    }

Espero que alguien me pueda ayudar con esto. Gracias por adelantado.

EDITAR:

AdicionalaudioPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); antes de audioPlayer.prepare () sigue sin funcionar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta