Back to project page Android-Audio-Preview.
The source code is released under:
Apache License
If you think the Android project Android-Audio-Preview listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.leocardz.android.audio.preview; // w w w .ja v a 2 s .c o m import android.media.MediaPlayer; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.ObjectAnimator; public class MainActivity extends ActionBarActivity { private final String URL = "https://dl.dropbox.com/s/hgcgq510urmgmed/01%20Main%20Title.mp3"; private View board; private EditText urlEdittext; private Button actionButton, pause, stop; private LinearLayout buttons, loading; private TextView songTitle, songArtist; private MediaPlayer mediaPlayer; private boolean isAnimating, isUp, isDown, isPlaying; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setUpIds(); urlEdittext.setText(URL); setUpListeners(); setUpMediaPlayer(); } private void setUpMediaPlayer() { if (mediaPlayer == null) { mediaPlayer = new MediaPlayer(); mediaPlayer.setOnBufferingUpdateListener(bufferingUpdateListener); mediaPlayer.setOnCompletionListener(completionListener); mediaPlayer.setOnErrorListener(errorListener); } } private void setUpIds() { isAnimating = isUp = isDown = isPlaying = false; board = findViewById(R.id.board); urlEdittext = (EditText) findViewById(R.id.url_edittext); actionButton = (Button) findViewById(R.id.action_button); pause = (Button) findViewById(R.id.pause); stop = (Button) findViewById(R.id.stop); buttons = (LinearLayout) findViewById(R.id.buttons); loading = (LinearLayout) findViewById(R.id.loading); songTitle = (TextView) findViewById(R.id.song_title); songArtist = (TextView) findViewById(R.id.song_artist); } private void setUpListeners() { actionButton.setOnClickListener(startListener); pause.setOnClickListener(pauseListener); stop.setOnClickListener(stopListener); } private Animator.AnimatorListener slideUpAnimationListener = new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { isAnimating = true; } @Override public void onAnimationEnd(Animator animation) { isUp = true; isDown = false; isAnimating = false; } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }; private Animator.AnimatorListener slideDownAnimationListener = new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { isAnimating = true; } @Override public void onAnimationEnd(Animator animation) { isDown = true; isUp = false; isAnimating = false; } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }; private void streamSong(String url) { if (mediaPlayer != null && !isAnimating) { try { mediaPlayer.setDataSource(url); mediaPlayer.setOnPreparedListener(preparedListener); mediaPlayer.prepareAsync(); } catch (Exception e) { e.printStackTrace(); } } } private View.OnClickListener startListener = new View.OnClickListener() { @Override public void onClick(View view) { try { if (mediaPlayer != null && !isPlaying && !isAnimating) { songTitle.setText("Main Theme"); songArtist.setText("Game of Thrones"); loading.setVisibility(View.VISIBLE); buttons.setVisibility(View.GONE); streamSong(urlEdittext.getText().toString()); if (!isUp) { slideUp(); } } } catch (Exception e) { e.printStackTrace(); } } }; private void slideUp() { ObjectAnimator songSlideUp = ObjectAnimator.ofFloat(board, "translationY", -board.getHeight()); songSlideUp.addListener(slideUpAnimationListener); songSlideUp.start(); } private void slideDown() { ObjectAnimator songSlideDown = ObjectAnimator.ofFloat(board, "translationY", board.getHeight()); songSlideDown.addListener(slideDownAnimationListener); songSlideDown.start(); } private View.OnClickListener pauseListener = new View.OnClickListener() { @Override public void onClick(View view) { toggleMediaPlayer(); } }; private View.OnClickListener stopListener = new View.OnClickListener() { @Override public void onClick(View view) { if (mediaPlayer != null && !isAnimating) { releaseMediaPlayer(); if (!isDown) { slideDown(); } } } }; private void toggleMediaPlayer() { if (mediaPlayer != null && !isAnimating) { if (!isPlaying) { mediaPlayer.start(); pause.setText(R.string.pause); } else { mediaPlayer.pause(); pause.setText(R.string.play); } isPlaying = !isPlaying; } } private MediaPlayer.OnPreparedListener preparedListener = new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { if (mediaPlayer != null) { isPlaying = true; mediaPlayer.start(); } } }; private MediaPlayer.OnCompletionListener completionListener = new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { isPlaying = false; pause.setText(R.string.play); actionButton.setEnabled(true); } }; private MediaPlayer.OnErrorListener errorListener = new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mediaPlayer, int i, int i2) { Toast.makeText(getApplicationContext(), "We could stream song preview", Toast.LENGTH_SHORT).show(); releaseMediaPlayer(); slideDown(); return false; } }; private MediaPlayer.OnBufferingUpdateListener bufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener() { @Override public void onBufferingUpdate(MediaPlayer mediaPlayer, int i) { loading.setVisibility(View.GONE); buttons.setVisibility(View.VISIBLE); } }; private void releaseMediaPlayer() { if (mediaPlayer != null) { try { if (isPlaying) { mediaPlayer.stop(); isPlaying = false; } mediaPlayer.reset(); } catch (Exception e) { e.printStackTrace(); } } } @Override protected void onStop() { slideDown(); releaseMediaPlayer(); super.onStop(); } }