java中mediaplay怎么使用_Android学习笔记使用MediaPlay播放音频

什么是MediaPlayer

Android提供的用来控制音频/视频文件或流播放的类,它的使用步骤如下:

83d818d7bace4ec67c0e858339955ce6.png

代码示范

import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

final MediaPlayer mandiaPlayer = MediaPlayer.create(this,R.raw.yiluxianbei);

//创建一个MediaPiaPlayer对象,并且装载音频

Button btn_play = findViewById(R.id.btn_play);

Button btn_pause = findViewById(R.id.btn_pause);

Button btn_stop = findViewById(R.id.btn_stop);

btn_play.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

mandiaPlayer.start();//开始播放

}

});

btn_pause.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

mandiaPlayer.pause();//暂停播放

}

});

btn_stop.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

mandiaPlayer.stop();//停止播发

}

});

}

}

写一个播放页面

布局文件activity_main

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/background"

tools:context=".MainActivity">

android:id="@+id/btn_play"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_marginBottom="@dimen/margin_bottom"

android:layout_marginLeft="@dimen/margin"

android:background="@color/btn_Background"

android:src="@drawable/play"

/>

android:id="@+id/btn_stop"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true"

android:layout_marginBottom="@dimen/margin_bottom"

android:layout_marginRight="@dimen/margin"

android:background="@color/btn_Background"

android:src="@drawable/stop" />

``

开放权限

```xml

MainActivty.java

import androidx.annotation.RequiresApi;

import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Build;

import android.os.Bundle;

import android.view.View;

import android.view.WindowManager;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.Toast;

import java.io.File;

import java.util.Map;

public class MainActivity extends AppCompatActivity {

private MediaPlayer mediaPlayer;

private boolean isPause = false;//定义是否是暂停状态

private File file; //定义要播放的音频文件

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN

,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示

final ImageView btn_play = findViewById(R.id.btn_play);

final ImageView btn_stop = findViewById(R.id.btn_stop);

File file = new File("/sdcard/xiaoban.mp3");//获取要播放的音乐文件

if(file.exists()){

//如果音频文件存在就创建一个装载该文件的MediaPlayer对象,不存在将做出提示

//创建MediaPlayer对象,并解析要播放的音频文件

mediaPlayer = MediaPlayer.create(this,

Uri.parse(file.getAbsolutePath()));

}else{

//提示音频文件不存在

Toast.makeText(MainActivity.this,"要播放的音频文件不存在!",

Toast.LENGTH_SHORT).show();

return;

}

/**播放按钮的单击事件监听器**/

btn_play.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//调用play()方法,实现播放功能

play();

}

});

//为MediaPlayer添加完成事件监听器,实现当音频播放完毕后,重新开始播放音频

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

play(); //调用play()方法,实现播放功能

}

});

btn_play.setOnClickListener(new View.OnClickListener() {

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

@Override

public void onClick(View v) {

if(mediaPlayer.isPlaying() && !isPause){ //如果音频处于播放状态

mediaPlayer.pause();

isPause = true;

//更换播放图标

((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.play,null));

}else{

mediaPlayer.start();//继续播放

isPause = false;//设置为播放状态

// 更换为暂停图标

((ImageButton) v).setImageDrawable(getResources().getDrawable(R.drawable.pause, null));

}

}

});

btn_stop.setOnClickListener(new View.OnClickListener(){

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

@Override

public void onClick(View v) {

mediaPlayer.stop();

btn_play.setImageDrawable(getResources().getDrawable(R.drawable.play,null));

}

});

}

private void play(){

try {

mediaPlayer.reset(); //重置MediaPlayer对象

mediaPlayer.setDataSource(file.getAbsolutePath());

mediaPlayer.prepare();

mediaPlayer.start(); //开始播放

}catch (Exception e){

e.printStackTrace();

}

}

@Override

protected void onDestroy() { //当前Activity销毁时,停止正在播放的音频,并释放MediaPlayer所占用的资源

if(mediaPlayer.isPlaying()) { //如果音频出于播放状态

super.onDestroy(); //停止音频播放状态

}

mediaPlayer.release(); //释放资源

super.onDestroy();

}

}

最后如果有老板想做项目欢迎找我QQ:599490685

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值