我讀了許多關於如何檢測震動的職位,但我不知道:如何在用戶晃動iPhone時播放音頻文件?
目前什麼是檢測抖動的最佳方式?
- 和 -
當用戶晃動iPhone如何播放音頻文件ONLY?
任何人都有一個建議,例子/教程或示例代碼?
感謝
我讀了許多關於如何檢測震動的職位,但我不知道:如何在用戶晃動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];
}
}
}
適合實現暫停,暫停,播放,播放選擇器。
這已在here之前得到解答。我使用的是該代碼的修改版本,並且效果很好。請注意,在即將發佈的OS版本中,您將能夠通過標準API檢測抖動手勢。
你可以在控制器(或其他任何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