废话不多说,先上接口

AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate, NULL, NULL, systemAudioCallback, NULL);

AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);

这两个接口的用途是绑定和取消指定soundID对应的回调方法;kSystemSoundID_Vibrate为soundID类型,其回调方法认准的也是这个soundID,在任何地方使用这个id去执行AudioServicesPlaySystemSound(xxxSoundID)都会调用到该回调方法。而一旦调用remove方法取消回调,同样的在任何地方使用这个id去执行AudioServicesPlaySystemSound(xxxSoundID)都不会调用到这个回调。说的这么绕,其实就是说这俩接口的影响是全局的,威力很大。

我们只要在回调方法里面再调用AudioServicesPlaySystemSound接口,就可以实现连续震动了;当我们想要停止震动时,调用remove接口,ok,回调方法就歇火了。

优化:

经过测试发现震动之间太连续,体验不符合要求;所以我们在c回调里面通过单例(全局变量性质的指针)调用到oc的方法进行[self performSelector:@selector(triggerShake) withObject:nil afterDelay:1](triggerShake是震动接口);在停止震动时候我们需要调用

[NSObject cancelPreviousPerformRequestsWithTarget:self
                                             selector:@selector(triggerShake)
                                               object:nil];  停止之前可能的回调;这两个方法的成对使用既好用又简便,对于需要定时调用的场景很适合,也免去维护定时器的麻烦。

使用AudioServices相关接口(底层c接口)的连续震动实现(ios)相关推荐

  1. ETERM放大软件 机票实时查询接口 底层开发接口

    (1).凯讯科技PID放大共享软件率先 支持新版信天游 单独的扣位接口.实惠.实用.更稳定.    {底层开发通讯协议包及webservices访问.支持 黑屏所有功能 更便于开发.更稳定} (2). ...

  2. SIM800/SIM900/SIM7000/SIM7600底层操作接口_句柄方式完全分离通信底层

    使用SIMCOM公司通信模块已经好几年了,周末抽空把底层重新写了,将底层的通信与应用完全进行了分离,便于移植. SIMCOM.h //定义了相关的结构体与类型. SIMCOM_AT.c//定义了底层的 ...

  3. Golang之接口底层分析

    目录 GoLang之iface 和 eface 的区别是什么? GoLang之接口的动态类型和动态值 [引申1]接口类型和 `nil` 作比较 [引申2] [引申3]如何打印出接口的动态类型和值? G ...

  4. ArcGIS Engine开发之旅08--和查询相关的对象和接口

    ArcGIS Engine开发之旅08--和查询相关的对象和接口 原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性 ...

  5. 【全栈接口测试进阶系列教程】精通api接口测试,接口分类,接口架构,http,webservice,dubbo接口协议,接口流程,接口工具,cookie,session,token接口鉴权原理以及实战

    目录 一,[什么是接口测试?为什么要作接口测试] 1.接口的作用 2.为什么要做接口测试 3.接口都有哪些类型? 二,[接口测试的分类] 接口的分类: http和webservice接口区别: 三,[ ...

  6. SAP工具箱 自动生成发出接口程序(二 接口定义表)

    点击蓝字 关注我们 一 前言 前文介绍了发出接口程序的执行原理及怎么自动生成发出接口程序. 详见链接 无峰,公众号:ABAP 技巧与实战SAP工具箱 自动生成发出接口程序(一) 本文主要介绍生成发出接 ...

  7. 物联网中,北向接口和南向接口是什么?

    物联网技术蓬勃发展,很多工厂已经实现自动化和智能化,但有着更多的工业和企业不了解相关领域,承担着较高的设备成本.运维成本.管理成本,利润回收周期也是较长,往往都是做不久就亏钱跑路,我们需要向着那些智能 ...

  8. Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)

    1. 接口概念 接口是双方约定的一种合作协议.接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节.接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式.类型及结构. 接口内部存 ...

  9. 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )

    文章目录 一.Future 接口 1.Future 接口简介 2.取消任务方法 3.Future 接口源码注释 二.Callable 接口 三.Runnable 接口 上一篇博客 [Android 异 ...

最新文章

  1. 基于OSS存储搭建Hadoop集群
  2. 什么是婚礼一条龙服务及一站式服务
  3. linux文件目录类常用命令
  4. C++ 下使用curl 获取ftp文件
  5. Prolog基本程序
  6. Delphi RTC
  7. html5 动态 menuitem,利用HTML 5中的Menu和Menuitem元素快速创建菜单
  8. Node.js webpack Vue单文件
  9. 企业生产环境数据库备份锁表问题
  10. Mac 安装php redis扩展
  11. HTTP接口测试工具Postman
  12. 关于python中的round()和javascript中的round()的比较
  13. 【资讯】国内 42 所一流大学综合排名出炉!清北之后谁是国内第三?
  14. 雷达信号处理——雷达系统
  15. error PRJ0003 : 生成“C:\WINDOWS\system32\cmd.exe”时出错
  16. 免费的顶级域名要在哪申请?
  17. Windows 使用命令行查看 wifi 密码
  18. VC学习路线书籍+视频
  19. 深度操作系统20.6发布
  20. 凤凰新闻自动评论推荐软件--把自己的评论推荐到最前面,然后通过头像、用户名或者评论内容进行展示

热门文章

  1. 嵌入式系统的发展前景和趋势怎么样
  2. pip手把手安装pytorch,保姆级教学
  3. MySQL如何安装到电脑上
  4. linux下卸载mysql
  5. oracle数据库导入导出(windows之间)
  6. r语言 断轴 画图_R语言作图——坐标轴截断画图
  7. mysql读写分离的完整配置
  8. 需要把哥德尔不完备定理讲到什么程度才能被大众所熟知?
  9. 第一周【项目2 - 胖子伤不起】
  10. MiiX·阿希全球区块链黑客马拉松大赛 获奖选手专访