检测手机的震动需要导入
创新互联公司是一家专注于成都网站制作、成都网站设计、外贸营销网站建设与策划设计,召陵网站建设哪家好?创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:召陵等地区。召陵做网站价格咨询:028-86922220
然后实现下面方法即可
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"手机开始摇动");
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//让手机震动
}
}
1、打开摇一摇功能
[UIApplication sharedApplication].applicationSupportsShakeToEdit =YES;
2、让需要摇动的控制器成为第一响应者
[selfbecomeFirstResponder];
3、实现以下方法
// 开始摇动
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent*)event
// 取消摇动
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
// 摇动结束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
在模拟器中运行时,可以通过
[Hardware]-[Shake Gesture]
(或者command+shift+z)
来测试[摇一摇]功能
CMMotionManager *_motionManager = [[CMMotionManager alloc] init]; NSOperationQueue *_operationQueue = [[NSOperationQueue alloc] init]; BOOL _isShake; // 是否在摇动 BOOL _isOver = NO; // 是否摇动已经结束 NSInteger _beginTimestamp = 0; // 开始摇奖的时间戳 _motionManager.accelerometerUpdateInterval = 1; - (void)initShake { [_motionManager startAccelerometerUpdatesToQueue:_operationQueue withHandler:^(CMAccelerometerData *latestAcc, NSError *error) { dispatch_sync(dispatch_get_main_queue(), ^(void) { // 所有操作进行同步 @synchronized(_motionManager) { _isShake = [self isShake:_motionManager.accelerometerData]; if (_beginTimestamp == 0 _isShake == YES) { NSLog(@摇奖开始了); _beginTimestamp = [[NSDate date] timeIntervalSince1970];}if (_beginTimestamp != 0 _isShake == NO) { _isOver = YES;}// 此时为摇奖结束 if (_isOver) { // 停止检测摇动事件 [_motionManager stopAccelerometerUpdates]; // 取消队列中排队的其它请求 [_operationQueue cancelAllOperations]; NSInteger currentTimestamp = [[NSDate date] timeIntervalSince1970]; // 摇动的持续时间 NSInteger second = currentTimestamp - _beginTimestamp; NSLog(@摇一摇结束, 持续时间为:%d, second);}}});}];} - (BOOL)isShake:(CMAccelerometerData *)newestAccel { BOOL isShake = NO; // 三个方向任何一个方向的加速度大于1.5就认为是处于摇晃状态,当都小于1.5时认为摇奖结束。
最近做了一个摇一摇切换歌曲的demo,跟大家分享一下。
首先包含头文件MediaPlayer/MediaPlayer.h然后获取手机本地乐库音乐列表。如何获取iphone本地媒体库音乐列表如下:
播放音乐时调用self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:model.url] error:nil];//播放媒体库的音乐 [self.audioPlayer play];即可,如下图所示:
那么如何实现摇一摇切换下一曲功能呢?这就要用到-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent*)event这个方法。
只实现这一个还是不能实现摇一摇切换歌曲的功能,这是因为我们还需要让这个试图控制器成为第一响应者。-(BOOL)canBecomeFirstResponder{return YES;}。
摇一摇切歌