【Swift4】iOSの短い・長いバイブレーションを繰り返し鳴らす方法【Objective-C】
iOSでは強い、弱い、長い、短いなど色々なバイブレーションが用意されています。
今回はバイブレーションを鳴らす方法から、バイッブレーションの種類、さらに繰り返しバイブレーションを鳴らす方法をご紹介します。
- iosのバイブレーションを鳴らす
- バイブレーションの種類
- 繰り返しバイブレーションを鳴らす方
1. iOSのバイブレーションを鳴らす
Swift4
import AudioToolbox
AudioToolbox.frameworkをimportします。
func vibrate() {
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
}
バイブを鳴らすにはAudioServicesPlaySystemSoundを使用します。
Objective-C
#import <AudioToolbox/AudioServices.h>
AudioToolbox.frameworkをimportします。
- (void)vibrate {
AudioServicesPlaySystemSound(4095);
}
バイブを鳴らすにはAudioServicesPlaySystemSoundを使用します。
2. バイブレーションの種類
・AudioServicesPlaySystemSound( kSystemSoundID_Vibrate )
ブーーーという強い・長いバイブレーション
・AudioServicesPlaySystemSound( 1011 )
ブーッブーという強いバイブレーションが2回続く
・AudioServicesPlaySystemSound( 1102 )
プッブッという短いバイブレーションが2回続く
・AudioServicesPlaySystemSound( 1519 )
プッという弱い・短いバイブレーション
・AudioServicesPlaySystemSound( 1520 )
プッという短いバイブレーション、1519よりやや強め
・AudioServicesPlaySystemSound( 1521 )
プップップッという弱い・短いバイブレーションが3回続く
3. バイブレーションを繰り返し鳴らす方法
Swift4
import UIKit
import AudioToolbox
var vibrationCount = 5
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.startVibrateInterval()
}
func startVibrateInterval() {
// どのバイブレーションを鳴らすか
let systemSoundID = SystemSoundID(kSystemSoundID_Vibrate)
// 繰り返し用のコールバックをセット
AudioServicesAddSystemSoundCompletion(systemSoundID, nil, nil, { (systemSoundID, nil) -> Void in
vibrationCount = vibrationCount - 1
if ( vibrationCount > 0 ) {
// 繰り返し再生
AudioServicesPlaySystemSound(systemSoundID)
}
else {
// コールバックを解除
AudioServicesRemoveSystemSoundCompletion(systemSoundID)
}
}, nil)
// 初回のバイブレーションを鳴らす
AudioServicesPlaySystemSound(systemSoundID)
}
}
Objective-C
#import "ViewController.h"
#import <AudioToolbox/AudioServices.h>
int vibrationCount;
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self startVibrateInterval];
}
- (void)startVibrateInterval {
// バイブレーションを繰り返す回数
vibrationCount = 5;
// どのバイブレーションを鳴らすか
SystemSoundID systemSoundID = kSystemSoundID_Vibrate;
// 繰り返し用のコールバックをセット
AudioServicesAddSystemSoundCompletion(systemSoundID,
NULL,
NULL,
vibrateIntervaCallback,
NULL);
// 初回のバイブレーションを鳴らす
AudioServicesPlaySystemSound(systemSoundID);
}
// バイブレーションが鳴り終わったらコールバックされる関数
void vibrateIntervaCallback(SystemSoundID soundId, void *clientData) {
vibrationCount--;
if (vibrationCount > 0) {
// 繰り返し再生
AudioServicesPlaySystemSound(soundId);
}
else {
// コールバックを解除
AudioServicesRemoveSystemSoundCompletion(soundId);
}
}
@end