统一
当我点击“记录”按钮时:
- Microphone.Start(“内置麦克风”,真实,10,44100);
当我点击“暂停”按钮时:
- SavWav.Save(Application.persistentDataPath +“/ Resources / storyrecord”,audio.clip);
文件以路径保存: /storage/emulated/0/Android/data/com.owos.woftbattle/files/Resources/storyrecord
com.owos.woftbattle 是我的包裹。 storyrecord 是我的文件名。
那么,我可以用代码打开它吗? 这是我的代码: Resources.Load(“file:/// Resources / storyrecord”);
它不起作用。
有人能帮助我吗?
答案 0 :(得分:1)
首先要了解的是,您无法编写或保存到构建(Android)中的Resources
文件夹。只能从编辑器创建Resources
文件夹。无论你放在Resources
文件夹中,它都是唯一存在的东西。您无法删除或添加更多文件到Resources文件夹。一旦您构建应用程序,它就是只读的。
其次,将文件保存为Application.persistentDataPath + "/Resources/storyrecord"
将无效。即使保存文件,该保存的文件也不在Resources
文件夹中。因为它不是,Resources.Load
无法读取它。 Resources.Load
函数只能读取编辑器在Resources文件夹中添加到它的文件。
了解以上所有内容以供将来参考并避免类似错误非常重要。如果要在运行时保存文件,请始终将数据保存在:Application.persistentDataPath/YourFolderName
,然后使用WWW
类或System.IO
命名空间中的一个文件API加载它。您使用的library将其保存为“。wav”扩展程序,因此您必须使用WWW
API加载它。
保存音频的路径(音频路径):
string tempPath = Path.Combine(Application.persistentDataPath, "Audio");
tempPath = Path.Combine(tempPath, "storyrecord.wav");
保存音频:
SavWav.Save (tempPath ,aud.clip);
将音频加载为AudioClip:
IEnumerator loadAudio(string path)
{
//Load Audio
WWW audioLoader = new WWW(path);
yield return audioLoader;
//Convert it to AudioClip
AudioClip aClip = audioLoader.GetAudioClip(false, false, AudioType.WAV);
}
加载它需要协同程序功能,因此您必须使用StartCoroutine函数:StartCoroutine(loadAudio(tempPath));
注意强>:
在某些Android设备上,您必须先添加"file://"
,然后才能使用WWW
类加载音频。
如果是这种情况,只需将path = "file://" + path;
添加到上面loadAudio
函数的第一行代码中即可修复路径。