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 ListView和Fragment結合使用,類似於某電商的實現,拿來就能用,詳細標註適合新手
一個類似於某電商的實現,讓菜鳥們理解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
使用GridView和SimpleAdapter實現手機界面常見的九宮格
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