gpt4 book ai didi

android - 使用 Android mediaPlayer 播放原始文件夹中的文件,使用其 resourceId

转载 作者:行者123 更新时间:2023-11-29 20:57:08 25 4
gpt4 key购买 nike

在 Android 中,我可以使用 MediaPlayer.create(context, R.raw.myFileName)使用 raw/ 文件夹中的资源创建 mediaPlayer 的实例,然后我可以使用 .start()让该文件播放。稍后,我可以使用 .setDataSource() 的各种签名更改我要播放的文件。

我可以获取 raw/ 文件夹中给定文件的 resourceId,使用:

int resourceId = activity.getResources().getIdentifier("myFileName", "raw", activity.getPackageName());

是否可以使用此整数 resourceId 开始播放该文件而不是当前文件?或者我是否必须确定文件 res/raw/myFileName.mid 的完整路径才能更改轨道?

我希望解决方案是这样的,使用真正的方法而不是我发明的 equivalentToSetDataSourceUsingAResourceId() 方法名称。

Resources resources = activity.getResources();
String packageName = activity.getPackageName();

int white = resources.getIdentifier("white", "raw", packageName);
int black = resources.getIdentifier("black", "raw", packageName);
MediaPlayer mediaPlayer = MediaPlayer.create(activity, white);

mediaPlayer.start();
// ... and some time later...

mediaPlayer.reset();
mediaPlayer.equivalentToSetDataSourceUsingAResourceId(black);
mediaPlayer.prepare();
mediaPlayer.start();

另一种方法是销毁当前的 mediaPlayer 实例,并在每次需要更改声音文件时创建一个新实例:

if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}

mediaPlayer = MediaPlayer.create(activity, black);
mediaPlayer.start();

这对我来说并不优雅。

最佳答案

根据 MediaPlayer documentation setDataSource API 仅允许在 MediaPlayer 的新实例(空闲状态)上使用。这意味着如果您只想一次使用一个实例,则必须从头开始release() 并重新创建 MediaPlayer。

尝试这样做。只需传递原始资源的 ID:

mMediaPlayer = MediaPlayer.create(this, R.raw.whatever);

关于android - 使用 Android mediaPlayer 播放原始文件夹中的文件,使用其 resourceId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298867/

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