如何在用户晃动iPhone时播放音频文件?
问题描述:
我读了许多关于如何检测震动的职位,但我不知道:如何在用户晃动iPhone时播放音频文件?
-
目前什么是检测抖动的最佳方式?
- 和 -
当用户晃动iPhone如何播放音频文件ONLY?
任何人都有一个建议,例子/教程或示例代码?
感谢
答
使用UIAccelerometer并实现你们班UIAccelerometerDelegate协议。也许你可以做这样的事情:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acc {
float twoGs = 2.0;
if ((acc.x * acc.x) + (acc.y * acc.y) + (acc.z * acc.z) > twoGs * twoGs) {
if ([self paused]) {
[self play];
}
} else {
if ([self playing]) {
[self pause];
}
}
}
适合实现暂停,暂停,播放,播放选择器。
答
你可以在控制器(或其他任何UIResponder实际上...)中实现类似下面的内容。这些在3.0及更高版本中可用。如果你不想做高级的东西,你不必下到加速度计的水平,这取决于你想从抖动中获得多少细节。
- (void)viewDidAppear:(BOOL)animated {
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion==UIEventSubtypeMotionShake) {
if ([self paused]) {
[self play];
}
}
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion==UIEventSubtypeMotionShake) {
if ([self playing]) {
[self pause];
}
}
}
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion==UIEventSubtypeMotionShake) {
if ([self playing]) {
[self pause];
}
}
}
感谢您的回答。这是另一个可以接受的解决方案(希望我可以标记两个) – wgpubs 2010-04-07 21:47:50