package com.example.myapplication; 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.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Environment; import java.io.File; import java.util.ArrayList; public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener { //获取音频存放路径 String musicfilePate = Environment.getExternalStorageDirectory().getPath() + "/Music/"; //音频播放列表 ArrayList<String> musicPate = new ArrayList<>(); //音频播放类 public static MediaPlayer parser = new MediaPlayer(); //下标 int i = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); } else { //已经授权 File file = new File(musicfilePate); File[] files = file.listFiles(); for (File f : files){ String filePath = f.getAbsolutePath(); musicPate.add(filePath); System.out.println(musicPate); } playing(musicPate.get(i)); } } void playing(String path){ parser.reset(); try { //为播放器对象设置音频 parser.setOnCompletionListener(this); //设置音频流类型 parser.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置播放的音频文件路径 parser.setDataSource(path); //播放准备 parser.prepare(); //开始播放 parser.start(); } catch (Exception e) { e.printStackTrace(); } } @Override public void onCompletion(MediaPlayer mediaPlayer) { //歌曲切换播放 i++; if (i>musicPate.size()-1){ i=0; } playing(musicPate.get(i)); } }
时间: 2024-02-14 10:05:37 浏览: 164
vite vue3 import.meta.glob动态路由
这是一个简单的 Android 应用程序,它允许用户播放存储在设备上的音频文件。主要代码如下:
1. 获取音频存放路径:
```
String musicfilePath = Environment.getExternalStorageDirectory().getPath() + "/Music/";
```
2. 检查是否已授权读取外部存储:
```
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
} else {
//已经授权
}
```
3. 获取音频文件路径并添加到播放列表:
```
File file = new File(musicfilePath);
File[] files = file.listFiles();
for (File f : files) {
String filePath = f.getAbsolutePath();
musicPate.add(filePath);
}
```
4. 播放音频文件:
```
void playing(String path){
parser.reset();
try {
//为播放器对象设置音频
parser.setOnCompletionListener(this);
//设置音频流类型
parser.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置播放的音频文件路径
parser.setDataSource(path);
//播放准备
parser.prepare();
//开始播放
parser.start();
} catch (Exception e) {
e.printStackTrace();
}
}
```
5. 实现 OnCompletionListener 接口以便在歌曲播放完成后自动切换到下一首。
希望能对您有所帮助。
阅读全文