1、必须了解的东西
- mediaplayer是安卓自带的播放器类,使用非常简单
- MediaPlayer是Android系统自带的,可以用来播放音频、视频和流媒体。MediaPlayer包含了Audio和Video的播放功能
如何获得MediaPlayer实例:
- 可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer(); - 也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了
- 可以使用直接new的方式:
如何设置要播放的文件:
- MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源 - 例如:MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件 - 例如:mp.setDataSource("/sdcard/test.mp3");
c. 网络上的媒体文件 - 例如:mp.setDataSource;
- MediaPlayer要播放的文件主要包括3个来源:
- 需要调用安卓的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、简单分步演示
- 在Manifest内写入请求
- 创建文件,本实例在sdcard/music中引用音乐播放器
创建字符串存储路径
private String musicPath="/sdcard/music/jinglei.mp3";
初始化File方法
File musicfile = new File(musicPath);
将音频文件路径传入MediaPlayer方法中,初始化音频播放器用于播放
MediaPlayer musicplay = MediaPlayer.create(this, Uri.parse(musicfile.getAbsolutePath()));
播放方法
musicplay.start();
设置循环播放
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
了解更多方法请自行搜索。
引用请注明出处
最后一次更新于2021-12-26
0 条评论