播放手机音乐MediaPlayer简单使用

播放手机音乐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第一行代码

你可能感兴趣的:(android)