OGeek|极客世界-中国程序员成长平台

标题: ios - 是否可以在objc中的ios中播放小于0.25秒的振动 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 18:14
标题: ios - 是否可以在objc中的ios中播放小于0.25秒的振动

我需要在ios中播放振动小于0.25秒,振动的顺序是这样的

1 次振动 0.25 秒,然后 3 次振动 0.15 秒,此循环将持续有限的时间,例如 2 或 3 分钟。这里还需要准确性意味着每次振动都必须在准确的时间开始

现在当我播放振动时,它每秒播放一次

-(IBAction)onBtnVibrateClickedid)sender {
    [self.view endEditing:YES];

    [myTimer invalidate];
    if(_txt_VibrationPerMinute.text.length == 0){
        _txt_VibrationPerMinute.text = @"10";
    }
    myTimer = [NSTimer scheduledTimerWithTimeInterval:60/[_txt_VibrationPerMinute.text intValue]
                                     target:self
                                   selectorselector(targetMethod
                                   userInfo:nil
                                    repeats:YES];
}

- (IBAction)obBtnStopVibrationClickedid)sender {

    [myTimer invalidate];


}

-(void)targetMethodNSTimer *)timer {
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}



Best Answer-推荐答案


是的,你可以使用这样的东西

FOUNDATION_EXTERN void AudioServicesPlaySystemSoundWithVibration(UInt32 inSystemSoundID,id arg,NSDictionary* vibratePattern);

void vibrate(float durationInSeconds, float intensivity, long count)
{
    NSMutableDictionary* dict = [NSMutableDictionary dictionary];
    NSMutableArray* arr = [NSMutableArray array];
    for (long i = count; i--;)
    {
        [arr addObject:[NSNumber numberWithBool:YES]]; //vibrate
        [arr addObject:[NSNumber numberWithInt:durationInSeconds*1000]];

        [arr addObject:[NSNumber numberWithBool:NO]];  //stop
        [arr addObject:[NSNumber numberWithInt:durationInSeconds*1000]];
    }

    [dict setObject:arr forKey"VibePattern"];
    [dict setObject:[NSNumber numberWithFloat:intensivity] forKey"Intensity"];

    AudioServicesPlaySystemSoundWithVibration(4095,nil,dict);
}

关于ios - 是否可以在objc中的ios中播放小于0.25秒的振动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40930556/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4