1. 程式人生 > >iOS實現手機的連續震動和停止震動的程式碼(拷如工程就能用)

iOS實現手機的連續震動和停止震動的程式碼(拷如工程就能用)

最近在做一個類似手機來電一樣的讓手機無線震動的功能。蘋果官方給出的介面很簡單總結起來就兩步:

1.往專案中匯入AudiToolbox.framework框架

2.就一句程式碼:

AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);

可以實現震動,但是就那麼以下,我試了使用NStimer來實現不停的震動,可以實現,但是要暫停下來就麻煩了。

在網上搜了些資料,雖然說出了原理,但是具體的實現程式碼還是有點讓人看不懂。以下是我自己總結的寫出來的Demo程式碼,思路清晰簡單,而且拷入工程就能用,不羅嗦直接上程式碼:

//
//  ViewController.m
//  連續震動示例程式碼
//
//  Created by vincent on 10/9/15.
//  Copyright © 2015 Mipow. All rights reserved.
//

#import "ViewController.h"
//記得匯入這個框架
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()
{
    SystemSoundID sound;
    NSTimer *shakeTimer;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //建立震動開始按鈕
    UIButton *startBtn_c=[[UIButton alloc]initWithFrame:CGRectMake(180, 200, 100, 44)];
    startBtn_c.backgroundColor=[UIColor blueColor];
    [startBtn_c setTitle:@"開始-C" forState:UIControlStateNormal];
    [startBtn_c addTarget:self action:@selector(startButton_cClickedAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:startBtn_c];
    //建立震動暫停按鈕
    UIButton *stopBtn_c=[[UIButton alloc]initWithFrame:CGRectMake(40, 200, 100, 44)];
    stopBtn_c.backgroundColor=[UIColor redColor];
    [stopBtn_c setTitle:@"暫停-C" forState:UIControlStateNormal];
    [stopBtn_c addTarget:self action:@selector(stopButton_cClickedAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:stopBtn_c];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)stopButton_cClickedAction{
    NSLog(@"stop button action");
    //[audioPlayer stop];
    AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);
    [self stopAlertSoundWithSoundID:sound];
}

-(void)stopAlertSoundWithSoundID:(SystemSoundID)sound {
    AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate);
}

-(void)startButton_cClickedAction{
    NSLog(@"start button action");
    //如果你想震動的提示播放音樂的話就在下面填入你的音樂檔案
    NSString *path = [[NSBundle mainBundle] pathForResource:@"marbach" ofType:@"mp3"];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);
    AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate, NULL, NULL, soundCompleteCallback, NULL);
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    AudioServicesPlaySystemSound(sound);

}

void soundCompleteCallback(SystemSoundID sound,void * clientData) {
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);  //震動
    AudioServicesPlaySystemSound(sound);
}

extern OSStatus
AudioServicesAddSystemSoundCompletion(  SystemSoundID               inSystemSoundID,
                                      CFRunLoopRef                         inRunLoop,
                                      CFStringRef                          inRunLoopMode,
                                      AudioServicesSystemSoundCompletionProc  inCompletionRoutine,
                                      void*                                inClientData)
__OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0);


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

以上程式碼能實現收放自如,想震動的時候不停的震動,想暫停的時候能立即停下!

相關推薦

iOS實現手機連續震動停止震動程式碼(工程)

