Unity3D通过Whatsapp发送AudioClip

炒沙作縻终不饱,缕冰文章费工巧。这篇文章主要讲述Unity3D通过Whatsapp发送AudioClip相关的知识,希望能为你提供帮助。
我正在开发一个应用程序功能,以便能够将我在我的应用程序中的声音传递给whatsapp。我已经取得了一些进展,但我仍然坚持获取AudioClip的字节数组。
SS
所以我需要从资源文件夹中获取audioclip并将其写入我给出的路径,然后将其发送到whatsapp。
这会出错
【Unity3D通过Whatsapp发送AudioClip】FormatException:长度无效。 System.Convert.FromBase64String(System.String s)(at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Convert.cs:146)

void sendProccess() { string s = Resources.Load< AudioClip> ("Bava").ToString(); byte[] dataToSave = System.Convert.FromBase64String(s); string destination = Path.Combine(Application.persistentDataPath, System.DateTime.Now.ToString("yyyy-MM-dd-HHmmss") + ".mp3"); File.WriteAllBytes(destination, dataToSave); if (!Application.isEditor) { //instantiate the class Intent androidjavaClass intentClass = new AndroidJavaClass("android.content.Intent"); AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent"); intentObject.Call< AndroidJavaObject> ("setAction", intentClass.GetStatic< string> ("ACTION_SEND")); //instantiate the class Uri AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"); AndroidJavaObject uriObject = uriClass.CallStatic< AndroidJavaObject> ("parse", "file://" + destination); //call putExtra with the uri object of the file intentObject.Call< AndroidJavaObject> ("putExtra", intentClass.GetStatic< string> ("EXTRA_STREAM"), uriObject); intentObject.Call< AndroidJavaObject> ("setType", "audio/mp3"); //instantiate the class UnityPlayer AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); //instantiate the object currentActivity AndroidJavaObject currentActivity = unity.GetStatic< AndroidJavaObject> ("currentActivity"); //call the activity with our Intent currentActivity.Call("startActivity", intentObject); } }

提前致谢。
答案在以下行 -
string s = Resources.Load< AudioClip> ("Bava").ToString();

ToString方法returns the name of the object。
您应该使用AudioClip.GetData方法从音频剪辑中获取原始数据 -
AudioClip clip = Resources.Load< AudioClip> ("Bava") float[] samples = new float[clip.samples * clip.channels]; clip.GetData(samples, 0);

然后,您可以使用BinaryWriter或BitConverter将samples数组转换为其字节表示形式以供进一步使用。
另一答案这项工作非常适合我
Application.OpenURL("whatsapp://send?phone=9999878653& text=[hello]");


    推荐阅读