И так, по порядку.
1) Есть приложение которое записывает звук через микрофон, сохраняет его и затем воспроизводит по нажатию кнопки.
2) Проблема:
- В редакторе "Unity 4.3.2" все работает как часы.
- В эмуляторе андроид "BlueStack" запись воспроизводится, но сохранятся в хранилище не желает.
- На планшете даже запись не воспроизводится.
3) В AndroidManifest.xml внесены следующие разрешения:
- <uses-permission android:name="android.permission.RECORD_AUDIO"/> // разрешает записывать аудио
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> // разрешает запись в хранилище
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> // разрешает чтение из хранилища
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.IO;
public class testSceneScript : MonoBehaviour
{
float SW = Screen.width;
float SH = Screen.height;
AudioClip micro;
AudioClip playAudioClip;
void OnGUI()
{
if (GUI.Button(new Rect(SW * 0.1f, SH * 0.1f, SW * 0.2f, SH * 0.1f), "play"))
{
deleteFirstAudioClip(); // уничтожает объект, воспроизводящий какой-либо аудиоклип в данный момент, если он есть конечно. Вряд ли причина в нем.
AudioSource.PlayClipAtPoint(playAudioClip, transform.position);
}
if (GUI.Button(new Rect(SW * 0.4f, SH * 0.1f, SW * 0.2f, SH * 0.1f), "stop"))
{
Microphone.End(nameMicrophone);
deleteFirstAudioClip();
}
if (GUI.Button(new Rect(SW * 0.1f, SH * 0.3f, SW * 0.2f, SH * 0.1f), "REC"))
{
micro = Microphone.Start(null, true, 10, 44100);
playAudioClip = micro;
}
if (GUI.Button(new Rect(SW * 0.4f, SH * 0.3f, SW * 0.2f, SH * 0.1f), "save"))
{
// сохраняет аудиоклип как файл "test.wav", по адресу : (Application.dataPath + "/Resources/recAudio")
SavWav.Save("test", micro);
}
if (GUI.Button(new Rect(SW * 0.7f, SH * 0.3f, SW * 0.2f, SH * 0.1f), "load"))
{
playAudioClip = Resources.Load("recAudio/test", typeof(AudioClip)) as AudioClip;
}
}
}
using System.Collections;
using System.IO;
public class testSceneScript : MonoBehaviour
{
float SW = Screen.width;
float SH = Screen.height;
AudioClip micro;
AudioClip playAudioClip;
void OnGUI()
{
if (GUI.Button(new Rect(SW * 0.1f, SH * 0.1f, SW * 0.2f, SH * 0.1f), "play"))
{
deleteFirstAudioClip(); // уничтожает объект, воспроизводящий какой-либо аудиоклип в данный момент, если он есть конечно. Вряд ли причина в нем.
AudioSource.PlayClipAtPoint(playAudioClip, transform.position);
}
if (GUI.Button(new Rect(SW * 0.4f, SH * 0.1f, SW * 0.2f, SH * 0.1f), "stop"))
{
Microphone.End(nameMicrophone);
deleteFirstAudioClip();
}
if (GUI.Button(new Rect(SW * 0.1f, SH * 0.3f, SW * 0.2f, SH * 0.1f), "REC"))
{
micro = Microphone.Start(null, true, 10, 44100);
playAudioClip = micro;
}
if (GUI.Button(new Rect(SW * 0.4f, SH * 0.3f, SW * 0.2f, SH * 0.1f), "save"))
{
// сохраняет аудиоклип как файл "test.wav", по адресу : (Application.dataPath + "/Resources/recAudio")
SavWav.Save("test", micro);
}
if (GUI.Button(new Rect(SW * 0.7f, SH * 0.3f, SW * 0.2f, SH * 0.1f), "load"))
{
playAudioClip = Resources.Load("recAudio/test", typeof(AudioClip)) as AudioClip;
}
}
}