最近在做一個類似手機來電一樣的讓手機無線震動的功能。蘋果官方給出的介面很簡單總結起來就兩步: 1.往專案中匯入AudiToolbox.framework框架 2.就一句程式碼: AudioServicesPlaySystemSound (kSystemSoundID_V

react+webpack 打包,開發環境生產環境整合一體拿來

直接上程式碼: webpack.config.js import webpack from "webpack"; import path from "path"; var path = path.resolve(__dirname,"/main.j") var

.net實現手機推送介面推送

最近做專案用到手機實時推送和介面實時推送兩種功能,分別用了Fleck和極光推送。 Fleck: Fleck是 C# 實現的 WebSocket 伺服器。比WebSoket更容易配置,開發更為簡單。 官方地址:https://github.com/sta

華為手機連線androidStudio列印C程式碼log解決方法

相信有部分程式設計師碰到過華為手機開啟了開發者模式和打開了usb除錯模式後也連線不上androidStudio的問題 ,起初我也對這個簡單的問題折磨過一會,後來找到了原因其實很簡單 就是連上電腦後,開發者模式和usb除錯開啟後,下拉狀態列,在狀態列中有一個”正在

Android ListViewFragment結合使用,類似於某電商的實現,拿來,詳細標註適合新手

一個類似於某電商的實現,讓菜鳥們理解Activity與Fragment之間的引數是如何互動的。 包結構: 執行後的效果 分析: 左側ListView可上下拖動,點選不同的item會影響右側Fragment的內容。 廢話不多說,上程式碼(

Linux權限管理看了你

CQ user In zhong bit 學習 pass table Go 前言 只有光頭才能變強 回顧前面: 看完這篇Linux基本的操作就會了 沒想到上一篇能在知乎獲得千贊呀,Linux也快期末考試了,也有半個月沒有寫文章了。這篇主要將Linux下的用戶和權限知

delphi 中OutputDebugString 函式的妙(使用DebugView或者Pascal Analyzer軟體,在執行過程中監視捕捉日誌,而且通過網路監視)

  原文地址 https://www.peganza.com/delphi-and-outputdebugstring.html 曾經想要實時監控您的Delphi應用程式,並能夠檢視日誌訊息嗎?當然,您始終可以在RAD Studio IDE中以完全除錯模式執行。另一種方法是輸出日誌訊息

springboot2.0.6實現整合swagger2.9.2,良心版最新版,看了複製

1、pom依賴: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s

程式碼實現輸入i am a student ,輸出 student a am i,不類庫函式

1.輸入i am a student ,輸出student a am i,不能用類庫函式 public static void main(String[]args){ String s1 = "i am a student"; //獲取到擷取後的字串陣列 String[

安裝配有NVIDIA GRID K2伺服器系統不正常安裝其他的GPU卡K20x不正常安裝原廠驅動

問題描述:       安裝配有NVIDIA  GRID K2伺服器時不能被正常安裝;   問題原因:       xCAT 安裝配有GRID K2 節點時系統整合的第三方驅動不支援GRID K2 所以不能正常安裝;同時其他的GPU卡如K20X 系統可以正常安裝但是在原

手機簡訊刪除了怎麼恢復?幾個方法恢復

  手機簡訊刪除了怎麼恢復?前幾天有個小夥伴收到了一條來著面試的通知,這個面試對他很重要,但是可氣的是剛好在清理手機裡面的垃圾簡訊

IOS簡單的實現手機震動的提示

我們都知道手機有震動功能,其實呢,這個功能實現起來特別的簡單,我們只需要用到幾個函式就可以了: - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event - (void)motionEnde

H5移動端實現手機震動效果

判斷相容 瀏覽器對振動API的支援情況,一個好的習慣就是在使用之前要檢查一下當前你的應用環境、瀏覽器是否支援振動API。下面就是檢測的方法: setTimeout(()=>{ navigator.vibrate = navigator.vibrate || navigator.

iOS 系統震動系統提示聲

//提示音 //AudioServicesPlaySystemSound(1007); //這個是最猛的振動 //AudioServicesPlaySystemSound(kSystemSoundI

倒計時持續震動,結束時停止震動 iOS

加入 // //  ViewController.m //  進度顯示 // //  Created by beevle on 16/1/12. //  Copyright © 2016年 beevle. All rights reserved. // #impo

android中類似 QQ震動視窗的實現,帶聲音振動效果

效果就是如標題。好了,直接上程式碼 其實手機上看著的振動效果就是1個  animation 首先寫1個 Interpolator  -  定義一個動畫的變化率(the rate of change)這使得基本的動畫效果(alpha, scale, translate, ro

怎麼 Cocos2d- 3.x 實現 手機震動

在很多時候,我們都看到很多遊戲裡面有手機震動的這種效果,今天給大家分享一下怎麼用Cocos2d-3.x實現手機震動。 廢話不多說,直接進入主題,請看 1、首先你需要建一個Coco2dx的專案,確保當前專案能打包到Android手機上,並沒有錯誤 2、建立一個Vibrator

ObjectAnimator之PropertyValuesHolder與Keyframe----實現電話響鈴震動小球自由拋體效果

首先需要實現的倆種效果圖 1.實現電話響鈴震動效果 2.小球自由拋體效果 一、PropertyValuesHolder 1、概述 PropertyV

使用GridViewSimpleAdapter實現手機界面常見的九宮格

adapt height lns androi code 兩個 sha itme find 首先是兩個XML界面: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi

iOS開發的Quartz2D使用中實現圖片剪切截屏功能

ogr boa selector cgrect 如果 搭建 shu 分享 ins 原文 http://www.jb51.net/article/75671.htm 圖片剪切一、使用Quartz2D完成圖片剪切1.把圖片顯示在自定義的view中先把圖片繪制到v