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();
}
}
}