Git Product home page Git Product logo

Comments (3)

AwesomeDracula avatar AwesomeDracula commented on July 1, 2024 1

In your .xml file, using <com.gauravk.audiovisualizer.visualizer.BarVisualizer /> instead of <com.gauravk.audiovisualizer.visualizer.BlastVisualizer />

from audio-visualizer-android.

Doctor32th avatar Doctor32th commented on July 1, 2024

//I LEAVE MY CODE HERE

public class PlayerActivity extends AppCompatActivity {

Button btnPlay, btnNext, btnPrevious, btnFastForward, btnFastBackward;
TextView txtSongName, txtSongStart, txtSongEnd;
SeekBar seekMusicBar;
BarVisualizer barVisualizer;
ImageView imageView;

String songName;

public static final String EXTRA_NAME = "song_name";
static MediaPlayer mediaPlayer;

int position;
ArrayList<File> mySongs;
Thread updateSeekBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_player);

    btnPrevious = findViewById(R.id.btnPrevious);
    btnNext = findViewById(R.id.btnNext);
    btnPlay = findViewById(R.id.btnPlay);
    btnFastForward = findViewById(R.id.btnFastForward);
    btnFastBackward = findViewById(R.id.btnFastBackward);

   
    txtSongName = findViewById(R.id.txtSong);
    txtSongStart = findViewById(R.id.txtSongStart);
    txtSongEnd = findViewById(R.id.txtSongEnd);

  
    seekMusicBar = findViewById(R.id.seekBar);
    barVisualizer = findViewById(R.id.green_wave);

    imageView = findViewById(R.id.imgView);

    
    if (mediaPlayer != null){
        mediaPlayer.start();
        mediaPlayer.release();
    }

    Intent intent = getIntent();

    Bundle bundle = intent.getExtras();

    mySongs = (ArrayList)bundle.getParcelableArrayList("songs");

    String sName = intent.getStringExtra("songname");

    position = bundle.getInt("pos", 0);

    txtSongName.setSelected(true);

 
    Uri uri = Uri.parse(mySongs.get(position).toString());
    songName = mySongs.get(position).getName();
    txtSongName.setText(songName);

  
    mediaPlayer = MediaPlayer.create(getApplicationContext(), uri);
    mediaPlayer.start();

 
    updateSeekBar = new Thread(){
        @Override
        public void run() {
            int totalDuration = mediaPlayer.getDuration();
            int currentPosition = 0;

            while(currentPosition < totalDuration) {

                try {
                    sleep(500);
                    currentPosition = mediaPlayer.getCurrentPosition();
                    seekMusicBar.setProgress(currentPosition);

                } catch (InterruptedException | IllegalStateException e) {
                    e.printStackTrace();
                }
            }

        }
    };

 
    seekMusicBar.setMax(mediaPlayer.getDuration());
 
    updateSeekBar.start();
 
    seekMusicBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.teal_200), PorterDuff.Mode.MULTIPLY);
    seekMusicBar.getThumb().setColorFilter(getResources().getColor(R.color.teal_200), PorterDuff.Mode.SRC_IN);

 
    seekMusicBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            mediaPlayer.seekTo(seekBar.getProgress());
        }
    });

    String endTime = createTime(mediaPlayer.getDuration());
    txtSongEnd.setText(endTime);

  
    final Handler handler = new Handler();
    final int delay = 1000;
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            String currentTime = createTime(mediaPlayer.getCurrentPosition());
            txtSongStart.setText(currentTime);
            handler.postDelayed(this, delay);
        }
    }, delay);

    btnPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           
            if(mediaPlayer.isPlaying()){
                btnPlay.setBackgroundResource(R.drawable.ic_play);
                mediaPlayer.pause();
            } else {
              
                btnPlay.setBackgroundResource(R.drawable.ic_pause);
                mediaPlayer.start();


                TranslateAnimation moveAnim = new TranslateAnimation(-25, 25,-25, 25);
                moveAnim.setInterpolator(new AccelerateInterpolator());
                moveAnim.setDuration(600);
                moveAnim.setFillEnabled(true);
                moveAnim.setFillAfter(true);
                moveAnim.setRepeatMode(Animation.REVERSE);
                moveAnim.setRepeatCount(1);


                imageView.startAnimation(moveAnim);

            }
        }
    });


    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            btnNext.performClick();
        }
    });


    int audioSessionId = mediaPlayer.getAudioSessionId();
    if (audioSessionId != -1) {
        barVisualizer.setAudioSessionId(audioSessionId);
    }


    btnNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            mediaPlayer.stop();
            mediaPlayer.release();

        
            position = ((position + 1)%mySongs.size());

            Uri uri = Uri.parse(mySongs.get(position).toString());

            mediaPlayer = MediaPlayer.create(getApplicationContext(), uri);
            songName = mySongs.get(position).getName();
            txtSongName.setText(songName);
            mediaPlayer.start();

            startAnimation(imageView, 360f);
        }
    });


    btnPrevious.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            mediaPlayer.stop();
            mediaPlayer.release();


            position = ((position - 1) < 0)?(mySongs.size() -1):position-1;
            Uri uri = Uri.parse(mySongs.get(position).toString());

            mediaPlayer = MediaPlayer.create(getApplicationContext(), uri);
            songName = mySongs.get(position).getName();
            txtSongName.setText(songName);
            mediaPlayer.start();

            startAnimation(imageView, -360f);
        }
    });

    btnFastForward.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mediaPlayer.isPlaying()){
                mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() + 10000);
            }
        }
    });

    btnFastBackward.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mediaPlayer.isPlaying()){
                mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() - 10000);
            }
        }
    });

}

public void startAnimation(View view, Float degree){

    ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageView, "rotation", 0f, degree);


    objectAnimator.setDuration(1000);

    AnimatorSet animatorSet = new AnimatorSet();
    animatorSet.playTogether(objectAnimator);
    animatorSet.start();
}

public String createTime(int duration){
    String time = "";
    int min = duration/1000/60;
    int sec = duration/1000%60;

    time = time + min + ":";

    if (sec < 10) {
        time+="0";
    }

    time+=sec;
    return time;
}

}

from audio-visualizer-android.

Doctor32th avatar Doctor32th commented on July 1, 2024

Thank you! It works!!

from audio-visualizer-android.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.