300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android mediaplayer播放sdcard音乐 Android 音乐播放MediaPlayer

android mediaplayer播放sdcard音乐 Android 音乐播放MediaPlayer

时间:2023-05-18 17:01:23

相关推荐

android mediaplayer播放sdcard音乐 Android 音乐播放MediaPlayer

Andorid多媒体播放中的音乐播放一般是使用MediaPlayer实现的,他对音频文件提供了非常全面的方法。

梳理一下MediaPlayer工作流程,创建出一个Media对象之后用setDataSource()来设置音频文件的路径,再调用Prepare()方法使它进入到工作状态,接下来调用start()即可.

demo如下:

1:在清淡文件中添加sd卡权限

2:布局文件

就写三个按钮,开始播放,暂停播放和重新播放即可

xmlns:app="/apk/res-auto"

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity">

android:id="@+id/play"

android:text="play"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

android:id="@+id/pause"

android:text="pause"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

android:id="@+id/replay"

android:text="replay"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

3:Activity

import androidx.annotation.NonNull;

import androidx.appcompat.app.AppCompatActivity;

import androidx.core.app.ActivityCompat;

import androidx.core.content.ContextCompat;

import android.Manifest;

import android.content.pm.PackageManager;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.os.Environment;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

import java.io.File;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

private Button play;

private Button pause;

private Button replay;

private MediaPlayer mediaPlayer = new MediaPlayer();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

play = findViewById(R.id.play);

pause = findViewById(R.id.pause);

replay = findViewById(R.id.replay);

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){

ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);

}else {

try { //权限申请

initMediaPlayer();

} catch (IOException e) {

e.printStackTrace();

}

}

play.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (!mediaPlayer.isPlaying()){

mediaPlayer.start();

}

}

});

pause.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (mediaPlayer.isPlaying()){

mediaPlayer.pause();

}

}

});

replay.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (mediaPlayer.isPlaying()){

mediaPlayer.reset();

try {

initMediaPlayer();

} catch (IOException e) {

e.printStackTrace();

}

}

}

});

}

@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){

try {

initMediaPlayer();

} catch (IOException e) {

e.printStackTrace();

}

}else {

Toast.makeText(MainActivity.this,"权限被拒绝",Toast.LENGTH_LONG).show();

}

break;

default:

}

}

@Override

protected void onDestroy() {

super.onDestroy();

if (mediaPlayer != null){

mediaPlayer.stop();

mediaPlayer.release();

}

}

private void initMediaPlayer() throws IOException {

File file = new File(Environment.getExternalStorageDirectory(),"成磊 - 你不知道的事.mp3"); //这个文件要放在sd卡的根目录下

mediaPlayer.setDataSource(file.getPath());

mediaPlayer.prepare();

}

}

音频文件要放在sd卡的根目录下或自定义文件路径

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。