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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值