我正在尝试在应用程序中播放声音效果。 我到处看的地方都被告知要在res目录中添加一个原始文件夹(在eclipse中工作)。

首先,我将原始文件夹添加到res下。 然后,我将.wav文件放入其中。 当我尝试在代码中使用R.raw.filename时,出现错误"无法解决原始"。 所以我清理并重建项目。 突然,我使用R.id或R.anything的任何地方都被强调为错误。 当我查找错误时,事实证明它与Android.R有关。 我没有办法解决它。 因此,我删除了原始文件夹并重建了项目。 突然,一切都很好。

我已经重复了大约4次此过程,但我不知道为什么添加原始文件夹这么麻烦。 谁能告诉我我在做什么错?

您的.wav文件中是否有任何名称中包含无效字符?检查以下消息是否可能在您的内部版本中显示:

Unparsed aapt error(s)! Check the console for output.

Invalid file name: must contain only [a-z0-9_.]

对于名称加扩展名,仅小写字符,数字,下划线和句点有效。

大写字母。 哇。 我不了解小写字母。 为什么还要有这样的规则? 无论如何,谢谢。

使用assets文件夹并...

InputStream sound = getAssets().open("filename.mp3");

...或raw文件夹并...

InputStream sound = getResources().openRawResource(R.raw.filename);

只要确保名为filename的文件存在于名为raw的目录中即可。

如果对R.*的所有用法都带有下划线,请删除类顶部的导入android.R,如Maxim所述。

好吧,我正在尝试将其作为ID。 我还没有真正播放声音。

我不确定这是否可以作为解决方案,但是当我使用.ogg文件而不是.wav文件时,一切运行正常。

不,这不对。 就像@Joe所说的,文件名中是否有连字符"-"? 此答案应帮助具有相同问题的其他人解决。 仅选择使用.ogg文件不是解决方案。

否。我的文件名只有字母。

显然,您的活动添加了import android.R,之后,所有带有R的??引用都转到了对原始文件一无所知的android框架(android.jar)。只需检查导入,如果您看到android.R,请将其删除并添加com.my_app_namespace.R,之后即可使用

没有工作。 如果我的原始文件夹中有音乐文件,即使我自己的R也无法解析。

@ Gregory-Turtle ApiDemos,示例了如何使用可通过SDK下载的android sdk。 com.example.android.apis.media AudioFxDemo.java(mMediaPlayer = MediaPlayer.create(this,R.raw.test_cbr);)可以正常工作,查看并进行比较,因为您做错了什么。 原始文件夹中的test_cbr.mp3文件

创建单独的应用,然后尝试仅加载原始音乐。 如果可行,那么混乱就发生在其他地方。