`

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设备到电脑,使用...

    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旧版抓包工具ios旧版抓包工具

    ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具ios旧版抓包工具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 ...

    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的更新。书中会详细介绍...

    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 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设备上实现...

    iOS自动化测试工具ios_monkey

    在设置好测试脚本后,只需在Xcode中运行测试,`ios_monkey`就会开始执行。测试过程中,它会记录每个事件以及相应的结果,包括成功、失败或错误。开发者可以通过日志文件分析测试结果,找出问题所在。 5. **优点与...

Global site tag (gtag.js) - Google Analytics