ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


[Source] °£´ÜÇÑ MP3 Ç÷¹ÀÌ¾î ¿¹Á¦
8³â Àü
http://www.androidpub.com/?module=file&act=procFileDownload&file_srl=206343&sid=1fb9ba36f4fe9f3df9537406ca7f9ccf

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class PlayingMp3 extends Activity implements OnClickListener,Runnable, OnCompletionListener
{
  private static final String TAG = "TEST_DEBUG";
  
  private TextView title;
  private TextView time;
  
  private ImageView plus_btn;
  private ImageView minus_btn;
  
  private ImageView rew_btn;
  private ImageView stop_btn;
  private ImageView play_btn;
  private ImageView pause_btn;
  private ImageView ff_btn;
  
  private static MediaPlayer mp;
  private ProgressBar pb;
  //private mp3Thread mp3t;
  private Thread mp3t;
  private int myDuration;
  private AudioManager am;
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.play);
    
    
    Bundle b = getIntent().getExtras();
    File basepath = Environment.getExternalStorageDirectory();
    String mp3name = b.getString("mp3name");
    
    try {
      title = (TextView)findViewById(R.id.title);
      
      time = (TextView)findViewById(R.id.time);
      
      plus_btn = (ImageView)findViewById(R.id.plus_btn);
      
      minus_btn = (ImageView)findViewById(R.id.minus_btn);
      
      rew_btn = (ImageView)findViewById(R.id.rew_btn);
      
      stop_btn = (ImageView)findViewById(R.id.stop_btn);
      
      play_btn = (ImageView)findViewById(R.id.play_btn);
      
      pause_btn = (ImageView)findViewById(R.id.pause_btn);
      
      ff_btn = (ImageView)findViewById(R.id.ff_btn);
    } catch (Exception e) {
      // TODO: handle exception
      Log.e(TAG,"ERROR: "+e.getMessage());
    }
    
    
    title.setText(mp3name);
    
    plus_btn.setOnClickListener(this);
    minus_btn.setOnClickListener(this);
    
    rew_btn.setOnClickListener(this);
    stop_btn.setOnClickListener(this);
    play_btn.setOnClickListener(this);
    pause_btn.setOnClickListener(this);
    ff_btn.setOnClickListener(this);
    
    mp = new MediaPlayer();
    
    mp.setOnCompletionListener(this);
    
    
    
    pb = new ProgressBar(this);
    try {
      mp.setDataSource(basepath.getPath()+"/"+mp3name);
      mp.prepare();
      //mp.setLooping(false);
      Log.d(TAG,"MP3 FILE ¡¼"+mp3name+"¡½ LOAD COMPLETE.");
    } catch (IllegalArgumentException e) {
      // TODO Auto-generated catch block
      Log.e(TAG,e.getMessage());
    } catch (IllegalStateException e) {
      // TODO Auto-generated catch block
      Log.e(TAG,e.getMessage());
    } catch (IOException e) {
      // TODO Auto-generated catch block
      Log.e(TAG,e.getMessage());
    }
    myDuration = mp.getDuration();
    String mp3time = changeToMinutes(myDuration);
    time.setText(mp3time);
    
    //mp3t = new mp3Thread();
    mp3t = new Thread(this);
    pb = (ProgressBar)findViewById(R.id.ProgressBar01);
    pb.setIndeterminate(false);
    
    am = (AudioManager)getSystemService(AUDIO_SERVICE);
  }
  
  
  
  public void onClick(View view)
  {
    if(view == plus_btn)
    {
      try {
        
        int vol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
        //mp.setVolume(vol, vol);
        am.setStreamVolume(AudioManager.STREAM_MUSIC, vol+1, AudioManager.FLAG_SHOW_UI);
        //Toast.makeText(this, "vol:"+vol, 500).show();
        
      } catch (Exception e) {
        // TODO: handle exception
      }
    }
    else if(view == minus_btn)
    {
      try {
        int vol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
        //mp.setVolume(vol, vol);
        //Toast.makeText(this, "vol:"+vol, 500).show();
        am.setStreamVolume(AudioManager.STREAM_MUSIC, vol-1, AudioManager.FLAG_SHOW_UI);
      } catch (Exception e) {
        // TODO: handle exception
      }
    }
      else if(view == rew_btn)
    {
      try {
        int curSeek = mp.getCurrentPosition();
        if(curSeek>10000)
        {
          mp.seekTo(curSeek-10000);
        }
        else
        {
          mp.seekTo(0);
        }
        Toast.makeText(this, "REW", 500).show();
      } catch (Exception e) {
        // TODO: handle exception
      }
    }
    else if(view == stop_btn)
    {
      try {
        mp.stop();
        mp.prepare();
        mp.seekTo(0);
        mp3t.stop();
        Toast.makeText(this, "STOP", 500).show();
        //mp3t = new Thread(this);
      } catch (Exception e) {
        // TODO: handle exception
      }
      
      Log.d(TAG,"MP3 FILE STOPED.");
    }
    else if(view == play_btn)
    {
      Toast.makeText(this, "PLAY", 500).show();
      try {
        mp.start();
        mp3t.start();
        
      } catch (Exception e) {
        // TODO: handle exception
      }
      
      Log.d(TAG,"MP3 FILE STARTED.");
    }
    else if(view == pause_btn)
    {
      try {
        mp.pause();
        mp3t.stop();
        Toast.makeText(this, "PAUSE", 500).show();
        //mp3t = new Thread(this);
      } catch (Exception e) {
        // TODO: handle exception
      }
      Log.d(TAG,"MP3 FILE PAUSED.");
    }
    else if(view == ff_btn)
    {
      try {
        int curSeek = mp.getCurrentPosition();
        int allSeek = mp.getDuration();
        if(curSeek+10000 < allSeek)
        {
          mp.seekTo(curSeek+10000);
        }
        else
        {
          mp.seekTo(allSeek);
        }
        Toast.makeText(this, "FF", 500).show();
      } catch (Exception e) {
        // TODO: handle exception
      }
      
    }
  }
  
  private String changeToMinutes(int mseconds)
  {
    int min = 0;
    int sec = 0;
    String minStr = "";
    String secStr = "";
    
    min = (int) Math.floor(mseconds/(1000*60));
    sec = (int) Math.floor((mseconds-(1000*60)*min)/1000);
    
    minStr = min < 10 ? "0"+min:""+min;
    secStr = sec < 10 ? "0"+sec:""+sec;
    
    return minStr+":"+secStr;
  }
  private int makePercent(int child,int parent)
  {
    int per = (int) Math.floor((child*100)/parent);
    return per;
  }
  
  private final Handler h = new Handler();
  private boolean done = false;
  
  private final Runnable mp3Run = new Runnable() {
    public void run() {
      int currentDuration = mp.getCurrentPosition();
      //time.setText(makePercent(currentDuration, myDuration));
      //time.setText(currentDuration+"_"+myDuration+"_"+makePercent(currentDuration,myDuration));
      time.setText(changeToMinutes(myDuration-currentDuration));
      pb.setProgress(makePercent(currentDuration, myDuration));
      //Toast.makeText(PlayingMp3.this, makePercent(currentDuration, myDuration)+"", 1000);
    }
  };
  
  @Override
  public void run() {
    // TODO Auto-generated method stub
    while(!done)
    {
      try {
        Thread.sleep(200);
      } catch (Exception e) {
        // TODO: handle exception
      }
      h.post(mp3Run);
    }
  }



  private void sleep(int i) {
    // TODO Auto-generated method stub
    
  }



  @Override
  public void onCompletion(MediaPlayer mp) {
    // TODO Auto-generated method stub
    try {
      mp.stop();
      mp.prepare();
      mp.seekTo(0);
      mp3t.stop();
      Toast.makeText(this, "STOP", 500).show();
    } catch (Exception e) {
      // TODO: handle exception
    }
    
  }

  
}
ÃßõÃßõ : 233 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
1,166
Android WebView Facebook Login (popup/redirection issues)
1,165
Loading GIF [Android]listView ¿ø°ÝÀ̹ÌÁö [Android]
1,164
¾Û ¹öÀü üũ ½ºÅä¾î·Î À̵¿ [Android]
1,163
WebViewClient [Android]
1,162
http post get Àü¼Û
1,161
À¥ºä ¸Þ¼Òµå È£ÃâÀÌ ¾ÈµÉ ¶§ (android.permission.INTERACT_ACROSS_USERS_FULL)
1,160
°³¹ß Áß ¿¡·¯ ¹ß»ý½Ã ¿¡·¯ ³»¿ë È®ÀÎ, ÇØ°á¹æ¹ý [Android]
1,159
ij½Ã Áö¿ì±â [Android]
1,158
¹Ù·ÎÇ®¾î(¼öÇÐ ¹®Á¦ ÁúÀÇÀÀ´ä SNS) ¿¡ »ç¿ëµÈ ¿ÀǼҽº ¶óÀ̺귯¸® [Android]
1,157
¿ÀǼҽº ¶óÀ̺귯¸® ¸ðÀ½ [Android]
1,156
´Ü¸»±â ¹öÀü Á¤º¸ [Android]
1,155
Android webview °³¹ß½Ã ¾Ë¾ÆµÖ¾ß ÇÒ °Íµé [Android]
1,154
[¾Èµå·ÎÀ̵å] ¾Û ³»¿¡¼­ ·±Å¸ÀÓ ±ÇÇÑÀ» ¿äûÇÏ´Â ¹æ¹ý
1,153
webview µ¿¿µ»ó Àç»ý [Android]
1,152
android studio DefaultHttpClient, HttpClient import ¿¡·¯
1,151
[Android] ANR À̶õ?
1,150
¾Èµå·ÎÀÌµå ¿ÀǼҽº
1,149
Android] AlarmManager ÀÏÁ¤½Ã°£ À̺¥Æ® ½ÇÇà
1,148
[Android] Webview url ¼û±â±â
1,147
[Android] webview ssl ¹®Á¦
1,146
[Android] Webview 404 ¿¡·¯ ó¸®
1,145
[Android] Webview ¸Þ¼Òµå
1,144
[¾Èµå·ÎÀ̵å] À¥ºä(WebView ¿¡¼­ ÀÚ¹Ù½ºÅ©¸³Æ® alert ¶ç¿ì±â
1,143
(Android) WebView _blank ó¸®
1,142
webvew ¿¡¼­ ºê¶ó¿ìÀú·Î ¸µÅ©(_blank)
1,141
[Android]¾Èµå·ÎÀ̵å Intent »ç¿ë¹ý
1,140
¾Èµå·ÎÀÌµå ¹Ìµð¾î Ç÷¹À̾î (MediaPlayer) ¿¹Á¦
1,139
[Android] BroadcastReceiver »ç¿ëÇϱâ
1,138
Media Player¸¦ ÀÌ¿ëÇÑ À½¾Ç Àç»ý
1,137
[°³¹ß Tip] Activity³» ¹è°æÀ» Åõ¸íÇÏ°Ô Çϱâ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.