Android播播放完SD卡指定文件夹音乐之后,自动播放下一首

最近做一个项目,需要连续播放音乐,播放完一首歌之后,自动播放完下一首歌。不要重复播放。

代码如下:

package com.example.asyncplayer_ex;

import java.io.IOException;
import java.util.ArrayList;

import javax.security.auth.PrivateCredentialPermission;

import android.app.Activity;
import android.drm.DrmStore.Playback;
import android.media.AsyncPlayer;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {
    private static final String TAG = "MP3";
    private AsyncPlayer asyncPlayer = new AsyncPlayer(null); 
    private String path;
    private MediaPlayer mediaPlayer;
    private int songIndex = 0;
    private ArrayList<String> songArrayList; //播放声音列表
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setOnCompletionListener(new CompletionListener());
        path = Environment.getExternalStorageDirectory().toString() + "/mp3/Voice/";
        songArrayList = new ArrayList<String>();
        songArrayList.add(path + "1.MP3");
        songArrayList.add(path + "2.MP3");
        songArrayList.add(path + "3.MP3");
        songArrayList.add(path + "4.MP3");
        songArrayList.add(path + "5.MP3");
        songArrayList.add(path + "6.MP3");
        songplay();        
    }
    
    private final class CompletionListener implements OnCompletionListener{

        @Override
        public void onCompletion(MediaPlayer mp) {
            nextsong();            
        }        
        
    }
    private void nextsong() {
        
        if (songIndex < songArrayList.size() - 1) {    
            songIndex = songIndex + 1;
            songplay();            
        }
        else {
            songArrayList.clear();
            songIndex = 0;

        }
        
        
    }
    private void songplay() {
        try {
            mediaPlayer.reset();
            mediaPlayer.setDataSource(songArrayList.get(songIndex));
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

    @Override
    protected void onDestroy() {
        mediaPlayer.release();
        mediaPlayer = null;
        super.onDestroy();
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Android Studio 代码示例,可用于播放 SD 上的音乐文件 a.mp3: 1. 在 AndroidManifest.xml 文件中添加以下权限: ``` <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 2. 在布局文件 activity_main.xml 中添加一个按钮: ``` <Button android:id="@+id/button_play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Play" /> ``` 3. 在 MainActivity.java 文件中实现播放音乐的逻辑: ```java import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; import java.io.File; public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private Button buttonPlay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonPlay = findViewById(R.id.button_play); buttonPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { playMusic(); } }); } private void playMusic() { if (mediaPlayer == null) { File musicFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/a.mp3"); Uri musicUri = Uri.fromFile(musicFile); mediaPlayer = MediaPlayer.create(this, musicUri); } if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); buttonPlay.setText("Play"); } else { mediaPlayer.start(); buttonPlay.setText("Pause"); } } @Override protected void onStop() { super.onStop(); if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } } ``` 在这个示例中,我们首先在 onCreate 方法中获取了按钮,并将其设置为点击监听器。当用户点击按钮时,我们调用 playMusic 方法来播放音乐。 在 playMusic 方法中,我们首先判断 mediaPlayer 是否为空。如果是空的,我们就创建一个 Uri 对象来指向 SD 上的 a.mp3 文件,并使用 MediaPlayer.create 方法来创建 MediaPlayer 对象。 然后,我们再判断 mediaPlayer 是否正在播放。如果正在播放,我们就暂停播放,并将按钮的文本设置为 “Play”。如果没有在播放,我们就开始播放,并将按钮的文本设置为 “Pause”。 最后,在 onStop 方法中,我们释放 MediaPlayer 对象的资源,以确保它不会在用户离开应用程序后继续播放音乐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值