前回の 【iOS】iPod Library Accessの使い方(5)音声入力を使ってiPodを操作する で作ったプレイヤーを少し改造しました。先日MDR-1RBTというBlueTooth対応のヘッドホンを買ったんですが、これは音楽の再生停止ができるしマイクもついているので、iPhoneを触らないで操作できるようにしました。
例えば外を歩いているときに、ヘッドフォンのところをポチポチと押して、「坂本真綾」としゃべると流れる音楽が坂本真綾になります。この寒い中、手袋外してポケットからiPhoneを取り出すなんてことをしなくて良くなりました。
音声認識の開始
再生状態から、停止→再生、という切り替えを0.8秒以内に行う。カチカチっと再生ボタンを2回押すことに該当します
音声認識の終了
4.75秒で切れるタイマーを発動をスタートさせ、自動で切れるようにする
終了も何かしらのアクションを与えてやらせたかったんですが、音量の変化やiPodステータスは音声認識中は飛んでこないので時限性にしました。
- (void)handle_PlaybackStateChanged { NSTimeInterval time = [[NSDate date] timeIntervalSinceDate:_startTime]; NSLog(@"%f", time); if (MPMusicPlaybackStatePlaying == [_player playbackState] && MPMusicPlaybackStatePaused == _lastState && time < 0.8f) { _isPushedArtistButton = YES; _isPushedSongButton = NO; [self startDictation]; } _startTime = [NSDate date]; _lastState = [_player playbackState]; } - (void)startDictation { [_dictationController performSelector:@selector(startDictation)]; _debugLabel.text = @"start dictation"; _timer = [NSTimer scheduledTimerWithTimeInterval:4.75 target:self selector:@selector(timerDidEnd) userInfo:nil repeats:NO]; } - (void)timerDidEnd { [self stopDictation]; }