由于目前做的项目是发布在 Android 平台的,所以遇到了还蛮多的关于 Android 方面的问题的。

最近遇到一个问题,就是需要在程序中读取并播放外部(本地存储)的 wav 音频。

此问题已解决,现将解决方法整理分享如下。

解决方法:

1. 用 WWW 来加载本地的 wav 文件, 然后将 wav 文件加载为 AudioClip。private AudioSource aud;

public IEnumerator LoadAudio(string recordPath)

{

// www 加载音频

WWW www = new WWW(recordPath);

yield return www;

var clipTemp = www.GetAudioClip();

aud.clip = clipTemp;

//yield return new WaitForSeconds(5);

//aud.loop = true;

//播放音频

aud.Play();

}

启动协程,filePath 为 wav 音频文件的存储路径。

Android 的路径中 file:///sdcard/ 表示内部存储空间的根目录,如果想要读取外部 SD 卡存储空间的根目录,请参考《用 Unity3D / C# 如何获取 Android 外置 SD 卡的路径》。private void Start()

{

#if UNITY_ANDROID && !UNITY_EDITOR

// Android 测试路径

string filePath = "file:///sdcard/msc/test_13.wav";

Debug.LogError(filePath);

#endif

#if UNITY_EDITOR

// Unity Editor 测试路径

string filePath = "D:/AudioTest/test_2.wav";

#endif

StartCoroutine(LoadAudio(filePath));

}

2. 在 Android 平台如果要读取本地的文件,需要为应用开启相应的权限。

打开 Plugins / Android 文件夹下的  AndroidManifest.xml 文件,添加两行代码,申请读写存储权限。

打包安装应用之后,确保应用的“存储空间”权限是开启的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