音乐播放器

package visizen.com.mediaplayer;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity {

    private Button playBtn;

    private EditText music_et;

    private MediaPlayer mediaPlayer;

    private Button pauseBtn;

    private TelephonyManager tm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        playBtn = (Button) findViewById(R.id.playBtn);

        pauseBtn = (Button) findViewById(R.id.pauseBtn);

        music_et = (EditText) findViewById(R.id.music_et);

        //电话打进来,音乐播放器应该暂停
        tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
    }

    private class MyPhoneStateListener extends PhoneStateListener {

        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:
                    pause();
                    break;
                case TelephonyManager.CALL_STATE_RINGING:
                    pause();
                    break;
            }
        }
    }

    /**
     * 处理点击事件
     */
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.playBtn:
                play();
                break;
            case R.id.pauseBtn:
                pause();
                break;
            case R.id.stopBtn:
                stop();
                break;
            case R.id.replayBtn:
                replay();
                break;
        }
    }

    /**
     * 播放
     */
    private void play() {
        System.out.println("play");
        String musicPath = this.music_et.getText().toString();
        File file = new File(musicPath);
        if (file.exists() && file.length() > 0) {
            mediaPlayer = new MediaPlayer();
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            try {
                mediaPlayer.setDataSource(musicPath);
                //mediaPlayer.prepare();同步
               // mediaPlayer.start();
                mediaPlayer.prepareAsync();//异步
                mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {
                        mediaPlayer.start();
                    }
                });
                playBtn.setEnabled(false);

                //播放完成后回调
                mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        playBtn.setEnabled(true);
                        Toast.makeText(MainActivity.this, "音乐播放完成!", Toast.LENGTH_SHORT).show();
                    }
                });

                mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                    @Override
                    public boolean onError(MediaPlayer mp, int what, int extra) {
                        playBtn.setEnabled(false);
                        Toast.makeText(MainActivity.this, "音乐文件错误!", Toast.LENGTH_SHORT).show();
                        return false;
                    }
                });

            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(this, "音乐播放失败!", Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(this, "音乐文件不存在!", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 暂停
     */
    private void pause() {
        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
            mediaPlayer.pause();
            pauseBtn.setText("继续");
            return;
        }

        if (mediaPlayer != null) {
            if (pauseBtn.getText().toString().equals("继续")) {
                mediaPlayer.start();
                pauseBtn.setText("暂停");
                return;
            }

        }
    }

    /**
     * 停止
     */
    private void stop() {
        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null;
            playBtn.setEnabled(true);
        }

    }

    /**
     * 重播
     */
    private void replay() {
        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
            mediaPlayer.seekTo(0);
        } else {
            play();
        }

    }
}

 

posted on 2015-12-28 13:44  jayhtt  阅读(93)  评论(0)    收藏  举报