【发布时间】:2013-04-04 06:22:22
【问题描述】:
我正在开发应用程序,我想测量车轮的转数。我买了一个便宜的自行车里程表,它使用磁铁开关计算自行车车轮的转数,当磁铁离传感器足够近时,每转一圈就会闭合一次电路。我的想法是将此磁铁开关添加到iphone耳机的麦克风电路,然后使用音频框架来管理麦克风的连接,制作一个开关,可以识别麦克风何时连接或未连接,然后用它做一个计数器。我可以进行切换的方法是使用带有[AVCaptureDevice] 类的AVFoundation 框架,因为我发现这是在[this-post] 回答问题之后区分外部和内部麦克风的唯一方法。
我从我的代码中粘贴了一段摘录来测试开关。计时器循环中的代码。
NSString *name;
static int micSwitch=0;
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio];
for (AVCaptureDevice *device in devices) {
name = [ device localizedName];
}
if ([name isEqual:@"iPhone Microphone"]) {
micSwitch=0;
}
else{
micSwitch=1;
}
但是,此开关的更新速度比我需要的要慢。据我估计,开关需要在不到 1.5 毫秒 内更新。有人有更好的想法,我该如何使用音频插孔输入?
【问题讨论】:
-
我的数学会很粗糙。在距车轮中心 12' 处的开关以 20Hz 旋转时,其速度约为 3800 sm/s。如果开关在 5sm 半径范围内运行,您有大约 2ms 的窗口来检测它,这意味着您需要能够在每个 N s where
N < 1ms处检查一次设备,而不是 50ms。 -
是的,我明白你的意思。考虑到转弯的时间,我很快就做出了这个计算。但是考虑磁铁通过传感器的速度是关键。我正确测量了车轮尺寸和传感器距车轮中心的距离,我得到了一个 1.5 毫秒的窗口。谢谢。
标签: ios audio input microphone jack