Android play external music files

Project directory:
Insert picture description here
manifests increase dynamic permissions

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

MainActivity

package com.example.demo_thirteen;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    MediaPlayer mp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
        }else{
            fun();
            Toast.makeText(this, "Start play music...", Toast.LENGTH_SHORT).show();
        }
    }

    public void fun() {
        String basePath = Environment.getExternalStorageDirectory().getPath();
        String filePath = basePath + "/music/cc.mp3";
        Log.i("zlm", filePath);
        mp = new MediaPlayer();
        try {
            mp.setDataSource(filePath);
            mp.prepare();
            mp.start();
        } catch (IOException e) {
            Log.i("zlm", "file path errror or no permission of READ_EXTERNAL_STORAGE");
            e.printStackTrace();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    fun();
                } else {
                    Toast.makeText(this, "没有读SD卡权限", Toast.LENGTH_LONG).show();
                    finish();
                }
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "music stop", Toast.LENGTH_SHORT).show();
        mp.stop();
        mp=null;
    }
}

Upload cc.mp3 to the sdcard/Music directory
Insert picture description here
Insert picture description here

Guess you like

Origin blog.csdn.net/weixin_43873198/article/details/108844761