主要调用AudioServicesPlaySystemSoundWithVibration这个private api,传入一个含有时间和强度的dictionary即可。
注意要引入AudioToolbox.framework。在iOS6,iOS7上测试通过。

private api有风险,注意不要在上架app中使用。

 1 NSMutableDictionary* dict = [NSMutableDictionary dictionary];
 2 NSMutableArray* arr = [NSMutableArray array ];
 3
 4 [arr addObject:[NSNumber numberWithBool:YES]]; //vibrate for 2000ms
 5 [arr addObject:[NSNumber numberWithInt:2000]];
 6
 7
 8 [dict setObject:arr forKey:@"VibePattern"];
 9 [dict setObject:[NSNumber numberWithFloat:0.3] forKey:@"Intensity"];
10
11 AudioServicesPlaySystemSoundWithVibration(4095,nil,_buff);

写了一个封装demo
.h

 1 //
 2 // YANGZShaking.h
 3 // shaking
 4 //
 5 // Created by mmm on 14-1-11.
 6 // Copyright (c) 2014年 yangz. All rights reserved.
 7 //
 8
 9 #import <Foundation/Foundation.h>
10
11 @interface YANGZVibePattern : NSObject
12 + (YANGZVibePattern *)PatternWithIntensity:(float)intensity time:(NSUInteger)time isVibe:(BOOL)isVibe;
13 @property (nonatomic) bool isV;
14 @property (nonatomic) float intensity;
15 @property (nonatomic) NSUInteger time;
16
17 @end
18
19 @interface YANGZShaking : NSObject
20
21
22 - (YANGZShaking *)initWithPattern:(NSArray *)patterns;
23 - (YANGZShaking *)initWithFile:(NSString *)file;
24 - (YANGZShaking *)initWithLoop:(NSUInteger)vibe pause:(NSUInteger)pause;
25 - (void)play;
26 - (void)stop;
27
28 @end

.m

  1 //
  2 //  YANGZShaking.m
  3 //  shaking
  4 //
  5 //  Created by mmm on 14-1-11.
  6 //  Copyright (c) 2014年 yangz. All rights reserved.
  7 //
  8
  9
 10 #import "YANGZShaking.h"
 11 #import <AudioToolbox/AudioToolbox.h>
 12
 13
 14 @implementation YANGZVibePattern
 15 + (YANGZVibePattern *)PatternWithIntensity:(float)intensity time:(NSUInteger)time isVibe:(BOOL)isVibe{
 16     YANGZVibePattern *pattern = [YANGZVibePattern new];
 17     pattern.isV = isVibe;
 18     pattern.intensity = intensity;
 19     pattern.time = time;
 20     return pattern;
 21 };
 22 @end
 23
 24
 25 @interface YANGZShaking(){
 26     NSArray *_patterns;
 27     NSMutableDictionary *_buff;
 28     bool _isRepeat;
 29 }
 30 @end
 31
 32
 33 @implementation YANGZShaking
 34
 35
 36 - (YANGZShaking *)initWithPattern:(NSArray *)patterns{
 37     if ([super init]) {
 38         _patterns = [[NSMutableArray alloc] initWithArray:patterns copyItems:YES];
 39         _buff=nil;
 40         _isRepeat=NO;
 41     }
 42 return self;
 43 }
 44
 45
 46 - (YANGZShaking *)initWithFile:(NSString *)file{
 47     if ([super init]) {
 48         _patterns = [NSMutableArray arrayWithContentsOfFile:file];
 49         _buff=nil;
 50         _isRepeat=NO;
 51     }
 52 return self;
 53 }
 54 - (YANGZShaking *)initWithLoop:(NSUInteger)vibe pause:(NSUInteger)pause{
 55     if ([super init]) {
 56         YANGZVibePattern *vibePattern = [YANGZVibePattern PatternWithIntensity:0.3 time:vibe isVibe:YES];
 57         YANGZVibePattern *pausePattern = [YANGZVibePattern PatternWithIntensity:0.9 time:pause isVibe:NO];
 58
 59         _patterns = @[vibePattern,pausePattern];
 60         _buff=nil;
 61         _isRepeat=YES;
 62     }
 63 return self;
 64
 65
 66 }
 67 - (void)play{
 68     [NSThread detachNewThreadSelector:@selector(loop) toTarget:self withObject:nil];
 69 }
 70 - (void)stop{
 71
 72 }
 73
 74
 75 - (void)loop{
 76     NSUInteger i=0;
 77     while (YES) {
 78         NSUInteger pause = 0;
 79         YANGZVibePattern *pattern = _patterns;
 80         if (!pattern.isV) {
 81         }
 82         else{
 83             [self prepareBuffWithPattern:pattern];
 84             [self performSelectorOnMainThread:@selector(systemPlay) withObject:nil waitUntilDone:NO];
 85         }
 86         [NSThread sleepForTimeInterval:pattern.time*1.0f/1000];
 87         i++;
 88         if (i==[_patterns count] && !_isRepeat) {
 89             break;
 90         }
 91         i=i%[_patterns count];
 92     }
 93 }
 94 - (void)prepareBuffWithPattern:(YANGZVibePattern *)pattern{
 95     NSMutableDictionary* dict = [NSMutableDictionary dictionary];
 96     NSMutableArray* arr = [NSMutableArray array ];
 97
 98     [arr addObject:[NSNumber numberWithBool:YES]]; //vibrate for 2000ms
 99     [arr addObject:[NSNumber numberWithInt:pattern.time]];
100
101
102
103     [dict setObject:arr forKey:@"VibePattern"];
104     [dict setObject:[NSNumber numberWithFloat:pattern.intensity] forKey:@"Intensity"];
105     _buff = dict;
106 }
107 - (void)systemPlay{
108     NSLog(@"system play @%");
109
110     AudioServicesPlaySystemSoundWithVibration(4095,nil,_buff);
111 }
112 @end

[原创]控制iphone震动强度和时间的private api相关推荐

  1. 控制iphone震动强度和时间的private api

    主要调用AudioServicesPlaySystemSoundWithVibration这个private api,传入一个含有时间和强度的dictionary即可. 注意要引入AudioToolb ...

  2. android设置手机震动强度,android 控制震动强度

    转载文章请注明出处:http://blog.csdn.net/dangxw_/article/details/17957175 android 控制手机震动的类为Vibrator 他所提供的方法只有四 ...

  3. android 控制震动强度

    转载文章请注明出处:http://blog.csdn.net/dangxw_/article/details/17957175 android 控制手机震动的类为Vibrator 他所提供的方法只有四 ...

  4. android 代码设置 键盘适应_硬核软件,能在电脑上控制iPhone和Android手机

    在电脑上控制手机大概已经不是什么新鲜操作,小米.华为都为自家手机和电脑的联动推出了同屏操作之类的功能,此外也可以通过开源软件Scrcpy来在Windows或者macOS上实现对安卓手机的控制,这些基本 ...

  5. iphone控制电脑_这可能是首款能在电脑上控制iPhone的工具

    在电脑上控制手机大概已经不是什么新鲜操作,小米.华为都为自家手机和电脑的联动推出了同屏操作之类的功能,此外也可以通过开源软件Scrcpy来在Windows或者macOS上实现对安卓手机的控制,这些基本 ...

  6. android 触摸时震动,android触屏震动以及震动强度批改

    android触屏震动以及震动强度修改 PhoneWindowManager.java: 在interceptKeyBeforeQueueing函数中 performHapticFeedbackLw( ...

  7. Win软件 - 这可能是首款能在电脑上控制 iPhone 的工具

    在电脑上控制手机大概已经不是什么新鲜操作,小米.华为都为自家手机和电脑的联动推出了同屏操作之类的功能,此外也可以通过开源软件 Scrcpy 来在 Windows 或者 macOS 上实现对 Andro ...

  8. 练习:使用经验贝叶斯克里金插值(EBK)来插入地震震动强度的地图,在日本创建一个震动强度的面

    练习:使用经验贝叶斯克里金插值(EBK)来插入地震震动强度的地图,在日本创建一个震动强度的面. 作为ArcGIS地统计分析扩展的一部分,EBK是一种地统计插值方法,它使用概率技术来量化与插值相关的不确 ...

  9. pc控制iphone的软件_iPhone Share?这里有一款在 PC 端控制 iPhone 的工具

    *Zaaap! App 已开放公测,点击文末阅读原文体验 *公众号回复「众测」,Zaaap!好物免费体验 在电脑上控制手机大概已经不是什么新鲜操作,小米.华为都为自家手机和电脑的联动推出了同屏操作之类 ...

最新文章

  1. CNN交通场景解析--Spatial as Deep: Spatial CNN for Traffic Scene Understanding
  2. 分析Unicode和UTF-8
  3. 2440按键中断编程
  4. 数据库原理与应用(SQL Server)笔记 第八章 用户自定义数据类型与变量
  5. 克服浮躁_设计思维:您克服并赢得低迷的最终工具。
  6. Python 命令行传参
  7. OAuth2.0(基于django2.1.2实现版本)
  8. CheckBox复选框控件
  9. mysql 创建聚集索引_索引为什么会加快Mysql的查询速度?
  10. 自动化设置chrome禁止显示图片及恢复
  11. matlab现值与终值函数_Matlab金融工具箱中的主要功能函数
  12. php清理浏览器缓存文件在哪里,php如何清除浏览器缓存?
  13. 面试准备之java8的新特性
  14. 微信小程序code和其他内容的获取
  15. 国际域名缩写____各个国家
  16. PCIe系列专题之二:2.3 TLP结构解析
  17. Python 条件语句if的语法、注意事项、代码示例
  18. js中终止forEach循环的方法
  19. 部队应急通信指挥调度方案
  20. FPGA的调试-调试设计的指导原则

热门文章

  1. mac osx从10.13.6更新到10.14时提示“安装需要下载重要内容。该内容此时无法下载。请稍后再试。”
  2. csgo搭建显示段位的服务器,csgo怎么隐藏段位
  3. c# Infragistics第三方UltraGrid表格控件实现打印
  4. Java10新特性及代码示例
  5. 教育培训源码:在线教育app开发需要具备的四点特性
  6. springboot毕设项目餐饮管理系统qpa33(java+VUE+Mybatis+Maven+Mysql)
  7. [SDU软件工程实践]Blog4-processLine及processCmd
  8. python编程好学吗-少儿编程python学啥?好不好学、有用吗
  9. 【九度OJ】1008【加权无向图最短路径】
  10. python账号怎么注销_利用python批量登录QQ,防止账号被注销。