新手开发者咨询:Corona能否调用麦克风?求推荐适用开发环境
嘿,作为编程新手想开发调用麦克风的APP,完全能理解你选开发环境的纠结!我来帮你梳理清楚:
首先纠正一下:Corona SDK其实是支持音频相关功能的,你之前听到的信息可能有偏差。不过它的音频API更偏向于录制、播放完整音频文件,如果只是要实时获取声音强度(比如分贝值),需要先录制小段音频再做分析,步骤相对繁琐,不是那种直接实时采样的方式,这可能是大家误解它“不支持”的原因。如果不是特别执着于Corona,其实有更适合你需求的工具。
因为你只需要获取声音强度,不需要完整语音识别,下面几个工具都是新手友好、Windows 8完全兼容的:
1. Unity
Unity是跨平台游戏/APP开发工具,新手门槛低,可视化界面很友好,而且有成熟的音频API可以直接实时获取麦克风数据。只需要几行C#代码就能计算出声音强度,教程也遍地都是。
举个极简的示例代码(挂在Unity的GameObject上就行):
using UnityEngine; public class MicVolumeDetector : MonoBehaviour { private AudioSource _audioSource; private float[] _sampleBuffer = new float[1024]; void Start() { _audioSource = GetComponent<AudioSource>(); // 启动麦克风录制 _audioSource.clip = Microphone.Start(null, true, 1, 44100); _audioSource.loop = true; // 等待麦克风准备就绪 while (!(Microphone.GetPosition(null) > 0)) { } _audioSource.Play(); } void Update() { // 获取实时音频数据 _audioSource.GetOutputData(_sampleBuffer, 0); // 计算平均音量(声音强度) float totalVolume = 0; foreach (float sample in _sampleBuffer) { totalVolume += Mathf.Abs(sample); } float currentVolume = totalVolume / _sampleBuffer.Length; // 这里的currentVolume就是你要的声音强度,可以用来做后续逻辑 } }
2. Processing
这是专门给创意开发者和新手设计的工具,完全不需要复杂的项目配置,下载安装就能写代码。它的Minim音频库可以轻松获取麦克风的实时数据,几行代码就能看到声音强度的变化(比如用图形展示)。
示例代码:
import ddf.minim.*; import ddf.minim.analysis.*; Minim minim; AudioInput micInput; FFT fftAnalyzer; void setup() { size(400, 400); minim = new Minim(this); // 获取麦克风输入 micInput = minim.getLineIn(Minim.MONO, 1024); fftAnalyzer = new FFT(micInput.bufferSize(), micInput.sampleRate()); } void draw() { background(255); // 分析音频数据 fftAnalyzer.forward(micInput.mix); // 获取平均声音强度 float soundIntensity = fftAnalyzer.getAvgBandWidth(); // 用一个圆的大小直观展示强度 ellipse(width/2, height/2, soundIntensity * 200, soundIntensity * 200); } // 程序停止时记得释放资源 void stop() { micInput.close(); minim.stop(); super.stop(); }
3. Xamarin.Forms(搭配Visual Studio)
如果你想开发原生风格的移动端APP(安卓/iOS),而且熟悉一点C#,可以用Xamarin.Forms。Windows 8上安装Visual Studio就能开发,它可以调用原生系统的麦克风API来实时采样音频数据,计算声音强度。不过相对前两个,它的配置步骤会多一点,但胜在能做出更接近原生体验的APP。
如果追求最快上手、快速验证想法,Processing或者Unity是最好的选择,两者在Windows 8上都能完美运行,教程资源也足够新手学习。
内容的提问来源于stack exchange,提问作者Marta G.

