- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试检测设备所在表面的敲击模式。
例如,如果用户在表面上敲了一次,则运行方法A。如果用户敲了两下,则运行方法B。
除了 onSensorChanged
方法中的逻辑之外,我拥有实现此目的所需的一切。这是我现在的代码:
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
//Check time interval, not sure if this is correct though.
long actualTime = System.currentTimeMillis();
if ((actualTime - lastUpdate) > 100) {
long diffTime = (actualTime - lastUpdate);
lastUpdate = actualTime;
//This is where the magic should happen
}
}
我想主要问题是,如何检测振动?网上几乎所有其他示例都是关于如何检测抖动和移动的。
最佳答案
真正的答案——你需要学习 DSP 才能获得好的结果。这是一个非常重要的问题。
快速概览 - 当振动发生时,您会看到正弦衰减波形(主振动后的衰减信号称为“振铃”,这对我们来说是一件坏事 - 这意味着我们需要将振铃分开来自实际结果)。可以检测到这一点,并根据寻找向下矢量振幅的快速变化(无论哪个现在有重力)发出振动信号。波峰的相对高度应该是爆震的相对强度。
因此检测一次敲门声相当容易。不容易的事情:
*区分敲门声和穿过房间的脚步声——两者都会引起震动。他们看起来一样。您可以通过频率分析和过滤器将其过滤掉
*在短时间内说出两次敲门与一次敲门。第二次敲门声往往较弱,很难与第一次敲门声区分开来。也可能对第一波有相消干涉。
*准确说明爆震发生的时间。会有一个可能不是恒定的时间延迟,并且试图弄清楚它意味着试图找到一个确切的峰值。很难处理噪音。
*在嘈杂的环境中说出敲门声(振动噪音,不是声音)。同样,您需要过滤。
我确实在某种程度上做到了这一点。我认为主要是失败了。我们能够很好地检测到爆震,但根本无法滤除噪音。当然,我们正在寻找极小的(1 个手指)敲击声,如果您正在寻找尖锐的敲击声,那么问题会更少,因为尖峰与噪音水平相比会更大。如果您期待一次尖锐的敲击,那么寻找大尖峰并在 N 毫秒后忽略次级尖峰的基础知识可能对您来说就足够了。如果不是,您将在这上面花费大量时间。
关于android - 使用 Android 加速度计检测振动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516390/
在我的应用中,一些 View 对 onLongClick 使用react。在其他情况下,我想实现相同的功能,但我想知道 View 的哪一部分被长按——所以我用 onTouchEvent 模拟它。长按的
我正在尝试使用声音管理器应用程序为“铃声、通知、媒体、系统”创建不同的声音配置文件。 根据设置音量级别,我通过使用 成功了 AudioManager setStreamVolume(AudioMana
有没有办法以编程方式禁用 iPhone 的振动? 我能找到的只是如何启用振动。基本上我想通过 UISwitch 切换振动模式。 如果有办法的话,有人可以帮我吗? 最佳答案 据我所知你不能这样做。因为苹
好像无法播放提示音 AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 当 AudioQueue 用于录制音频时。那是对的吗?也许我做错了什么。除
我正在尝试振动/摇动一个 UI 元素,即一个控件,就好像它被敲击一样,并且正在共振。我可以使用核心动画将其垂直、水平或同时摇动一个像素: CABasicAnimation* rotationXAnim
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Making the iPhone vibrate 如何以编程方式使 iPhone 振动? 任何想法或教程链接表示赞
以下代码无法运行... function onPageLoad(){ navigator.vibrate([500]);} 在移动设备上测试它,当我附加到按钮时它可以工作但不能加载??? 最佳
我正在我的应用程序中构建一个锻炼计时器。工作流程是: 用户点击“启动计时器”按钮 计时器倒计时 90 秒秒 计时器在 90 秒后结束并触发 PlayAlertSound振动 这仅在应用程序打开时有效,
您好,我已经创建了一个任务提醒应用程序。例如,您选择某个时间提醒某项任务,当该时间到来时,状态栏上会出现通知。 但是我想实现一个振动功能,可能还有一个带有通知的 LED 灯功能,但我不知道从哪里开始?
我正在开发一个应用程序,该应用程序会在计时器耗尽时发送本地通知。我已经把那部分全部设置好了。三十秒标记有通知,然后从十秒到一秒。当十比一的情况发生时,所有通知都会混在一起,变得有点困惑。现在我只剩下十
我正在使用 firebase 向我的应用程序(iOS 和 Android)发送通知。我不喜欢使用 data 字段来发送我的通知,因为对于 iOS,当用户强制退出应用程序时,不会调用 didReceiv
直到今天,我一直在模拟器中测试我的应用程序。我第一次在真实的 iPhone 上测试了一个项目。令我感到不快的是,每次我按下按钮时手机都会振动。这没什么大不了的,只是我的特定应用程序有一个内置键盘,每次
我有 slider 和一些输出框来显示这些 slider 的值。当用户移动 slider 并且值发生变化时,页面的其余部分会移动/抖动以适应新的(非常轻微的)值大小的增加。防止这种情况的最佳方法是什么
非常基本的问题,几个小时以来我一直试图自己弄清楚,但无法解决。 所以我正在为 Pebble 创建我的第一个表盘,我希望 watch 每小时发出嗡嗡声(振动)。您还记得一些数字 watch 会在点钟时间
我在收到通知时听不到声音、振动或灯光。有人可以告诉我我缺少什么吗? 还有一些问题: 1.) 我只在应用程序打开时得到指定的图标。当应用程序关闭时,我会看到 android Logo 图标(我想那是因为
我正在使用此代码购买音频线的编译错误。有谁知道为什么吗? - (void)handleTimer:(NSTimer *)timer { self.counter--; self.tim
我一直在尝试使用这段代码让 iPhone 振动: AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 但是没有用,会不会是我在调用这个的同时播放
我查看了 http://caniuse.com/但找不到任何关于振动 API 兼容性的信息。 哪些浏览器支持它? 最佳答案 更新 [2014-03-07]:Firefox、Chrome 和 Opera
iPhone如何设置振动一次? 例如,当玩家失去生命或游戏结束时,iPhone 应该振动。 最佳答案 来自“iPhone Tutorial: Better way to check capabilit
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 这行代码在 iPad 上似乎不起作用 - iPad 是否具有振动所需的硬件? 最佳答案 它没
我是一名优秀的程序员,十分优秀!