gpt4 book ai didi

android - 通过变量名称播放原始音频剪辑

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

我有一个问题困扰了我一段时间。是否可以使用变量名访问原始目录中的文件?让我解释一下。

我的 raw/目录中有超过 100 个声音 fragment ,分别命名为 sound1、sound2、sound3 等等。在我的应用程序中,我有一个 ListView ,它从字符串数组中提取每一行。我想做的是,当你点击某一行时,应用程序会播放相应音频文件的声音。

例如,如果我点击列表中的第 16 个项目,它会播放 sound17(补偿从 0 开始的列表)。据我所知,我只能使用“R.raw.filename”访问原始文件,我猜这是某种内存指针?因为如果我尝试做这样的事情:

public void onItemClick(AdapterView<?> parent, View arg1, int position,long arg3) {
long clipid = parent.getItemIdAtPosition(position);
MediaPlayer clip = MediaPlayer.create(SoundList.this, "R.raw.sound" + clipid);
clip.start();
}

显然它不知道“R.raw.sound”+clipid 是什么。有什么办法可以做到这一点吗?

编辑 经过更多搜索后才弄清楚。这是我使用的:

public void onItemClick(AdapterView<?> parent, View arg1, int position,long arg3) {
long clipid = parent.getItemIdAtPosition(position);
int resId = getResources().getIdentifier("sound"+clipid, "raw", "com.example.mypackage");
MediaPlayer clip = MediaPlayer.create(SoundList.this, resId);
clip.start();
}

最佳答案

试试这个:

MediaPlayer clip = MediaPlayer.create(SoundList.this, getResources().getIdentifier(clipid, "raw","{android package id}"));

您需要指定在 AndroidManifest.xml 文件中使用的包,但这应该可以满足您的要求。

关于android - 通过变量名称播放原始音频剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7465033/

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