我正在编写一个需要反复振动的iPhone应用程序,直到用户停止它为止,我正在使用这样一个线程调用的循环:
-(void)vibrateLoop {
while (1) {
sleep(0.5);
if (!vibrate) {
[NSThread exit];
return;
}
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
}
然而,当我从我的iPhone而不是Xcode运行应用程序时,振动拒绝发生。但是当在调试模式下在Xcode中运行它时,手机会像它应该的那样振动。发生了什么事?
答案 0 :(得分:0)
尝试将Play调用放入方法中,并使用设置为repeat的计时器调用该方法。 EG
-(void)vibrateLoop {
if (!vibrate) {
return;
}
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(vibrateLoop) userInfo:nil repeats:NO];
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
//somewhere else in code
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(vibrateLoop) userInfo:nil repeats:NO];
答案 1 :(得分:0)
如何使用图形服务框架库。它有一个方法
void GSEventVibrateForDuration(float secs);
您可以将secs设置为1并继续在循环中调用此方法,并在用户希望它停止时使用以下方法GSEventStopvibrator()
重要提示:图形服务框架库是一个私有库,因此如果您决定使用它,您将无法将应用程序提交到应用程序商店。