天天看點

Android音樂播放器(MediaPlayer)

Android音樂播放器 MediaPlayer+SeerBar

  先上效果圖:

Android音樂播放器(MediaPlayer)

MediaPlayer簡介:
  
  
   		mediaPlayer音樂的三種播放方式:
  
  
   			第一種:
  
  
   				mediaPlyer播放記憶體音樂
  
  
   			
          
mediaPlayer = MediaPlayer.create(this, R.raw.ll);
           
第二種: mediaPlyer播放記憶體卡音樂
mediaPlayer.setDataSource(this, Uri.parse("file://storage/sdcard/Music/aabbcc.mp3"));
           
記憶體卡播放音樂必須權重限            
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    				
           
第三種: mediaPlyer播放網絡音樂,播放網絡音樂時要注意手機必須聯網或同伺服器在同一個 區域網路下面。
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.89:8080/dd/dd.mp3"));
           
mediaPlyer播放網絡音樂權限            
<uses-permission android:name="android.permission.INTERNET" />
           
mediaPlyer:

      start():開始或者恢複播放

      stop():停止播放

       pause():暫停播放

getDuration();擷取音樂總時間      
getCurrentPosition();擷取音樂目前播放的位置      
seekTo(sb);設定在某個位置播放      
isPlaying();判斷音樂目前是否在播放      
下面是seekbar+ImageButton實作的一個播放、停止、快進、後退      
public class MainActivity extends AppCompatActivity {

    private MediaPlayer mediaPlayer;
    private SeekBar sb_main_seekBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sb_main_seekBar = (SeekBar) findViewById(R.id.sb_main_seekBar);
        //進度條滑動事件
        sb_main_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //擷取seekBar的目前滑動位置
                int sb=sb_main_seekBar.getProgress();
                //快進音樂
                mediaPlayer.seekTo(sb);
            }
        });
    }


    public void isplayandpause(View view){
        final ImageView imageView= (ImageView) view;
        //記憶體播放音樂
//        if (mediaPlayer==null) {
//            mediaPlayer = MediaPlayer.create(this, R.raw.ll);
//            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
//                @Override
//                public void onPrepared(MediaPlayer mediaPlayer) {
//                    mediaPlayer.start();
//                    imageView.setImageResource(android.R.drawable.ic_media_pause);
//                    //進度條最大值
//                    sb_main_seekBar.setMax(mediaPlayer.getDuration());
//                    new myThread().start();
//                }
//            });
//
//        }else if (mediaPlayer.isPlaying()) {
//            //暫停音樂
//            mediaPlayer.pause();
//            imageView.setImageResource(android.R.drawable.ic_media_play);
//        }else{
//            //播放音樂
//            mediaPlayer.start();
//            imageView.setImageResource(android.R.drawable.ic_media_pause);
//        }


//        //SD卡播放音樂
//        if (mediaPlayer==null) {
//            mediaPlayer=new MediaPlayer();
//            try {
//                //設定音樂SD卡路徑
//                mediaPlayer.setDataSource(this, Uri.parse("file://storage/sdcard/Music/aabbcc.mp3"));
//                //準備
//                mediaPlayer.prepare();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
//                @Override
//                public void onPrepared(MediaPlayer mediaPlayer) {
//                    mediaPlayer.start();
//                    imageView.setImageResource(android.R.drawable.ic_media_pause);
//                    //進度條最大值
//                    sb_main_seekBar.setMax(mediaPlayer.getDuration());
//                    new myThread().start();
//                }
//            });
//
//        }else if (mediaPlayer.isPlaying()) {
//            //暫停音樂
//            mediaPlayer.pause();
//            imageView.setImageResource(android.R.drawable.ic_media_play);
//        }else{
//            //播放音樂
//            mediaPlayer.start();
//            imageView.setImageResource(android.R.drawable.ic_media_pause);
//        }

        //網絡播放音樂
        if (mediaPlayer==null) {
            mediaPlayer=new MediaPlayer();
            try {
                //網絡位址
                mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.89:8080/dd/dd.mp3"));
                //準備
                mediaPlayer.prepareAsync();
            } catch (IOException e) {
                e.printStackTrace();
            }
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    mediaPlayer.start();
                    imageView.setImageResource(android.R.drawable.ic_media_pause);
                    //進度條最大值
                    sb_main_seekBar.setMax(mediaPlayer.getDuration());
                    new myThread().start();
                }
            });

        }else if (mediaPlayer.isPlaying()) {
            //暫停音樂
            mediaPlayer.pause();
            imageView.setImageResource(android.R.drawable.ic_media_play);
        }else{
            //播放音樂
            mediaPlayer.start();
            imageView.setImageResource(android.R.drawable.ic_media_pause);
        }

    }

    //seekbar
    class myThread extends Thread{
        @Override
        public void run() {
            super.run();
            while(sb_main_seekBar.getProgress()<=sb_main_seekBar.getMax()){
                //擷取音樂目前播放的位置
                int position=mediaPlayer.getCurrentPosition();
                sb_main_seekBar.setProgress(position);

            }
        }
    };
}