播放手机音乐MediaPlayer简单使用
在Android中播放音频文件一般使用MediaPlayer类来实现
方法名 | 功能描述 |
---|---|
serDataSource() | 设置要播放的音频文件的位置 |
prepare() | 在开始播放之前调用这个方法完成准备工作 |
start() | 开始或继续播放音频 |
pause() | 暂停播放音频 |
reset() | 将MediaPlayer对象重置到刚刚创建的状态 |
seekTo() | 从指定的位置开始播放音频 |
stop() | 停止播放音频,调用这个方法后的MediaPlayer对象无法在播放音频 |
release() | 释放掉与MediaPlayer对象相关的资源 |
isPlaying() | 判断当前MediaPlayer是否正在播放音频 |
getDuration() | 获取载入的音频文件时长 |
/**
* 手机音乐
*/
public class MediaPlayerActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG="MediaPlayerActivity";
private Button btn_start, btn_Stop, btn_suspend;
private MediaPlayer mediaPlayer = new MediaPlayer();//创建MediaPlayer实例
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.media_player);
btn_start = findViewById(R.id.btn_start);
btn_Stop = findViewById(R.id.btn_Stop);
btn_suspend = findViewById(R.id.btn_suspend);
btn_start.setOnClickListener(this);
btn_Stop.setOnClickListener(this);
btn_suspend.setOnClickListener(this);
if (ContextCompat.checkSelfPermission(MediaPlayerActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
//动态获取权限
ActivityCompat.requestPermissions(MediaPlayerActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
} else {
initMediaPlayer();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
initMediaPlayer();
} else {
Toast.makeText(this, "拒接权限将无法使用程序", Toast.LENGTH_SHORT).show();
finish();
}
break;
default:
break;
}
}
/**
* 获取音频指定文件路径
*/
private void initMediaPlayer() {
File file = new File(Environment.getExternalStorageDirectory()+"/Music", "郭静_心墙.mp3");//获取指定的播放音乐路径
try {
Log.i(TAG,file.getPath());
mediaPlayer.setDataSource(file.getPath());//获取指定路径
mediaPlayer.prepare();//让MediaPlayer进入准备状态
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start:
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();//开始
}
break;
case R.id.btn_Stop:
if (mediaPlayer.isPlaying()) {
mediaPlayer.reset();//停止
initMediaPlayer();//当停止的时候让mediaPlayer先获取指定路径和让mediaPlayer进入准备状态
}
break;
case R.id.btn_suspend:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();//暂停
}
break;
}
}
}
备注:需要在AndroidManifest.xml中添加这样一段代码用于获取播放权限来访问你的manifest file文件。
<!--获取访问你的manifest file文件的权限-->
<uses-permission android:name="android.permission.INTERNET" />
注:参考郭霖老师android第一行代码