在我的应用程序中,我正在使用以下编码模式来振动我的iPhone设备
包括:AudioToolbox框架
头文件:
#import "AudioToolbox/AudioServices.h"
Run Code Online (Sandbox Code Playgroud)
码:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我运行我的应用程序时,它会振动,但只有第二次,但我希望它会持续振动直到我停止它.
怎么可能呢?
Jas*_*ins 22
值得庆幸的是,不可能改变振动的持续时间.触发振动的唯一方法就是kSystemSoundID_Vibrate按照你的方式进行.如果你真的想要,你可以做的是无限期地重复振动,产生脉冲振动效果而不是长连续振动效果.要执行此操作,您需要注册一个回调函数,当您播放的振动声音完成时将调用该函数:
AudioServicesAddSystemSoundCompletion (
kSystemSoundID_Vibrate,
NULL,
NULL,
MyAudioServicesSystemSoundCompletionProc,
NULL
);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
Run Code Online (Sandbox Code Playgroud)
然后定义您的回调函数以再次重放振动声音:
#pragma mark AudioService callback function prototypes
void MyAudioServicesSystemSoundCompletionProc (
SystemSoundID ssID,
void *clientData
);
#pragma mark AudioService callback function implementation
// Callback that gets called after we finish buzzing, so we
// can buzz a second time.
void MyAudioServicesSystemSoundCompletionProc (
SystemSoundID ssID,
void *clientData
) {
if (iShouldKeepBuzzing) { // Your logic here...
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
} else {
//Unregister, so we don't get called again...
AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);
}
}
Run Code Online (Sandbox Code Playgroud)
有许多示例展示了如何使用私有 CoreTelephony call: 来执行此操作_CTServerConnectionSetVibratorState,但这实际上不是一个明智的做法,因为您的应用程序将因滥用此类振动功能而被拒绝。只是不要这样做。
| 归档时间: |
|
| 查看次数: |
107140 次 |
| 最近记录: |