Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.mediagallery.UI.Activities;
- import java.io.File;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URI;
- import java.net.URISyntaxException;
- import java.net.URL;
- import java.util.ArrayList;
- import com.example.mediagallery.R;
- import android.app.Activity;
- import android.content.Intent;
- import android.media.AudioManager;
- import android.media.MediaPlayer;
- import android.media.MediaPlayer.OnCompletionListener;
- import android.media.MediaPlayer.OnErrorListener;
- import android.media.MediaPlayer.OnPreparedListener;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Handler;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.SeekBar;
- import android.widget.SeekBar.OnSeekBarChangeListener;
- import android.widget.TextView;
- public class AudioActivity extends BaseActivity {
- private String title;
- private String trackUrl;
- private static final String LOG_TAG = "AudioActivity";
- private Button sendEmail_button;
- private TextView songTitle;
- private Button play_pauseButton;
- private Button stop_button;
- private TextView songPassedTime;
- private TextView songTotalTime;
- private SeekBar seekBar;
- private Handler handler = new Handler();
- private boolean isPrepared;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.media_player_layout);
- Bundle bundle = getIntent().getExtras();
- title = bundle.getString(AudioListActivity.TRACK);
- trackUrl = bundle.getString(AudioListActivity.TRACK_URL);
- initializeActivityContent();
- initializeAudio();
- }
- public void initializeAudio() {
- mediaPlayer = new MediaPlayer();
- mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
- mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
- @Override
- public void onPrepared(MediaPlayer mp) {
- isPrepared = true;
- updateProgressBar();
- Log.d(LOG_TAG, "media player is ready to playback");
- }
- });
- mediaPlayer.setOnErrorListener(new OnErrorListener() {
- @Override
- public boolean onError(MediaPlayer mp, int what, int extra) {
- Log.d(LOG_TAG,
- "media player " + mp.toString() + " error "
- + Integer.toString(what) + " error "
- + Integer.toString(extra));
- return false;
- }
- });
- try {
- mediaPlayer.setDataSource(trackUrl);
- } catch (IllegalArgumentException e) {
- Log.d(LOG_TAG, e.toString());
- } catch (SecurityException e) {
- Log.d(LOG_TAG, e.toString());
- } catch (IllegalStateException e) {
- Log.d(LOG_TAG, e.toString());
- } catch (IOException e) {
- Log.d(LOG_TAG, e.toString());
- }
- mediaPlayer.prepareAsync();
- mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- play_pauseButton.setText("Play");
- handler.removeCallbacks(updateTime);
- seekBar.setProgress(100);
- updateProgressBar();
- }
- });
- }
- private void initializeActivityContent() {
- songTitle = (TextView) findViewById(R.id.song_title);
- songTitle.setText(title);
- play_pauseButton = (Button) findViewById(R.id.button_song_play);
- stop_button = (Button) findViewById(R.id.button_song_stop);
- songPassedTime = (TextView) findViewById(R.id.song_passed_time);
- songPassedTime.setText("00:00");
- songTotalTime = (TextView) findViewById(R.id.total_song_time);
- songTotalTime.setText("00:00");
- seekBar = (SeekBar) findViewById(R.id.seekbar_player);
- sendEmail_button = (Button) findViewById(R.id.button_send_email);
- sendEmail_button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
- intent.setType("*/*");
- intent.putExtra(Intent.EXTRA_SUBJECT, "Attachment from app");
- intent.putExtra(Intent.EXTRA_TEXT, "Sending mp3 file " + title);
- intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"solidscorpion@gmail.com"});
- ArrayList<Uri> uris = new ArrayList<Uri>();
- uris.add(Uri.fromFile(new File(trackUrl)));
- intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
- startActivity(Intent.createChooser(intent, "Send mail"));
- }
- });
- seekBar.setProgress(0);
- seekBar.setMax(100);
- seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress,
- boolean fromUser) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- handler.removeCallbacks(updateTime);
- }
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- // TODO Auto-generated method stub
- handler.removeCallbacks(updateTime);
- int duration = mediaPlayer.getDuration();
- int currentPosition = Utilities.progressToTimer(
- seekBar.getProgress(), duration);
- mediaPlayer.seekTo(currentPosition);
- updateProgressBar();
- }
- });
- play_pauseButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View button) {
- if (isPrepared) {
- if (mediaPlayer.isPlaying()) {
- mediaPlayer.pause();
- updateProgressBar();
- play_pauseButton.setText("Play");
- } else {
- updateProgressBar();
- mediaPlayer.start();
- play_pauseButton.setText("Pause");
- }
- }
- }
- });
- stop_button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mediaPlayer.isPlaying()) {
- mediaPlayer.stop();
- play_pauseButton.setText("Play");
- }
- }
- });
- }
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- MenuItem goToPhotoGallery = menu.findItem(R.id.head_to_photo);
- goToPhotoGallery.setVisible(true);
- return true;
- }
- @Override
- public void onBackPressed() {
- if (mediaPlayer.isPlaying()) {
- mediaPlayer.stop();
- }
- mediaPlayer.release();
- handler.removeCallbacks(updateTime);
- super.onBackPressed();
- }
- public void updateProgressBar() {
- handler.postDelayed(updateTime, 100);
- }
- private Runnable updateTime = new Runnable() {
- @Override
- public void run() {
- long totalDuration = mediaPlayer.getDuration();
- long currentTime = mediaPlayer.getCurrentPosition();
- songTotalTime.setText(""
- + Utilities.millisecondsToTimer(totalDuration));
- songPassedTime.setText(""
- + Utilities.millisecondsToTimer(currentTime));
- int progress = Utilities.getProgressPercentage(currentTime,
- totalDuration);
- seekBar.setProgress(progress);
- handler.postDelayed(this, 100);
- }
- };
- private static class Utilities {
- public static String millisecondsToTimer(long milliseconds) {
- String timerTime = "";
- String secondsTime = "";
- int hours = (int) (milliseconds / (1000 * 60 * 60));
- int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);
- int seconds = (int) ((milliseconds % (1000 * 60 * 60))
- % (1000 * 60) / 1000);
- if (hours > 0) {
- timerTime = hours + ":";
- }
- if (seconds < 10) {
- secondsTime = "0" + seconds;
- } else {
- secondsTime = "" + seconds;
- }
- timerTime = timerTime + minutes + ":" + secondsTime;
- return timerTime;
- }
- public static int getProgressPercentage(long currentDuration,
- long totalDuration) {
- Double percentage = (double) 0;
- long currentSeconds = (int) (currentDuration / 1000);
- long totalSeconds = (int) (totalDuration / 1000);
- percentage = ((double) currentSeconds / totalSeconds) * 100;
- return percentage.intValue();
- }
- public static int progressToTimer(int progress, int totalDuration) {
- int currentDuration = 0;
- totalDuration = (int) (totalDuration / 1000);
- currentDuration = (int) (((double) progress / 100) * totalDuration);
- return currentDuration * 1000;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement