手机震动本人当时也是各种查资料的,这里提供实验成功的案例。注:是有参考来源的,不过下面内容全是自己从成功代码总结的.只是简单的震动。
一、iOS手机震动代码
1.头部加上这个框架
#import <AudioToolbox/AudioToolbox.h>
2.在按钮点击事件写上这句话就可以了。
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
二、android手机震动代码。
1.先创建一个class文件,文件名为:VibratorUtil,内容如下:
package org.cocos2dx.javascript;
import android.app.Activity;
import android.app.Service;
import android.os.Vibrator;
/**
* Created by david on 2017/7/20.
*/
public class VibratorUtil {
/**
* final Activity activity :调用该方法的Activity实例
* long milliseconds :震动的时长,单位是毫秒
* long[] pattern :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒
* boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次
*/
public static void Vibrate(final Activity activity, long milliseconds) {
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(milliseconds);
}
public static void Vibrate(final Activity activity, long[] pattern,boolean isRepeat) {
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(pattern, isRepeat ? 1 : -1);
}
}
2.调用:在你需要调用的按钮点击事件里写上如下内容就可以调用了:
//别忘记震动权限
Vibrator vibrator = (Vibrator)app.getSystemService(VIBRATOR_SERVICE);
long[] pattern = {50 ,400 }; //停止 开始 停止 开启
// 注意:{50 ,400 } 表示震动一下,{50 ,400 ,50 , 400}震动两次,以此类推,具体自己可以尝试 ,数值也可以自己改
vibrator.vibrate(pattern, -1); //不重复设置为1 -1
【拓展】
连续震动:
iOS代码:(用计时器来实现了,没使用网上提供的)
#import "ViewController.h"
#import <AudioToolbox/AudioToolbox.h>
@interface ViewController ()
{
SystemSoundID sound;
int m;
}
//振动计时器
@property (nonatomic,strong)NSTimer *_vibrationTimer;
@end
@implementation ViewController
@synthesize _vibrationTimer;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
m=0;
}
- (IBAction)ClickZhenDongAction:(id)sender {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
/**
初始化计时器 每一秒振动一次
@param playkSystemSound 振动方法
@return
*/
m=0;
_vibrationTimer = [NSTimer scheduledTimerWithTimeInterval:0.6 target:self selector:@selector(playkSystemSound) userInfo:nil repeats:YES];//这里0.6可以改,大多数用的是1,当然你可以自己按要求调
}
//振动
- (void)playkSystemSound{
if (_vibrationTimer.isValid) {
m++;
if(m==3){//想震几下这里可以改成几
[_vibrationTimer invalidate]; // 从运行循环中移除, 对运行循环的引用进行一次 release
_vibrationTimer=nil; // 将销毁定时器
return;
}
}
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
安卓代码看上面:
主要是这句话:
long[] pattern = {50 ,400,50 ,400 }; //停止 开始 停止 开启震动两下
当然也可以参考这个
ios 类方法里怎么使用全局变量:这么定义就好了!
static NSTimer *vibrationTimer;