2016-07-22 21 views
0

私は2つの方法を使用しているため、ユーザーがヘッドフォンキーを押したかどうかを検出しようとしています。ヘッドフォンのキーを押さえる方法は?

-(void)headsetMicrophoneDetection 
{ 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)]; 

    NSLog(@"calling headset method"); 
} 
-(void)onTooglePlayPause 
{ 
    NSLog(@"kishore"); 
} 
- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent 
{ 
    NSLog(@"callig method to :)"); 
    if (theEvent.type == UIEventTypeRemoteControl) { 
     switch(theEvent.subtype) { 
      case UIEventSubtypeRemoteControlTogglePlayPause: 
       NSLog(@"Hello"); 
       break; 
      case UIEventSubtypeRemoteControlPlay: 
       NSLog(@"Hello 2"); 
       break; 
      case UIEventSubtypeRemoteControlPause: 
       NSLog(@"Hello 3"); 
       break; 
      case UIEventSubtypeRemoteControlStop: 
       NSLog(@"Hello 4"); 
       break; 
      default: 
       return; 
     } 
    } 
} 

しかし、このメソッドを呼び出した後、私は取得、いただきました!間違って私のコード内をdid'tと私はNSObjectクラスでは、このすべてのメソッドを使用していた音声チェック&のためのバックグラウンドサービスを可能にしました。

+0

欠けていますか?メソッドがパラメータを予期しているため、MPRemoteCommandCenterのセレクタを定義するときに、セレクタにセレクタがありますか? – ldindu

+0

@ldinduいいえ私は –

答えて

0

以下のコードを確認してください。

- (BOOL)isHeadsetPluggedIn { 
    AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute]; 
    for (AVAudioSessionPortDescription* desc in [route outputs]) { 
     if ([[desc portType]  isEqualToString:AVAudioSessionPortHeadphones]) 
      return YES; 
    } 
    return NO;} 
+0

を見逃していませんでしたが、私はチェックしたいのは、ユーザーがボタンのボリュームのいずれかを押して、再生/ポーズありがとうのポスト:) –

関連する問題