gpt4 book ai didi

android - 从 SD 卡加载多个音频文件

转载 作者:行者123 更新时间:2023-11-30 04:51:43 25 4
gpt4 key购买 nike

我需要有关如何从 SD 卡上的特定文件夹加载多个音频文件并让它播放随机文件的文档/示例代码的帮助/指针(我想我可以找出最后一步,如果我可以的话弄清楚如何加载多个文件)。到目前为止,这是我写得非常糟糕的应用程序,在我学习的过程中不要过于苛刻。

public class zazenbox extends Activity implements OnClickListener{

File filecheck;
MediaPlayer player;
Button playerButton;
Integer var1;
String path1;
AlertDialog.Builder alertbox;

public void onClick(View v) {
if (v.getId() == R.id.play) {
playPause();
}
}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

demoLoad();

playerButton = (Button) this.findViewById(R.id.play);
playerButton.setText(R.string.stop);
playerButton.setOnClickListener(this);

demoPlay();
}

@Override
public void onPause() {
super.onPause();
player.pause();
}

@Override
public void onStop() {
super.onStop();
player.stop();
}

private void demoLoad() {

dirfilecheck();

player = new MediaPlayer();
player.setLooping(true);
try {
player.setDataSource(path1);
player.prepare();
}
catch (IOException e) { e.printStackTrace(); }
catch (IllegalArgumentException e) { e.printStackTrace(); }
catch (IllegalStateException e) { e.printStackTrace(); }
}

private void dirfilecheck() {
filecheck = new File(Environment.getExternalStorageDirectory() + "/zazenbox");

if(filecheck.exists() && filecheck.isDirectory()) {
// load files.
var1 = 1;
path1 = filecheck + "/bm10" + var1 + ".wav";
} else {
// create folder, dl sample loop, and instruct user how to add music/loops.
filecheck.mkdirs();
alertbox = new AlertDialog.Builder(this);
alertbox.setMessage("Please put loopable media in zazenbox on your sdcard.");
alertbox.setNeutralButton("Ok, I will.", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getApplicationContext(), "Please plug in your device now", Toast.LENGTH_LONG).show();
}
});

alertbox.show();
}
}

private void demoPause() {
player.pause();
playerButton.setText(R.string.play);
}

private void demoStop() {
player.stop();
playerButton.setText(R.string.play);
}


private void demoPlay() {
player.start();
playerButton.setText(R.string.stop);
}

private void playPause() {
if(player.isPlaying()) {
demoStop();
//demoPause();
//player.release();
var1++;
path1 = filecheck + "/bm10" + var1 + ".wav";
/*try {
player.setDataSource(path1);
player.prepare();
}
catch (IOException e) { e.printStackTrace(); }
catch (IllegalArgumentException e) { e.printStackTrace(); }
catch (IllegalStateException e) { e.printStackTrace(); }*/
//player.start();
//demoPlay();
} else {
//do stuff
demoPlay();
}
}

最佳答案

内存在移动设备上极为有限,因此您不会想要加载您不打算播放的歌曲。因此,您应该做的是找到该文件夹​​中的所有音频文件,然后选择一个,然后加载并播放它。

您只需要停止当前播放器并创建一个新实例即可。

MediaPlayer player = MediaPlayer.create(this, Uri.parse("Path/To/Media"));
player.start();
// change track
player.stop();
player = MediaPlayer.create(this, Uri.parse("New/Path/To/Media"));
player.start();

关于android - 从 SD 卡加载多个音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3088248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com