Android 安卓加载&;基于字符串播放声音

Android 安卓加载&;基于字符串播放声音,android,string,audio,media-player,Android,String,Audio,Media Player,我目前正在开发一个简单的Android应用程序,现在我正在尝试让它加载并播放声音。我面临的问题是,我希望它使用的声音基于字符串(与声音文件同名)。这样做的原因是代码和添加内容都很简单 现在不幸的是,我不能仅仅用一个字符串来代替对实际声音的引用,但是有没有什么方法可以让我将一个字符串与整个原始文件夹进行比较,以找到匹配的声音,或者除了手动定义每个声音之外的其他方法 谢谢您的时间。您为什么需要这样做?如果文件已经在原始文件中,并且您希望简单地将strong作为文件名,那么执行此操作所需的任何编码量都

我目前正在开发一个简单的Android应用程序,现在我正在尝试让它加载并播放声音。我面临的问题是,我希望它使用的声音基于字符串(与声音文件同名)。这样做的原因是代码和添加内容都很简单

现在不幸的是,我不能仅仅用一个字符串来代替对实际声音的引用,但是有没有什么方法可以让我将一个字符串与整个原始文件夹进行比较,以找到匹配的声音,或者除了手动定义每个声音之外的其他方法


谢谢您的时间。

您为什么需要这样做?如果文件已经在原始文件中,并且您希望简单地将strong作为文件名,那么执行此操作所需的任何编码量都可能比简单地引用文件所需的时间更长,因为引用仅为:

R.raw.file\u名称

而不是:

文件名


这不需要太多的输入,特别是如果它是一个简单的应用程序。

说明了如何使用
getresources().getidentifier()
尝试使用反射包检查文件是否存在

片段

    try {
        Class res = R.raw.class;
        Field field = res.getField(<yourmediafile>);
        //If the code reach here, that means media file exists.
    } catch (Exception e) {
        //No media file with that name
    }
试试看{
等级res=R.raw.Class;
Field=res.getField();
//如果代码到达此处,则表示媒体文件存在。
}捕获(例外e){
//没有具有该名称的媒体文件
}

在电话上,所以无法找到它,但请看context.getresources()方法,我相信有一个方法可以满足您的需要。创建类似“R.raw.filename”的字符串并返回它。该应用程序的本质类似于音板。我之所以想用我提到的方式来做这件事,是因为会涉及到很多声音,而不是需要输入很多行来加载它们,我只想根据应用程序另一部分已经存在的字符串加载相关的声音。如果这是你想要做的,那么查看声音池:这是管理多个不同声音文件的好方法。但在某个时刻,您仍然必须在某个时刻指向该文件。据我所知,没有一种方法可以引用整个原始文件夹,然后简单地使用文件名作为引用,但指向实际文件并不意味着需要更多的键入。这看起来正是我所需要的。谢谢你的链接,Emile,也谢谢大家的宝贵时间。请确保缓存getIdentifier结果,因为我认为它需要大量的性能。