`

iOS持续振动 想停就停

    博客分类:
  • ios
 
阅读更多

最近要做一个项目,需要持续响铃并振动,知道有私有api可以使用,但无奈要上线,为了保险起见,果断放弃,在网上找了一个方法可以实现如下:

需要导入头文件:

#import <AudioToolbox/AudioToolbox.h>  

在播放振动的代码前面注册写下面一句代码:

 1 AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate, NULL, NULL, soundCompleteCallback, NULL);  

其中soundCompleteCallback为播放系统振动或者声音后的回调,可以在里面继续播放振动实现持续振动的功能如下:

1
2
3
4
void soundCompleteCallback(SystemSoundID sound,voidvoid * clientData) { 
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);  //震动 
    AudioServicesPlaySystemSound(sound); 

 但是问题来了,如何停止,其实之前我参考了别人做的,是直接调用如下代码停止:

1
2
3
AudioServicesRemoveSystemSoundCompletion(sound);
AudioServicesDisposeSystemSoundID(sound); AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);
AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate);

 直接拷贝工程可用:

复制代码
 1 @interface ViewController ()
 2 {
 3     SystemSoundID sound;
 4 }
 5 //振动计时器
 6 @property (nonatomic,strong)NSTimer *_vibrationTimer;
 7 @end
 8 
 9 @implementation ViewController
10 @synthesize _vibrationTimer;
11 
12 - (void)viewDidLoad {
13     [super viewDidLoad];
14     // Do any additional setup after loading the view, typically from a nib.
15 
16 }
17 //开始响铃及振动
18 -(IBAction)startShakeSound:(id)sender{
19     
20     NSString *path = [[NSBundle mainBundle] pathForResource:@"2125" ofType:@"wav"];
21     AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);
22     AudioServicesAddSystemSoundCompletion(sound, NULL, NULL, soundCompleteCallback, NULL);
23     AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
24     AudioServicesPlaySystemSound(sound);
25     
26     
27     /**
28      初始化计时器  每一秒振动一次
29 
30      @param playkSystemSound 振动方法
31      @return
32      */
33     _vibrationTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(playkSystemSound) userInfo:nil repeats:YES];
34 }
35 //振动
36 - (void)playkSystemSound{
37     AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
38 }
39 //停止响铃及振动
40 -(IBAction)stopShakeSound:(id)sender{
41     
42     [_vibrationTimer invalidate];
43     AudioServicesRemoveSystemSoundCompletion(sound);
44     AudioServicesDisposeSystemSoundID(sound);
45     
46 }
47 //响铃回调方法
48 void soundCompleteCallback(SystemSoundID sound,void * clientData) {
49     AudioServicesPlaySystemSound(sound);
50 }

 

 

分享到:
评论

相关推荐

    IOS 系统的后台持续定位

    在iOS系统中,后台持续定位是一项关键功能,尤其对于那些依赖实时地理位置信息的应用,如导航、运动追踪等。为了理解这一功能,我们首先需要探讨iOS的App生命周期和苹果的能源效率策略。 iOS的设计理念强调用户体验...

    ios8后台持续定位

    以下将详细介绍iOS 8后台持续定位的工作原理、实现方法以及相关的开发者策略。 **一、iOS 8后台定位服务** 1. **工作原理**:iOS 8后台定位服务允许应用在后台运行时持续获取用户的位置信息,即使应用被最小化或者...

    Unity 振动插件3.4.1适配安卓ios

    除了基本的振动函数,高级功能可能包括自定义振动模式、振动强度控制、振动持续时间调整等。此外,考虑到性能优化,插件可能还内置了防止过度使用振动硬件的机制,以避免耗电和用户不适。 总结来说,"Unity 振动...

    IOS 车牌号录入 自定义键盘

    在iOS移动开发中,车牌号录入是一个常见的需求,特别是在交通管理、停车应用或者导航软件中。自定义键盘的使用能够提供更加便捷且符合用户习惯的输入体验。本篇将深入探讨如何在iOS中实现车牌号录入功能,并使用...

    微信(v6.2.0.19)ios6停更版

    微信(v6.2.0.19)ios6停更版

    iOS17内置20多款新铃声

    如果你决定保持当前系统版本不变,但又想尝试iOS 17的新铃声,可以通过以下步骤操作: 1. 下载并解压名为“iOS 17新增铃声”的压缩包,确保你已经获取了所有新铃声的音频文件。 2. 连接你的iOS设备到电脑,使用...

    iOS 15.4真机包呀

    iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS 15.4真机包iOS ...

    HBuilderX申请iOS证书在线打包iOS文档.docx

    iOS证书申请和HBuilderX在线打包流程 在iOS应用开发中,申请iOS证书是必不可少的一步骤,而HBuilderX提供了在线打包功能,简化了iOS应用的开发和发布流程。下面将详细介绍iOS证书的申请和HBuilderX在线打包流程。 ...

    网页模板——基于jQuery仿ios5 通知中心弹出振动插件效果.zip

    网页模板设计中,为了提供与iOS5设备类似的用户体验,开发者经常使用基于jQuery的插件来实现仿ios5通知中心的弹出振动效果。这个压缩包文件"网页模板——基于jQuery仿ios5 通知中心弹出振动插件效果.zip"包含了实现...

    iOS 16.0真机包噢

    iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16真机包iOS 16...

    ios device support 11.3

    描述中提到,“如果不想更新xcode9.3,运行项目在9.3的手机上面需要安装ios devicesupport 11.3”,这表明在使用特定版本的Xcode(这里是9.3)时,为了能够在运行iOS 11.3系统的设备上顺利运行和测试应用,需要添加...

    iOS 10 in Swift 3 非常好的ios书

    这本书的反复强调“非常好”,暗示了其内容的深度和质量,对于想要提升iOS开发技能的开发者来说,无疑是一份宝贵的资源。 首先,Swift 3的主要改进包括语法的优化、类型安全的增强以及对API的更新。书中会详细介绍...

    swift-TapticEngine在iOS设备上产生触觉反馈振动

    `CHHapticPattern`可以通过一系列的`CHHapticEvent`来构建,这些事件代表了振动的强度、持续时间和类型。例如,创建一个简单的轻触事件: ```swift let simpleTap = CHHapticEvent(type: .notification.weak, ...

    xcode支持iOS15.2和iOS15.4

    Xcode是Apple官方推出的集成开发环境(IDE),主要用于开发iOS、iPadOS、macOS、watchOS和tvOS等平台的应用程序。...开发者需要紧跟Apple的更新步伐,利用Xcode的工具和资源,持续优化他们的应用程序。

    wii专用ios53

    wii ios53 官方ios 专用 wii ios53 官方ioswii ios53 官方ios

    iOS 真机调试包 iOS 15.1、15.0、14.8、14.7

    在iOS应用开发过程中,真机调试是不可或缺的一个环节。它允许开发者在实际设备上测试应用程序,确保其在不同iOS版本和设备上的兼容性和性能。本文将深入探讨如何使用iOS真机调试包,特别是针对iOS 15.1、15.0、14.8...

    ios旧版抓包工具ios旧版抓包工具

    ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧...

    ios helper用于苹果ios系统的实用工具

    《iOS Helper:苹果iOS系统的全能助手》 在iOS设备的使用过程中,用户常常会遇到各种问题,例如系统更新、数据管理、应用安装等。而"iOS Helper"正是为解决这些问题而设计的一款强大实用工具,专为苹果iOS系统提供...

    最新IOS17.0真机调试包

    总之,“最新iOS 17.0真机调试包”对于iOS开发者来说是非常重要的资源,它使得开发者能在iOS新版本发布之前就开始适配和测试,确保应用的质量和用户体验。配合Xcode的强大功能,以及对Objective-C和Swift的支持,...

    iOS 单独控制声音和震动

    一旦你有了AVAudioPlayer对象,就可以调用其`play`方法来播放声音: ```objc [audioPlayer play]; ``` 如果想要停止播放,调用`stop`方法: ```objc [audioPlayer stop]; ``` 接下来,我们讨论如何在iOS设备上实现...

Global site tag (gtag.js) - Google Analytics