1、必须了解的东西

  1. mediaplayer是安卓自带的播放器类,使用非常简单
  2. MediaPlayer是Android系统自带的,可以用来播放音频、视频和流媒体。MediaPlayer包含了Audio和Video的播放功能
  3. 如何获得MediaPlayer实例:

    1. 可以使用直接new的方式:
      MediaPlayer mp = new MediaPlayer();
    2. 也可以使用create的方式,如:
      MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了
  4. 如何设置要播放的文件:

    1. MediaPlayer要播放的文件主要包括3个来源:
      a. 用户在应用中事先自带的resource资源
    2. 例如:MediaPlayer.create(this, R.raw.test);
      b. 存储在SD卡或其他文件路径下的媒体文件
    3. 例如:mp.setDataSource("/sdcard/test.mp3");
      c. 网络上的媒体文件
    4. 例如:mp.setDataSource;
  5. 需要调用安卓的Manifest请求才可使用

2、常用方法

    //播放方法
    public void play(MediaPlayer mediaplayer) {
        mediaplayer.start();

    }

    //暂停
    public void pause(MediaPlayer mediaplayer) {
        mediaplayer.pause();
    }

    //判断是否正在播放中
    public boolean isplay(MediaPlayer mediaplayer) {
        return mediaplayer.isPlaying();
    }

    //获取播放时长
    public long getduring(MediaPlayer mediaplayer) {
        // TODO Auto-generated method stub
        return mediaplayer.getDuration();
    }

    //获取当前的播放进度
    public long getcurrentduring(MediaPlayer mediaplayer) {
        // TODO Auto-generated method stub
        return mediaplayer.getCurrentPosition();
    }

    //获取位置
    public int position(int current) {
        // TODO Auto-generated method stub
        return current;
    }

    //更上进度,设置进度..
    public void curento(int position, MediaPlayer mediaplayer) {
        mediaplayer.seekTo(position);
    }

    /**
     * 关闭播放器
     */
    public void closeMedia(MediaPlayer mediaplayer) {
        if (mediaplayer != null) {
            if (mediaplayer.isPlaying()) {
                mediaplayer.stop();
            }
            mediaplayer.release();
        }

    }

写在中间:

​ :label: 本次介绍的方法比较简单,直接播放存储空间内的音频文件

​ 如需播放网页上的音乐,请自行添加INTERNET的Permission

​ 并且写入初始化MediaPlayer内

3、简单分步演示

  1. 在Manifest内写入请求
  2. 创建文件,本实例在sdcard/music中引用音乐播放器
  3. 创建字符串存储路径

    private String musicPath="/sdcard/music/jinglei.mp3";
  4. 初始化File方法

    File musicfile = new File(musicPath);
  5. 将音频文件路径传入MediaPlayer方法中,初始化音频播放器用于播放

    MediaPlayer musicplay = MediaPlayer.create(this, Uri.parse(musicfile.getAbsolutePath()));
  6. 播放方法

    musicplay.start();
  7. 设置循环播放

    musicplay.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    musicplay.start();
                    musicplay.setLooping(true);
                }
            });

写在中间的后面:

遇到应用闪退的话记得查看请求是否写正确!

4、具体实例

AndroidManifest.xml

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

MAinActivity.java

package com.example.a4_4_mediaplayer;

import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;

public class MainActivity extends AppCompatActivity {
    private String musicPath = "/sdcard/music/jinglei.mp3";
    private MediaPlayer musicplay;
    private File musicfile;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MediaInit();
        MediaRound();
    }
    private void MediaInit() {
        musicfile = new File(musicPath);
        if (musicfile.exists()) {
            musicplay = MediaPlayer.create(this, Uri.parse(musicfile.getAbsolutePath()));
            musicplay.start();
        } else {
            Toast.makeText(this, "the file no exist!", Toast.LENGTH_SHORT).show();
        }
    }

    private void MediaRound() {
        musicplay.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                musicplay.start();
                musicplay.setLooping(true);
            }
        });
    }
    
}

写在最后:

一行废话,如果想了解更多也可查看此链接,

https://blog.csdn.net/liujucai/article/details/92362383

​ 了解更多方法请自行搜索。

​ 引用请注明出处