Advertisement
Guest User

Untitled

a guest
Jul 31st, 2013
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.03 KB | None | 0 0
  1. package com.example.mediagallery.UI.Activities;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.net.MalformedURLException;
  6. import java.net.URI;
  7. import java.net.URISyntaxException;
  8. import java.net.URL;
  9. import java.util.ArrayList;
  10.  
  11. import com.example.mediagallery.R;
  12.  
  13. import android.app.Activity;
  14. import android.content.Intent;
  15. import android.media.AudioManager;
  16. import android.media.MediaPlayer;
  17. import android.media.MediaPlayer.OnCompletionListener;
  18. import android.media.MediaPlayer.OnErrorListener;
  19. import android.media.MediaPlayer.OnPreparedListener;
  20. import android.net.Uri;
  21. import android.os.Bundle;
  22. import android.os.Handler;
  23. import android.util.Log;
  24. import android.view.Menu;
  25. import android.view.MenuItem;
  26. import android.view.View;
  27. import android.view.View.OnClickListener;
  28. import android.widget.Button;
  29. import android.widget.SeekBar;
  30. import android.widget.SeekBar.OnSeekBarChangeListener;
  31. import android.widget.TextView;
  32.  
  33. public class AudioActivity extends BaseActivity {
  34.     private String title;
  35.     private String trackUrl;
  36.     private static final String LOG_TAG = "AudioActivity";
  37.  
  38.     private Button sendEmail_button;
  39.     private TextView songTitle;
  40.     private Button play_pauseButton;
  41.     private Button stop_button;
  42.     private TextView songPassedTime;
  43.     private TextView songTotalTime;
  44.     private SeekBar seekBar;
  45.     private Handler handler = new Handler();
  46.     private boolean isPrepared;
  47.  
  48.     @Override
  49.     protected void onCreate(Bundle savedInstanceState) {
  50.         super.onCreate(savedInstanceState);
  51.         setContentView(R.layout.media_player_layout);
  52.  
  53.         Bundle bundle = getIntent().getExtras();
  54.         title = bundle.getString(AudioListActivity.TRACK);
  55.         trackUrl = bundle.getString(AudioListActivity.TRACK_URL);
  56.  
  57.         initializeActivityContent();
  58.         initializeAudio();
  59.  
  60.     }
  61.  
  62.     public void initializeAudio() {
  63.         mediaPlayer = new MediaPlayer();
  64.         mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  65.         mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
  66.  
  67.             @Override
  68.             public void onPrepared(MediaPlayer mp) {
  69.                 isPrepared = true;
  70.                 updateProgressBar();
  71.                 Log.d(LOG_TAG, "media player is ready to playback");
  72.             }
  73.  
  74.         });
  75.         mediaPlayer.setOnErrorListener(new OnErrorListener() {
  76.  
  77.             @Override
  78.             public boolean onError(MediaPlayer mp, int what, int extra) {
  79.                 Log.d(LOG_TAG,
  80.                         "media player " + mp.toString() + " error "
  81.                                 + Integer.toString(what) + " error "
  82.                                 + Integer.toString(extra));
  83.                 return false;
  84.             }
  85.         });
  86.         try {
  87.             mediaPlayer.setDataSource(trackUrl);
  88.         } catch (IllegalArgumentException e) {
  89.             Log.d(LOG_TAG, e.toString());
  90.         } catch (SecurityException e) {
  91.             Log.d(LOG_TAG, e.toString());
  92.         } catch (IllegalStateException e) {
  93.             Log.d(LOG_TAG, e.toString());
  94.         } catch (IOException e) {
  95.             Log.d(LOG_TAG, e.toString());
  96.         }
  97.         mediaPlayer.prepareAsync();
  98.         mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
  99.             @Override
  100.             public void onCompletion(MediaPlayer mp) {
  101.                 play_pauseButton.setText("Play");
  102.                 handler.removeCallbacks(updateTime);
  103.                 seekBar.setProgress(100);
  104.                 updateProgressBar();
  105.             }
  106.         });
  107.     }
  108.  
  109.     private void initializeActivityContent() {
  110.         songTitle = (TextView) findViewById(R.id.song_title);
  111.         songTitle.setText(title);
  112.         play_pauseButton = (Button) findViewById(R.id.button_song_play);
  113.         stop_button = (Button) findViewById(R.id.button_song_stop);
  114.         songPassedTime = (TextView) findViewById(R.id.song_passed_time);
  115.         songPassedTime.setText("00:00");
  116.         songTotalTime = (TextView) findViewById(R.id.total_song_time);
  117.         songTotalTime.setText("00:00");
  118.         seekBar = (SeekBar) findViewById(R.id.seekbar_player);
  119.         sendEmail_button = (Button) findViewById(R.id.button_send_email);
  120.        
  121.         sendEmail_button.setOnClickListener(new OnClickListener() {
  122.            
  123.             @Override
  124.             public void onClick(View v) {
  125.                 // TODO Auto-generated method stub
  126.                 Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
  127.                 intent.setType("*/*");
  128.                 intent.putExtra(Intent.EXTRA_SUBJECT, "Attachment from app");
  129.                 intent.putExtra(Intent.EXTRA_TEXT, "Sending mp3 file " + title);
  130.                 intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"solidscorpion@gmail.com"});
  131.                 ArrayList<Uri> uris = new ArrayList<Uri>();
  132.                
  133.                 uris.add(Uri.fromFile(new File(trackUrl)));
  134.                
  135.                 intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
  136.                
  137.                 startActivity(Intent.createChooser(intent, "Send mail"));
  138.             }
  139.         });
  140.        
  141.         seekBar.setProgress(0);
  142.         seekBar.setMax(100);
  143.         seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
  144.  
  145.             @Override
  146.             public void onProgressChanged(SeekBar seekBar, int progress,
  147.                     boolean fromUser) {
  148.                 // TODO Auto-generated method stub
  149.  
  150.             }
  151.  
  152.             @Override
  153.             public void onStartTrackingTouch(SeekBar seekBar) {
  154.                 handler.removeCallbacks(updateTime);
  155.  
  156.             }
  157.  
  158.             @Override
  159.             public void onStopTrackingTouch(SeekBar seekBar) {
  160.                 // TODO Auto-generated method stub
  161.                 handler.removeCallbacks(updateTime);
  162.                 int duration = mediaPlayer.getDuration();
  163.                 int currentPosition = Utilities.progressToTimer(
  164.                         seekBar.getProgress(), duration);
  165.  
  166.                 mediaPlayer.seekTo(currentPosition);
  167.                 updateProgressBar();
  168.             }
  169.         });
  170.  
  171.         play_pauseButton.setOnClickListener(new OnClickListener() {
  172.  
  173.             @Override
  174.             public void onClick(View button) {
  175.                 if (isPrepared) {
  176.                     if (mediaPlayer.isPlaying()) {
  177.                         mediaPlayer.pause();
  178.                         updateProgressBar();
  179.                         play_pauseButton.setText("Play");
  180.  
  181.                     } else {
  182.                         updateProgressBar();
  183.                         mediaPlayer.start();
  184.                         play_pauseButton.setText("Pause");
  185.  
  186.                     }
  187.                 }
  188.             }
  189.         });
  190.  
  191.         stop_button.setOnClickListener(new OnClickListener() {
  192.             @Override
  193.             public void onClick(View v) {
  194.                 if (mediaPlayer.isPlaying()) {
  195.                     mediaPlayer.stop();
  196.                     play_pauseButton.setText("Play");
  197.                 }
  198.             }
  199.         });
  200.  
  201.     }
  202.  
  203.     @Override
  204.     public boolean onPrepareOptionsMenu(Menu menu) {
  205.         MenuItem goToPhotoGallery = menu.findItem(R.id.head_to_photo);
  206.         goToPhotoGallery.setVisible(true);
  207.         return true;
  208.     }
  209.  
  210.     @Override
  211.     public void onBackPressed() {
  212.         if (mediaPlayer.isPlaying()) {
  213.             mediaPlayer.stop();
  214.         }
  215.         mediaPlayer.release();
  216.         handler.removeCallbacks(updateTime);
  217.         super.onBackPressed();
  218.     }
  219.  
  220.     public void updateProgressBar() {
  221.         handler.postDelayed(updateTime, 100);
  222.     }
  223.  
  224.     private Runnable updateTime = new Runnable() {
  225.  
  226.         @Override
  227.         public void run() {
  228.             long totalDuration = mediaPlayer.getDuration();
  229.             long currentTime = mediaPlayer.getCurrentPosition();
  230.  
  231.             songTotalTime.setText(""
  232.                     + Utilities.millisecondsToTimer(totalDuration));
  233.             songPassedTime.setText(""
  234.                     + Utilities.millisecondsToTimer(currentTime));
  235.  
  236.             int progress = Utilities.getProgressPercentage(currentTime,
  237.                     totalDuration);
  238.             seekBar.setProgress(progress);
  239.             handler.postDelayed(this, 100);
  240.  
  241.         }
  242.     };
  243.  
  244.     private static class Utilities {
  245.  
  246.         public static String millisecondsToTimer(long milliseconds) {
  247.             String timerTime = "";
  248.             String secondsTime = "";
  249.  
  250.             int hours = (int) (milliseconds / (1000 * 60 * 60));
  251.             int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);
  252.             int seconds = (int) ((milliseconds % (1000 * 60 * 60))
  253.                     % (1000 * 60) / 1000);
  254.  
  255.             if (hours > 0) {
  256.                 timerTime = hours + ":";
  257.             }
  258.  
  259.             if (seconds < 10) {
  260.                 secondsTime = "0" + seconds;
  261.             } else {
  262.                 secondsTime = "" + seconds;
  263.             }
  264.  
  265.             timerTime = timerTime + minutes + ":" + secondsTime;
  266.  
  267.             return timerTime;
  268.         }
  269.  
  270.         public static int getProgressPercentage(long currentDuration,
  271.                 long totalDuration) {
  272.             Double percentage = (double) 0;
  273.  
  274.             long currentSeconds = (int) (currentDuration / 1000);
  275.             long totalSeconds = (int) (totalDuration / 1000);
  276.  
  277.             percentage = ((double) currentSeconds / totalSeconds) * 100;
  278.  
  279.             return percentage.intValue();
  280.         }
  281.  
  282.         public static int progressToTimer(int progress, int totalDuration) {
  283.             int currentDuration = 0;
  284.             totalDuration = (int) (totalDuration / 1000);
  285.             currentDuration = (int) (((double) progress / 100) * totalDuration);
  286.  
  287.             return currentDuration * 1000;
  288.         }
  289.  
  290.     }
  291.  
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement